/ RXCOPY FOR OS/8 V3D AND OS/78 V1A / / THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A / SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLUSION / OF THE ABOVE SOPYRIGHT NOTICE. THIS SOFTWARE, OR ANY THEREOF, / MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER / PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO / THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE SOFTWARE / SHALL AT ALL TIMES REMAIN IN DEC. / / THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT / NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL / EQUIPMENT CORPORATION. / / DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS / SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. / / / VERSION V4A M.H. MAY 20, 1977 / S.R. MAY 20, 1977 / VERSION V4B S.R. AUG 24, 1978 / / START ADDRESS 16000; JSW 7003 / / THIS PROGRAM PERFORMS COPY, READ, AND COMPARE OPERATIONS ON / RX FLOPPY DISKS ON A TRACK BY TRACK BASIS. / / THE COMMAND OPTIONS ARE: / /P PAUSE BEFORE AND AFTER ACCESSING DISK /M MATCH WITH NO IMPLIED COPY /N COPY WITH NO IMPLIED MATCH /R READ OUTPUT DEVICE WITH NO IMPLIED MATCH OR COPY /V PRINT VERSION NUMBER /C (NOT DOCUMENTED) COPY /S FORMAT (ONLY) OUTPUT DEVICE TO SINGLE DENSITY /D FORMAT (ONLY) OUTPUT DEVICE TO DOUBLE DENSITY / IF NO OPTIONS ARE EXPLICITLY DECLARED, COPY AND MATCH ARE ASSUMED. / / THERE ARE TWO COMMAND FORMATS: / / DEV: /FORCE BEYOND BUFFER / / ## MAIN LOOP ## / DO0, TAD COUNT4 /SET UP HEAD CONTROLLER DCA HEADER DO1, TAD COUNT5 /SET UP HALF-TRACK CONTROLLER DCA HFTRCK / / WAS COPY SELECTED? / DO2, TAD HEADER /PLACE HEADER INFO TO COMMAND WORD CMA CLL RTR RTR /0 IF FIRST, 1000 IF SECOND TAD (100 /ALSO NEED EIGHT-BIT BIT DCA LOOPFN /FUNCTION FOR THIS LOOP TAD OPTION /SHOULD WE COPY? AND (COPY SNA!CLA JMP DO3 /NO JMS RI /YES -- READ INPUT DEVICE INTO FIELD 0 JMS WO /WRITE OUTPUT DEVICE FROM FIELD 0 / / WAS READ SELECTED? / DO3, TAD OPTION /SHOULD WE READ? AND (READ SZA CLA /SKIP IF NOT NEEDED JMS RO / / WAS MATCH SELECTED? / DO4, AC4000 /ADD PUTS MATCH BIT TO LINK TAD OPTION AND (COPY /MATCH IN LINK, COPY IN AC SNL /SKIP IF A MATCH JMP DO6 /NO MATCH, READY FOR LOOP CONTROL SNA CLA /HAS A COPY ALREADY BEEN DONE; IF SO DON'T READ TWICE JMS RI /READ FROM INPUT DEVICE JMS RO /READ FROM OUTPUT DEVICE / / COMPARE BUFFERS / DO5, JMS COMP /CALL ACTION TO DO COMPARE / / LOOP CONTROLLERS / DO6, CLA /MAY HIT WITH JUNK IN AC ISZ HFTRCK /GO AGAIN FOR OTHER HALF TRACK? JMP DO2 /YES ISZ HEADER /NEED TO GO TO OTHER HEAD? JMP DO1 /OTHER HEAD, LOOP AGAIN ISZ TRACK /INCREMENT TRACK, CHECK DONE JMP DO0 /NO EXITOK, TAD OPTION /DOES HE NEED TO REMOUNT SYS? AND (PAUS SNA CLA /SKIP IF YES JMP GOEXIT /NO, BACK TO SYSTEM SYSON, JMS QUEST /ASK HIM MSG11 /ADDR OF MESSAGE JMS SYSON /"N" ANSWER, ASK AGAIN / /"Y" ANSWER, GO EXIT GOEXIT, JMS SELECT /FORCE BACK TO FIRST PAIR CDF CIF 0 /FIELDS FOR EXEC JMP I (7605 / / ## END OF MAIN LOOP ## / OPTION, 0 /OPTION BITS TOGETHER IN ONE WORD COUNT4, 0 /-1 IF ONE HEAD, -2 IF TWO COUNT5, 0 /-2 IF TRACK MUST BE DONE IN TWO PASSES / /OTHERWISE -1 HFTRCK, 0 /CONTROLS LOOP PASSES PER TRACK,FILL FROM COUNT5 HEADER, 0 /FILL FROM COUNT4, CONTROLS HEAD LOOPFN, 0 /EIGHT-BIT MODE + WHICH HEAD TO USE / / SUBROUTINE QUEST -- PRINT MSG AND ASK QUESTION / / JMS QUEST / ADDR OF MESSAGE / "N" RETURN / "Y" RETURN / QUEST, 0 Q1, TAD I QUEST /GET ADDR OF MESSAGE JMS TYPE /PRINT IT TAD (BUFF /SELECT INPUT BUFFER JMS RDANS /READ ANSWER TAD I (BUFF /WHAT WAS IT? AND (177 TAD (-116 /WAS IT A "N" SNA JMP Q3 /GO TO "N" EXIT TAD (-131+116 /WAS IT A "Y" SZA!CLA JMP Q1 /NO -- ASK AGAIN Q2, ISZ QUEST /"Y" RETURN AT JMS+3 Q3, ISZ QUEST /"N" RETURN AT JMS+2 JMP I QUEST / / SUBROUTINE CTRLC -- CHECK FOR CONTROL C / CTRLC, 0 KSF /SKIP IF A CHARACTER HAS BEEN TYPED JMP I CTRLC /NO KRS AND (177 TAD (-3 SNA!CLA JMP GOEXIT /IS A CONTROL C, EXIT JMP I CTRLC / / PAGE / / / SUBROUTINE RI -- READ FROM INPUT DEVICE / RI, 0 /READ FROM INPUT DEVICE TAD RISEC /SET UP OUR SECTOR DCA SECTOR TAD RIFN /AND OUR FUNCTION (UNIT, READ, ETC.) TAD LOOPFN /AND LOOP CONTROLLER FUNCTION / /DENSITY, HEAD, AND 8BIT MODE DCA FN TAD RIFLD /SET UP OUR FIELD JMS BUMPER /GO DO IT MSG8 /ERROR MESSAGE ADDRESS TAD SECTOR /GET OUR SECTOR BACK DCA RISEC JMP I RI /BACK TO MAIN LOOP / RISEC, -32 /START AT SECTOR 1 (OFFSET BY 33) RIFLD, CDF 0 /START AT FIELD 0 RIFN, 0 /4000 IF DOUBLE DENSITY DRIVE, 20 IF ODD # UNIT / /2 ALWAYS FOR READ, 1 IF SECOND PAIR ON VT78 / /400 IF DOUBLE DENSITY TRANSFER / / SUBROUTINE RO -- READ FROM OUTPUT DEVICE / RO, 0 /READ FROM OUTDEV TAD ROSEC /SET UP OUR SECTOR DCA SECTOR TAD ROFN /SET UP OUR FUNCTION TAD LOOPFN DCA FN TAD ROFLD /SET UP OUR FIELD JMS BUMPER /GO DO IT MSG9 TAD SECTOR /GET BACK OUR SECTOR DCA ROSEC JMP I RO /BACK TO MAIN / ROSEC, -32 /START AT SECTOR 1 ROFLD, CDF 0 /SET AT INIT TIME ROFN, 0 /SET AT INIT TIME, SAME FORMAT AS RIFN / / SUBROUTINE WO -- WRITE OUTPUT DEVICE / WO, 0 /WRITE TO OUTPUT DEVICE TAD WOSEC /SET UP OUR SECTOR DCA SECTOR TAD WOFN /SET UP OUR FUNCTION TAD LOOPFN DCA FN TAD WOFLD /SET UP OUR FIELD JMS BUMPER /GO DO IT MSG10 TAD SECTOR /GET BACK OUR SECTOR DCA WOSEC JMP I WO /BACK TO MAIN LINE / WOFLD, CDF 0 /FIELD TO START OUR WRITE WOSEC, -32 /OUR SECTOR, START AT 1 WOFN, 0 /SET FUNCTION AT INIT TIME / /SAME FORMAT AS ROFN, BUT NO READ BIT / / / SUBROUTINE COMP -- COMPARE BUFFERS / COMP, 0 TAD COMSEC /OUR SECTOR DCA SECTOR DCA FN /0 IS COMPARE FUNCTION TAD COMFLD /SET OUR FIELD JMS BUMPER /DO IT MSG7 TAD SECTOR /SAVE OUR SECTOR DCA COMSEC JMP I COMP / COMSEC, -32 /START AT 1 COMFLD, CDF 0 / / / / BUMPER / / ROUTINE TO HANDLER SECTORING, CORE POINTER, AND FIELDS / / CALLED BY RI, RO, WO, COMP; / STARTING FIELD IN AC, ERROR MSG ADDR IN CALL+1 / BUMPER IN TURN CALLS ACTION / BUMPER, 0 DCA BUMFLD /PLACE CDF SO SETS WHEN CALL ACTION JMS CTRLC /CHECK A CONTROL C TAD FN /NEED TO SELECT JMS SELECT /DO IF NECESSARY, AC.AND.7776 DCA FN /REPLACE FUNCTION, SELECT ONCE PER BUMPER CALL TAD COUNT7 /HOW MANY FIELDS TO INCREMENT THRU DCA BUMCNT B0, TAD (BSTART-1 /SET AUTO INCREMENT REG'S DCA X10 TAD X10 DCA X11 TAD BUMFLD /SET FIELD INTO ACTION DCA BFIELD BUMFLD, 0 /CDF PLACED HERE BY CALLER JMS ACTION /CALL ACTION ROUTIN JMS OOPS /ERROR, PRINTOUT SOMTHING TAD SECTOR /MOVE TO NEXT SECTOR TAD COUNT8 /ADD IN INTERLEAVE SPA /SKIP IF SPECIAL COMPUTING NEEDED JMP B2 /NO SPECIAL NEEDED, REPLACE SECTOR COUNT9, 0 /IAC OR SKP PLACED HERE !! AND (1 /FOR 2 INTERLEAVE, SWAP 0 AND 1 TAD (-32 /WRAP BACK TO MINUS B2, DCA SECTOR TAD X10 /CHECK IF DONE WITH BUFFER TAD (-BSTART-BSIZE+1 /DONE IF POINTING TO LAST LOC SZA CLA /SKIP IF DONE JMP BUMFLD /NO, DO NEXT SECTOR TAD (10 /INCREMENT FIELD TAD BUMFLD DCA BUMFLD ISZ BUMCNT /DONE WITH ALL FIELDS JMP B0 /NO, DO NEXT ONE ISZ BUMPER /SKIP OVER ERROR POINTER JMP I BUMPER / COUNT7, 0 /MINUS NUMBER OF FIELDS PER PASS COUNT8, 0 /INTERLEAVE 2 OR 3 SET AT INIT TIME BUMCNT, 0 /LOOP CONTROL FOR FIELDS, FILL FROM COUNT7 / / CONSTRUCT ERROR MESSAGE / OOPS, 0 TAD I BUMPER /GET ADDR OF MESSAGE JMS TYPE /PRINT TYPE OF FAILURE JMS ADPRNT /PRINT (HEAD), TRACK, SECTOR JMP I OOPS / PAGE / / SUBROUTINE TYPE -- PRINT MESSAGE / ON ENTRY AC HAS MESSAGE ADDRESS / TYPE, 0 DCA TYPAD /SAVE ADDR CIF 0 JMS I TTYENT 4100 TYPAD, 0 0 NOP JMP I TYPE / / SUBROUTINE RDANS -- READ ANSWER FROM TTY / ON ENTRY AC HAS BUFFER ADDR / RDANS, 0 DCA RDAD /SAVE ADDR CIF 0 JMS I TTYENT 0110 RDAD, 0 0 NOP JMP I RDANS / TTYENT, 0 /ENTRY POINT TO TTY HANDLER / / / SUBROUTINE APRNT -- PRINT TRACK AND SECTOR / ENTER WITH SECTOR IN AC / ADPRNT, 0 TAD LOOPFN /WHICH HEAD CLL RTL RAL /HEAD BIT TO AC11 CLA RAL /BUT CLEARING OUT OTHER BITS JMS SETIN /PUT TO MESSAGE MSG13A-1 TAD TRACK /TRACK KEPT IN COMPLEMENT FORM CMA JMS SETIN MSG13B-1 TAD SECTOR /SECTOR KEPT AS SECTOR-33 TAD (33 JMS SETIN MSG13C-1 TAD COUNT4 /IS QUAD OPERATION IAC /COUNT4 COMES -2 FOR QUAD, -1 NOT SNA CLA /SKIP IF YES TAD (10 /NO, DON'T TALK ABOUT HEADS TAD (MSG13 /ADDR FOR PRINTOUT JMS TYPE JMP I ADPRNT / / SUBROUTINE SETIN -- ENTER NUMBER INTO A MESSAGE / / ON ENTRY AC HAS NUMBER AND JMS+1 HAS POINTER TO MESSAGE / HOLE MINUS 1. (2 DECIMAL DIGIT NUMBERS ARE ASSUMED) / SETIN, 0 DCA SETIN1 /SAVE NUMBER DCA SETCNT /ZERO 10'S COUNTER TAD I SETIN /GET MSG ADDR DCA X17 /ENTER INTO AUTOINC POINTER ISZ SETIN /BUMP RETURN ADDR SETINB, TAD SETIN1 /GET NUMBER TAD (-12 /SUBTRACT 10 DECIMAL SMA /DONE DIVIDING? JMP SETINA /NO CLA /YES TAD SETCNT /GET 10'S SNA /SKIP IF A LEADING DIGIT TAD (-20 /MAKE LEADING 0 A LEADING BLANK TAD (260 /MAKE IT ASCII CDF 0 /ERROR MESSAGES IN FIELD 0! DCA I X17 /STORE IN MESSAGE TAD SETIN1 /GET REMAINDER TAD (260 /MAKE IT ASCII DCA I X17 /STORE IN MESSAGE CDF 10 /POINT CDF BACK HERE JMP I SETIN SETINA, DCA SETIN1 /SAVE RESULT ISZ SETCNT /INCREMENT 10'S COUNT JMP SETINB /CONTINUE / SETIN1, 0 /NUMBER STORAGE SETCNT, 0 /10'S COUNTER / / REFORMAT / / BELONGING HERE ONLY FOR REASONS OF FIT / / REFORM, TAD ROFN /OK, WHAT OUTPUT DENSITY DO WE HAVE SMA CLA /SKIP IF DRIVE IS CAPABLE OF A REFORMAT JMP ERR15 /GO PRINT ILLEGAL TYPE TAD ROFN /GET FUNCTION BACK JMS SELECT /ALSO MUST CHECK WHICH PAIR; AC=AC.AND.7776 TAD (4006 /TURN OFF TOP BIT, MAKE 2 READ INTO 10 REFORMAT SDN /CONTROLLER READY JMP .-1 LCD STR /WAIT FOR READY TO TAKE CODE JMP .-1 TAD (111 /SAFETY CODE XDR /PLACE TO DRIVE CLA SDN /WAIT FOR OVERALL DONE JMP .-1 /WIGGLE AC TO SHOW LIFE ?? AC7776 /SET AC TO STRIP WHICH PAIR BIT SER /SKIP IF AN ERROR DURING FORMAT CLL /CLEAR LINK TO SHOW NO ERROR AND ROFN /SET DONE FLAG TAD (4014 /BY A DUMMY READ ERROR STATUS, FLIPS LINK! LCD SNL /SKIP IF REFORMAT HAD NO ERROR JMP ERR19 /ERROR DURING REFORMAT, FATAL TAD OPTION /WAS IT A REFORMAT ONLY? AND (SINGLE+DOUBLE SNA CLA /SKIP IF YES JMP DO00 /NO, GO DO OTHER STUFF JMS QUEST /ASK IF ANOTHER FORMAT OPERATION WANTED MSG16 JMP EXITOK /"N" RETURN JMP REFORM /"Y" RETURN / PAGE / / / ACTION ROUTINE ENTRY POINT / / WATCH IT! WE CALLED WITH CDF POINTING TO BUFFER / ALSO CDF IS PLACED IN BFIELD, / SO WE CAN DO NO INDIRECTS EXCEPT THRU AUTO INCR TO BUFFER !! / / RETURN WITH SKIP IF OK, DIRECT RETURN WITH ERROR / / RESTORES DF TO 10 ON EITHER EXIT / / DO A SECTOR AT A TIME FOR A SINGLE FUNCTION / ACTION, 0 AC7775 /-3 ERROR RETRY COUNT DCA RETRY TAD FN /SORT FUNCTIONS SNA JMP COMPAR /GO DO COMPAR RTR /READ/WRITE BIT TO LINK SZL CLA /SKIP IF WRITE JMP READLP /GO TO READ / / WRITE LOOP / WRITLP, TAD FN /SET UP SILO OPERATION JMS LDCMD JMP WRIT1 /OTHER PAGE TO MOVE DATA TO SILO WRIT2, JMS DOIO /RETURN FROM OTHER PAGE TO ACCESS I/O JMP REFILL /COMMON EXIT / / READ LOOP / READLP, JMS DOIO /COME HERE TO RETRY I/O TAD FN JMS LDCMD TAD COUNT2 /RX01, 32 PASSES THRU 4 BYTES MOVED DCA RDCNT /RX02, 64 PASSES THRU ST5, STR JMP .-1 XDR DCA I X10 STR JMP .-1 XDR DCA I X10 STR JMP .-1 XDR DCA I X10 STR JMP .-1 XDR DCA I X10 ISZ RDCNT JMP ST5 REFILL, ISZ ACTION /OK EXIT, ALSO A LITERAL ACTEND, CDF 10 /DATA FIELD NORMAL AGAIN JMP I ACTION / / COMPAR / / COMPARE THE TWO BUFFERS / COMPAR, TAD REFILL /RESTORE ERROR FLAG TO 'OK' DCA ZOT TAD BFIELD /CREATE OTHER FIELD POINTER TAD COUNT6 DCA CFIELD TAD COUNT3 /SET UP LOOP CONTROL DCA COMCNT BFIELD, 0 /CDF PLACED HERE TAD I X10 /COMPARE CIA CFIELD, 0 /CDF PLACED HERE TAD I X11 SZA CLA /SKIP IF OK DCA ZOT /NOT OK, MAKE NON-SKIP RETURN!!!! ISZ COMCNT /THRU? JMP BFIELD /NO ZOT, 0 /ISZ ACTION PLACED HERE JMP ACTEND /RESTORE FIELD, GO BACK / / / DO I/O FUNCTION FOR READ OR WRITE / DOIO, 0 TAD FN /SILO FUNCTION, CONVERTED TO READ-WRITE TAD (4 /CONVERT SILO OPERATION TO I/O OPERATION JMS LDCMD TAD SECTOR /REQUESTED SECTOR TO HARDWARE TAD (33 /STORED AS -32 TO -1 STR JMP .-1 XDR CLA TAD TRACK CMA /COMPLEMENT TO PLUS NUMBER STR JMP .-1 XDR CLL CLA CMA RTL /AC=-3 TO KILL READ-WRITE BIT AND FN /I/O SKELETON WITHOUT READ-WRITE BIT TAD (16 /LOAD ERROR STATUS IS GOOD NO-OP JMS LDCMD JMP I DOIO / / LOAD COMMAND REGISTER / RDCNT=. LDCMD, 0 DCA CMDTMP /SAVE THE COMMAND TAD CMDTMP AND (376 /DOUBLE, KEEP ONLY 8 BITS, SINGLE NEVER HAD THEM SDN /SKIP ON DONE JMP .-1 LCD /PUT THE COMMAND TAD CMDTMP /CHECKING TOP BIT FOR DOUBLE DRIVE SMA JMP CDCK /SINGLE, JUST GO CHECK ERROR RTL RTL RAL AND (7 /TOP FOUR BITS NOW SENT STR JMP .-1 XDR CDCK, CLA SER /SKIP ON ERROR JMP I LDCMD ISZ RETRY /TRIED THREE TIMES YET JMP KEEPON /NO, KEEP ON TRYING TAD FN /DID WE ERROR OUT OF READ OR WRITE RTR /READ-WRITE BIT TO LINK SNL CLA /SKIP IF READ JMP ACTEND /WRITE IS ALL SET, GO TO ERROR RETURN TAD COUNT3 /READ MUST ADD APPROPRIATE AMOUNT TO X10 CIA /SO LOOP CONTROL IN BUMPER WORKS RIGHT! TAD X10 / DCA X10 JMP ACTEND /SET CDF BACK, AND ERROR EXIT / / ENTRY TO CONTINUE AFTER ERROR / / KEEPON, TAD FN /RETRYING READ OR WRITE RTR /R/W BIT TO LINK SZL CLA /SKIP ON WRITE JMP READLP /RETRY A READ JMP WRIT2 /SO GO RETRY WRITE / COUNT2, 0 /MINUS NUMBER OF READ PASSES PER SECTOR COUNT3, 0 /MINUS NUMBER OF BYTES (WORDS AS WELL) PER SECTOR COUNT6, 0 /DELTA FIELDS FOR COMPARE TRACK, 0 /TRACK NUMBER IN COMPLEMENT FORM FOR ISZ SECTOR, 0 /SECTOR TO DO, SET BY INTERLEAVE ROUTINE FN, 0 /FUNCTION BITS: ALWAYS 100 FOR 8BIT MODE / /+4000 FOR DOUBLE DRIVE, +1 FOR SECOND PAIR / /NOTE, THE 1 IS STRIPPED PRIOR TO CALL TO ACTION RETRY, 0 /RETRY COUNTER -3 TO 0 CMDTMP, COMCNT, 0 /TEMPORARY FOR COMPARE OR I/O / PAGE / / PART OF ACTION ROUTINE / / FILL SILO FOR WRITE / / SPREAD OUT TO SPEED UP / / / WRIT1, TAD COUNT1 /FOR RX01, 8 TIMES THRU 16 BYTE GIVES 128 DCA WRTCNT /FOR RX02, 16 TIMES THRU FOR 256 ST4, TAD I X10 /FETCH A BYTE STR /SKIP IF READY TO TRANSFER JMP .-1 /NO (SHOULDN'T HIT THIS ON VT78) XDR /MOVE BYTE TO SILO CLA /CLEAR THE MUMBLE AC TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA TAD I X10 STR JMP .-1 XDR CLA ISZ WRTCNT /THRU WITH SILO? JMP ST4 /NO JMP WRIT2 /REST OF LOOP ON OTHER PAGE / WRTCNT, 0 /CONTROL COUNT FOR FILL SILO LOOP COUNT1, 0 /FILLED AT INIT TIME, WRITE PASSES PER SECTOR! / / / SELECT SUBROUTINE / / CALL WITH AC11=0 TO SELECT FIRST PAIR, AC11=1 TO SELECT SECOND / / RETURN AC.AND.7776 / / IF SELECT REQUESTED IS SAME AS LAST SELECT, NO ACTION TAKEN / SELECT, 0 DCA WRTCNT /CONVENIENT TEMPORARY TO SAVE ARGUMENT TAD WRTCNT TAD LSTSEL /IS IT SAME AS LAST TIME RAR /TEST BIT TO LINK SNL CLA /SKIP IF DIFFERENT JMP NOSEL /NO SELECT NEEDED ISZ LSTSEL /CHANGE TO OTHER TYPE NOP /MAY INDEED SKIP CLA IAC AND LSTSEL /SELECT NEW TYPE 6750 /SELECT IOT SER /MUST CLEAR ERROR FLAG, MAY RANDOMLY SET NOP SDN /SAME FOR DONE NOP STR /AND TRANSFER NOP CLA TAD (16 /DUMMY READ ERROR STATUS TO SET DONE FLAG!! LCD NOSEL, AC7776 /RETURN ARGUMENT WITH LOW BIT CLEARED AND WRTCNT JMP I SELECT LSTSEL, 0 /START OFF ON FIRST PAIR / PAGE FIELD 0 *6420 / / PUT ERROR MESSAGES IN FIELD 0 RIGHT AFTER BUFFER / / / ERROR MESSAGES / VERBUF, "R; "X; "C; "O; "P; "Y; 240; "V; "4; "B; 240; 215; 212; 232 MSG2, "I; "L; "L; "E; "G; "A; "L; 240; "S; "P; "E; "C; "I; "F; "I "C; "A; "T; "I; "O; "N; 215; 212; 232 MSG3, "D; "E; "V; "I; "C; "E; 240; "I; "S; 240; "N; "O; "T; 240 "R; "X; 215; 212; 232 MSG5, "N; "O; 240; "I; "N; "P; "U; "T; 240; "D; "E; "V; "I; "C; "E; 215; 212; 232 MSG6, "N; "O; 240; "O; "U; "T; "P; "U; "T; 240 "D; "E; "V; "I; "C; "E; 215; 212; 232 MSG7, "C; "O; "M; "P; "A; "R; "E; 240 "E; "R; "R; "O; "R; 232 MSG8, "I; "N; "P; "U; "T; 240; "D; "E; "V; "I; "C; "E; 240 "R; "E; "A; "D; 240; "E; "R; "R; "O; "R; 232 MSG9, "O; "U; "T; "P; "U; "T; 240; "D; "E; "V; "I; "C; "E; 240 "R; "E; "A; "D; 240; "E; "R; "R; "O; "R; 232 MSG10, "O; "U; "T; "P; "U; "T; 240; "D; "E; "V; "I; "C; "E; 240 "W; "R; "I; "T; "E; 240; "E; "R; "R; "O; "R; 232 MSG11, "I; "S; 240; "M; "O; "N; "I; "T; "O; "R; 240 "R; "E; "M; "O; "U; "N; "T; "E; "D "?; 232 MSG12, "R; "E; "A; "D; "Y; "?; 232 MSG13, 240; "H; "E; "A; "D; MSG13A, 0 0 ", 240; "T; "R; "A; "C; "K; 240 MSG13B, 0 0 ", 240; "S; "E; "C; "T; "O; "R; 240 MSG13C, 0 0 215; 212; 232 MSG15, "I; "L; "L; "E; "G; "A; "L; 240; "F; "L; "O; "P; "P; "Y; 240; "T; "Y; "P; "E; 215; 212; 232 MSG16, "F; "O; "R; "M; "A; "T; 240; "A; "N; "O; "T; "H; "E; "R; 240; "F; "L; "O; "P; "P; "Y; "?; 232 MSG17, "I; "L; "L; "E; "G; "A; "L; 240; "S; "W; "I; "T; "C; "H; "(; "E; "S; "); 215; 212; 232 MSG18, "F; "L; "O; "P; "P; "Y; 240; "N; "O; "T; 240; "R; "E; "A; "D; "Y; 215; 212; 232 MSG19, "E; "R; "R; "O; "R; 240; "D; "U; "R; "I; "N; "G; 240; "F; "O; "R; "M; "A; "T; 215; 212; 232 $