File: RESTOR.PA of Tape: Sources/Other/new-16
(Source file text)
/ :::RESTOR::: V 3.3 /4/13/78 - VEC /RESTORES 1-6 RK05'S FROM A TM8E/TU10 MAGTAPE / /PROGRAM EQUATES AUTO10= 10 /AUTOINDEX REGISTER AUTO11= 11 STIBUF= 3000 /STARTING ADDRESS OF INPUT, OUTPUT BUFFERS /TM8E COMMANDS CLT= 6712 /CLEAR TRANSPORT, REGISTERS CLMF= 6725 /CLEAR REGISTERS IF NOT BUSY SKTD= 6724 /SKIP ON TAPE READY SKEF= 6721 /SKIP ON ERROR FLAG SKJD= 6723 /SKIP ON JOB DONE LMCR= 6705 /LOAD MAGTAPE COMMAND REG RMCR= 6715 /READ MAGTAPE COMMAND REG RMSR= 6714 /READ MAIN STATUS REG LCAR= 6703 /LOAD CURRENT ADDRESS REGISTER RCAR= 6713 /READ CURRENT ADDRESS REG LWCR= 6701 /LOAD WORD COUNT REG RWCR= 6711 /READ WORD COUNT REG LFGR= 6706 /LOAD FUNCTION REGISTER, GO BIT RFSR= 6716 /READ SECOND STATUS REG /RK8E COMMANDS DSKP= 6741 /SKIP ON ERROR OR DISK DONE DCLR= 6742 /CLEAR ALL; ALSO RECALIBRATE DLAG= 6743 /LOAD DISK ADDRESS, EXECUTE DLCA= 6744 /LOAD CURRENT ADDRESS REG DRST= 6745 /READ STATUS REGISTER DLDC= 6746 /LOAD COMMAND REGISTER / /PAGE ZERO LOCATIONS *20 OKWRTE, 0 /WRITE 2K IF ZERO BUFSTR, STIBUF /START OF OUTPUT BUFFERS MTAX, 0 /MAGTAPE TRANSPORT NUMBER COMND1, 0402 REWFCN, 1100 /RWIND MTAX EOFUN, 5100 /WRITE AN EOF ON MTAX BKSFUN, 7100 /SPACE REVERSE WC RECORDS RDFUN, 2100 /READ A BLOCK OF DATA SKPFUN, 6100 /SPACE FORWARD WC RECORDS OBUFLD, 00 /OUTPUT BUFFER FIELD (SWITCHED) IBUFLD, 10 /INPUT BUFFER FIELD (SWITCHED) DRIVE, 0 /RK8E OUTPUT DRIVE NUMBER TMDRIV, 0 /TEMP DRIVE NUMBER BUFLG, 0 /BUFFER SWITCH FLAG CTR, -1424 /COUNT OF 2K SEGMENTS ON DISK FILCTR, 7777 /NUMBER OF FILES TO PROCESS FCTR, 7777 /PROCESS COUNTER FILNUM, "1 /ASCII DISPLAY COUNTER FILE1, 0 /SEQUENTIAL LIST OF INPUT DRIVE NUMBERS FILE2, 0 FILE3, 0 FILE4, 0 FILE5, 0 FILE6, 0 CTRLG, 207 EJECT /SUBROUTINE CALL PSEUDO-OPS ABORT= JMS I .;CANCEL /CANCEL PGM (ERROR HLT) BACKSP= JMS I .;XBKSPC /BACKSPACE ONE RECORD BUFSW= JMS I .;XBUFSW /SWAP PACK, OUTPUT BUFFER FIELDS BUF1= JMS I .;XBUF1 /INITIALIZE PACK BUFF 1 CRLF= JMS I .;XCRLF /PRINT CR, LF CRWAIT= JMS I .;XCRWAI /PRINT, PAUSE FOR CR FWDSKP= JMS I .;XFWSKP /SKIP FORWARD ONE FILE GTWAIT= JMS I .;MTWAIT /GO TO BACKGROUND (JMP .-1) KBDCHK= JMS I .;XKBDCH /TEST KBD (MAY RETURN CHAR) MTEXEC= JMS I .;XMTEXC /EXECUTE A TM8E FUNCTION MTONLN= JMS I .;XMTOLN /TEST MTAX ONLINE, BOT, WE MTREAD= JMS I .;XMTRDR /READ 2K FROM MTAX OCTIN= JMS I .;XOCTIN /RETURN KBD ENTRY 0-7 OR -1 FOR CR OS8MON= JMP I .;7605 /RETURN TO MONITOR PRINT= JMS I .;XPRINT /PRINT 6BIT ASCII STRING RKWRTR= JMS I .;XRKWTR /WRITE 2K TO DRIVE REWMTA= JMS I .;XREW1 /GIVE REWIND COMMAND AND RETURN STRTRK= JMS I .;XSTRTR /INITIALIZE DRIVE TYPE= JMS I .;XTYPE /PRINT CHARACTER FROM AC RDMTAX= JMS I .;XRDFIL /RESTORE 1 RK05 FROM MTAX / /CORE LAYOUT: /PAGE 1--MAIN CONTROL SEQUENCE, WTMTAX /PAGE 2--RKO5 ROUTINES: STRTRK,READRK /PAGE 3--TM8E ROUTINES: MTONLN,WTEOF,REWMTA,MTWRTE /PAGE 4--BACKGROUND ROUTINES: / GTWAIT,FWDSKP,ABORT,BUF1,BUFSW,WAIT /PAGE 5--CONSOLE ROUTINES: PRINT,TYPE,CRLF,KBDCHK,OCTIN /TEXT FILES /MAIN PROGRAM SEQUENCING / *200 START, CLA CLL PRINT HEADER /RESTOR V 3.3 CLA CLL CMA /INHIBIT CR, LF PRINT NUMTX /NUMBER OF FILES TO PROCESS OCTIN SPA OS8MON /FAST EXIT IF NONE SNA /IF ZERO, MAKE IT 8 TAD (10 CIA /NEGATE FOR COUNTER DCA FILCTR ISZ DRIVE /PREVENT PROMPT ON 1ST DRIVE CRLF CLA CLL CMA /-1 INHIBITS TERMINAL CRLF PRINT MTRANS /MAGTAPE TRANSPORT? (0-7) OCTIN SPA OS8MON /FAST EXIT IF NO TRANSPORT CLL;RTR;RTR /SHIFT TO HIGH ORDER DCA MTAX CRLF PRINT DRIVTX /ENTER DRIVES FOR FILES 1-6: /ACCEPT 1-6 DRIVE NUMBERS (ANY ORDER) FOR OUTPUT FILES TAD (FILE1-1 /STORAGE ADDRESS DCA AUTO10 TAD FILCTR DCA FCTR /LOOP COUNTER TAD ("1 DCA FILNUM FILOOP, JMS FILOUT /GET NEXT DRIVE NUMBER DCA I AUTO10 ISZ FCTR JMP FILOOP /WE HAVE NOW IDENTIFIED THE INPUT AND OUTPUT DEVICES /REWIND MTAX, MAKES SURE THAT TRANSPORT IS ONLINE CRWAIT /PRINT MESSAGE, RING BELL, PAUSE TCONT MTONLN TAD FILCTR /FILES COUNT DCA FCTR TAD (FILE1-1 /RESET ADDRESS POINTER DCA AUTO10 /TO LIST OF DRIVES TAD ("1 /FOR PRINT "DONE" DCA FILNUM FLOOP2, TAD I AUTO10 /GET NEXT DRIVE NUMBER SPA /IF NEGATIVE, WE'RE DONE JMP FILSKP /SKIP NON-RESTORED FILE /NOW DUMP THE FILE DCA TMDRIV TAD DRIVE /COMPARE NEW WITH OLD CIA TAD TMDRIVE /IS IT SAME ONE? SZA CLA JMP LOOPGO /NO--JUST CONTINUE CRWAIT WAITX /RELOAD DRIVE AND CR LOOPGO, TAD TMDRIV RDMTAX /SEEMS SIMPLE ENOUGH CLA CLL CMA PRINT FILDON /FINISHED FILE X TAD FILNUM TYPE CRLF FILISZ, ISZ FILNUM ISZ FCTR JMP FLOOP2 /AND REPEAT /FALL THROUGH TO NORMAL EXIT DEXIT, REWMTA /REWIND MTAX, BUT DON'T WAIT PRINT TERMIN /NORMAL TERMINATION. OS8MON FILOUT, 0 /READ DRIVE NUMBER CLA CLL CMA /INHIBIT CRLF PRINT FILTX /FILE- TAD FILNUM /ASCII NUMBER TYPE ISZ FILNUM OCTIN /GET NUMBER CLL RAL JMP I FILOUT FILSKP, CLA CLL CMA PRINT FSKPTX /SKIPPING FILE X TAD FILNUM TYPE CRLF FWDSKP /SKIP A FILE JMP FILISZ /AND CONTINUE /READ ONE DISK FILE FROM MTAX XRDFIL, 0 STRTRK /INITIALIZE DRIVE (WAS IN AC) BUF1 /SET FOR PACKING BUF1 CLA CLL IAC DCA OKWRTE /PREVENT WRITING EMPTY BUFFER MTREAD /F0 BUFFER HAS FIRST 2K AND F1 BUFFER IS EMPTY MORE, BUFSW /SWAP THE BUFFERS MTREAD /READ 2K (WRITE 2K IN BACKGR) TAD CTR /GET FOR MQ DISPLAY MQL ISZ CTR /DONE WITH READING? JMP MORE /NO- WRITE AND READ 2K MORE BUFSW /LAST BUFFER SWAP RKWRTR /WRITE OUT LAST 2K JMP I XRDFIL /AND EXIT PAGE /RK8E-RKO5 ROUTINES / /INITIALIZE SELECTED DRIVE /ENTERED WITH DRIVE NUMBER IN AC XSTRTR, 0 DCA DRIVE XSTRT1, DCLR /CLEAR REGISTERS TAD DRIVE DLDC /SELECT THIS DRIVE DRST /AND SEE IF IT'S AVAILABLE AND (200 /BY CHECKING FILE-NOT-READY SZA CLA JMP NODRIV /NOT AVAILABLE--QUERY USER DCA SECTOR DCA HIGH /INITIALIZE TO ADDRESS 00000 TAD (-1453 /NUMBER OF 2K SEGMENTS DCA CTR JMS DRECAL /FORCE HEADS TO START JMP I XSTRTR /AND INITIALIZATION COMPLETE NODRIV, CRWAIT NODRTX /PRESS CR TO CONTINUE JMP XSTRT1 /TRY AGAIN EJECT /WRITE 2K WORDS (8 SECTORS) TO DISK XRKWTR, 0 ISZ OKWRTE /PREVENT REPEAT CALLS XWTRK1, TAD (-10 /SECTOR COUNT DCA BLOCKS TAD INBUF /ONLY ONE INPUT BUFFER DLCA /LOAD MEMORY ADDRESS DCA DATALL /SET DATA/ALL SWITCH TO DATA XWTRK2, TAD RKCOM /WRITE COMMAND, NO-INT,F0 TAD DRIVE /TO SELECTED DRIVE TAD OBUFLD /SELECT OUTPUT FIELD TAD HIGH /PART OF DISK ADDRESS TAD DATALL /SELECT 'WRITE DATA' OR 'ALL' DLDC /LOAD COMMAND REG TAD SECTOR /REMAINDER OF DISK ADDRESS DLAG /EXECUTE DSKP /WAIT HERE TILL DONE JMP .-1 DRST /AND TEST FOR ERRORS CLL RAL /GET RID OF DONE BIT SZA CLA JMP DKERR /FLAG SET, SO ERROR RETRY /READ WAS SUCCESSFUL - TRY FOR 8 IN A ROW TAD (1000 /SWITCH TO 'READ ALL' DCA DATALL ISZ SECTOR SKP ISZ HIGH ISZ BLOCKS /DONE ALL 8? JMP XWTRK2 /NO--REPEAT LOOP /8 SECTORS (2K) WRITTEN FROM OUTBUF CLA CLL CMA RTL /AC = -3 FOR ERROR COUNT DCA ERRCT1 CMA CLL RAL /ALSO RESET RECLA COUNTER DCA ERRCT2 JMP I XRKWTR /DISK ERROR--TRY REWRITE, THEN RECALIBRATE DKERR, ISZ ERRCT1 /TRIED BEFORE? JMP RESET1 /NO, PROCEED ISZ ERRCT2 /ALREADY RECALIBRATED? JMP RECAL1 /NO, TRY IT ONCE PRINT DSKBAD /FATAL DISK ERROR ABORT RECAL1, CLL CMA RAL /ALLOW 1 RETRY AFTER RECAL DCA ERRCT1 JMS DRECAL RESET1, TAD SECTOR AND (7770 /RESET FOR 8 BLOCKS DCA SECTOR JMP XWTRK1 /TRY ALL OVER SECTOR, 0 HIGH, 0 DATALL, 0 BLOCKS, -10 RKCOM, 4000 /RECALIBRATE DRIVE (SEND HEADS TO 00000) DRECAL, 0 CLA CLL DCLR CLA CLL STL RTL /SET RECAL BIT DCLR DSKP JMP .-1 TAD (0200 /ENABLE DONE BIT TAD DRIVE DLDC /LOAD THIS COMMAND DSKP /NOW WAIT FOR COMPLETION JMP .-1 JMP I DRECAL INBUF, STIBUF /START OF INPUT BUFFER ERRCT1, -3 /REREAD TRY COUNTER ERRCT2, -2 /RECAL TRY COUNTER PAGE /TM8E-TU10 ROUTINES / /VERIFY THAT MTAX IS ONLINE, AT BOT XMTOLN, 0 XMTOL1, CLT /CLEAR EVERYTHING TAD REWFCN /START BY ATTEMPTING REWIND MTEXEC /(WILL FAIL IF AT BOT) JMP ERRCHK SKTD /WAS OK, WAIT FOR DONE JMP .-1 JMP I XMTOLN /ALL SET--EXIT ERRCHK, AND (0400 /TEST FOR UNSELECTED TRANSPORT SZA CLA JMP SLERR /COMPLAIN ABOUT IT RMSR /TEST FOR BOT (FUNCTION ERROR) AND (1000 SZA CLA JMP I XMTOLN PRINT TRANSX /ANYTHING ELSE IS FATAL ABORT SLERR, CRWAIT SLERTX JMP XMTOL1 /TRY IT AGAIN EJECT /EXECUTE A MAGTAPE COMMAND (FUNCTION IN AC) XMTEXC, 0 DCA MTFUN /SAVE FUNCTION TAD COMND1 TAD MTAX LMCR /SET SUP STANDARD COMMAND TAD MTFUN LFGR /EXECUTE IT XMTEX1, SKEF JMP XMTEX2 /NO ERRORS YET XMTERR, RMSR JMP I XMTEXC /RETURN WITH ERROR XMTEX2, CLA CLL KBDCHK SKJD /FINISHED? JMP XMTEX1 SKEF /DONE--TEST ERROR SKP JMP XMTERR ISZ XMTEXC /SKIP PAST ERROR RETURN JMP I XMTEXC MTFUN, 0 /COMND1, 0402 / /REWIND THE TAPE XREW1, 0 CLMF TAD REWFCN /REWIND AND GO MTEXEC SKP JMP I XREW1 /GOOD RETURN PRINT TRANSX ABORT /REWFCN, 1100 / /BACKSPACE ONE RECORD (FOR RETRY) XBKSPC, 0 CLA CLL CMA LWCR /SET TO -1 TAD BKSFUN MTEXEC SKP JMP I XBKSPC PRINT BKSPTX ABORT /BKSFUN, 7100 EJECT /MAGTAPE READER ROUTINE; READS 2K, CALLS DISK WRITER /VIA BACKGROUND TASK (INSTEAD OF SKIP/JMP .-1) / XMTRDR, 0 XMTRD1, CLMF CLA CLL CMA TAD BUFSTR /STARTING ADDRESS OF OUTPUT LCAR TAD WDCNT /NUMBER OF WORDS/RECORD LWCR TAD MTCOM /ODD, NO-INT, 800BPI, COREDUMP TAD MTAX /TRANSPORT NUMBER TAD IBUFLD /INPUT BUFFER FIELD LMCR TAD RDFUN /READ FUNCTION LFGR /EXECUTE GTWAIT /AND WAIT FOR COMPLETION JMP XMTERW /ERROR RETURN CLA CLL CMA RTL DCA MTERCT JMP I XMTRDR /NORMAL RETURN MTCOM, 0402 /RDFUN, 6100 WDCNT, 4000 / XMTERW, ISZ MTERCT JMP MTRTRY PRINT MTERTX ABORT MTRTRY, CLA CLL CLMF BACKSP /BACKUP UNE RECORD JMP XMTRD1 MTERCT, -3 PAGE EJECT /REPLACES JMP .-1 CONSTRUCTION IN MTWRITER MTWAIT, 0 KBDCHK SKEF /TEST FOR IMMED. ERROR SKP JMP MTWERR /NOT INSTANT ERROR, SO WRITE 2K TAD OKWRTE /IF ZERO, FIRST CALL SNA CLA RKWRTR MTWT2, KBDCHK SKEF SKP JMP MTWERR SKJD JMP MTWT2 /HANG IN THERE SKEF /ERROR SET AFTER MTBF? JMP MTGOOD /NO--WE'RE ALL SET MTWERR, RMSR JMP I MTWAIT MTGOOD, ISZ MTWAIT JMP I MTWAIT / /SKIP OVER A FILE XFWSKP, 0 CLMF TAD (-1454 LWCR TAD SKPFUN /FORWARD SKIP AND GO MTEXEC SKP JMP I XFWSKP PRINT SKERTX /ERROR ON FWD SKIP. ABORT /FATAL ERROR--READ AND STORE ERROR CALL, REGISTERS CANCEL, 0 PRINT HALTX /FATAL ERROR HALT OS8MON TAD (DATLOC-1 DCA AUTO10 TAD CANCEL /CALLING ADDRESS DCA I AUTO10 RMSR DCA I AUTO10 RMCR DCA I AUTO10 RFSR DCA I AUTO10 RCAR DCA I AUTO10 RWCR DCA I AUTO10 DRST DCA I AUTO10 HLT DATLOC, ZBLOCK 10 /BACKGROUND ROUTINES / /BUF1 INITIALIZES BUFFERS FOR FIRST ACCESS XBUF1, 0 CLA CLL DCA IBUFLD /INPUT BUFFER F0 TAD (10 DCA OBUFLD /WRITE BUFFER F1 DCA BUFLG /SWAPSWITCH DCA OKWRTE /CLEAR READ FLAG JMP I XBUF1 / /BUFSW SWAPS THE INPUT, OUTPUT BUFFERS, CLEARS TO READ XBUFSW, 0 DCA OKWRTE ISZ BUFLG /TEST SWAPSWITCH JMP XBFS1 /STATUS WAS INBUF=10,OUTBUF=00 TAD (10 DCA OBUFLD DCA IBUFLD JMP I XBUFSW /STATUS WAS INBUF=00, OUTBUF=10 XBFS1, TAD (10 DCA IBUFLD DCA OBUFLD CLA CLL CMA /RESET SWAPSWITCH DCA BUFLG JMP I XBUFSW / /CRWAIT--PRINT MESSAGE, RING BELL, PAUSE FOR CR, RETURN AC=0 XCRWAI, 0 TAD I XCRWAI /GET TEXT ADDRESS DCA TXTPNT ISZ XCRWAI CLA CLL CMA /INHIBIT CRLF PRINT TXTPNT, HALTX /DUMMY TEXT TAD CTRLG TYPE /RING BELL CLA CLL CMA KBDCHK /PAUSE FOR RESPONSE CLA CLL JMP I XCRWAI /AND RETURN PAGE /CONSOLE I/O ROUTINES /PRINTER FOR 6BIT ASCII STRINGS-- IF AC IS -1 ON ENTRY, /INHIBITS TERMINAL CRLF. STRING ADDRESS IS AT CALL+1 /RETURNS TO CALL+2 / XPRINT, 0 DCA CRSWTC /SET CRLF INHIBIT CLA CLL CMA /NEED ADDRESS-1 TAD I XPRINT /GET STRING ADDRESS DCA AUTO11 ISZ XPRINT XPRNXT, TAD I AUTO11 SNA /LIST TERMINATED WITH 0 JMP XPRXIT /SO (CRLF AND) EXIT MQL MQA BSW /GET FIRST BYTE JMS X8BIT /CONVERT 6BIT TO ASCII MQA JMS X8BIT /AND SAME WITH SECOND BYTE JMP XPRNXT /AND TRY TO REPEAT CYCLE XPRXIT, ISZ CRSWTC /TEST FOR CRLF INHIBIT JMS XCRLF /NO--DO IT JMP I XPRINT / X8BIT, 0 AND (77 /CLEAR TO SINGLE BYTE SNA /TEST FOR NULL JMP I X8BIT /DON'T PRINT @-SIGN TAD (40 AND (77 TAD (240 /MAKE INTO ASCII JMS XTYPE /AND PRINT IT JMP I X8BIT / XTYPE, 0 SNA /DON'T PRINT NULL JMP I XTYPE TLS TSF JMP .-1 /WAIT FOR DONE CLA CLL JMP I XTYPE / XCRLF, 0 CLA CLL TAD KCR JMS XTYPE TAD KLF JMS XTYPE JMP I XCRLF KCR, 215 KLF, 212 CRSWTC, 0 EJECT /KBDCHK--LOOK AT KBD, TEST FOR CTRL/C, GET CHAR IF /ANY. IF AC =-1 ON ENTRY, WAIT FOR A CHARACTER. / XKBDCH, 0 DCA KBDFLG TAD KBDFLG SNA CLA JMP LISTEN /NO WAIT, JUST TEST BUFFER KRB /CLEAR OPTIONAL CR CLA CLL TAD ("> /GET SIGNATURE JMS XTYPE LISTEN, KSF /ANYTHING TYPED? JMP WTTEST /NO--MUST WE WAIT? KRB /READ CHAR, CLEAR FLAG MQL MQA TAD MCTRLC /DO WE GIVE UP? SNA JMP OS8BAK /YES--CRLF AND EXIT TO MON TAD MCR /WAS IT CR? SNA JMP CREXIT /YES, ECHO A CRLF TAD MCTRLP /WAS IT A CTRL/P? SNA CLA JMP I (START /YES--RESTART MQA JMS XTYPE /JUST ECHO THE CHAR RTCHAR, MQA ISZ KBDFLG /DO WE RETURN A CHARACTER? CLA CLL /NO--CLEAR IT JMP I XKBDCH /AND RETURN WTTEST, CLA CLL TAD KBDFLG /ARE WE WAITING? SNA CLA JMP I XKBDCH /NO--JUST RETURN JMP LISTEN /YES--LISTEN SOME MORE CREXIT, JMS XCRLF /ECHO A CR,LF TAD (240 /RETURN A SPACE MQL JMP RTCHAR OS8BAK, JMS XCRLF OS8MON MCTRLC, -203 MCR, -12 MCTRLP, -3 KBDFLG, 0 EJECT /OCTIN--GET AN OCTAL DIGIT, RETURN -1 IF WAS SPACE XOCTIN, 0 XOCT1, CLA CLL CMA /TELL KBDCHK TO WAIT KBDCHK MQL MQA TAD (-240 /TEST FOR SPACE SNA CLA JMP SPCRTN /YES--RETUN -1 MQA TAD (-260 /SUBTRACT ASCII MQL MQA SPA /IF MINUS, WASN'T A DIGIT JMP BDCHAR /SO TRY AGAIN AND (7770 /GOTTA BE OCTAL SZA JMP BDCHAR JMS XCRLF /WASN'T CR, SO FAKE IT MQA JMP I XOCTIN /RETURN OCTAL DIGIT SPCRTN, CLA CMA CLL JMP I XOCTIN BDCHAR, CRLF CLA CLL CMA PRINT NOTOCT /MUST BE CR OR 0-7 JMP XOCT1 PAGE /TEXT SEGMENTS HEADER, TEXT /RESTOR V 3.3/ 0 NUMTX, TEXT /NUMBER OF FILES TO PROCESS/ 0 MTRANS, TEXT /MAGTAPE TRANSPORT (0-7)/ 0 DRIVTX, TEXT /ENTER DRIVE NUMBERS OR CR TO SKIP:/ 0 TERMIN, TEXT /NORMAL TERMINATION./ 0 TCONT, TEXT /MASH ANY KEY TO PROCEED/ 0 FILTX, TEXT /FILE / 0 HALTX, TEXT /FATAL ERROR ON TRANSFER./ 0 NODRTX, TEXT /REQUESTED DRIVE NOT AVAILABLE. LOAD IT NOW/ 0 DSKBAD, TEXT /FATAL ERROR ON RK05./ 0 SLERTX, TEXT /PLEASE PUT TRANSPORT ON LINE/ 0 TRANSX, TEXT /FATAL ERROR ON MAGTAPE./ 0 MTERTX, TEXT /FATAL ERROR READING TAPE./ 0 NOTOCT, TEXT /PLEASE ENTER 0-7 OR CR/ 0 BKSPTX, TEXT /FATAL ERROR ON BACKSPACE./ 0 SKERTX, TEXT /ERROR ON FWD SKIP./ 0 FILDON, TEXT /FINISHED FILE / 0 FSKPTX, TEXT /SKIPPING FILE / 0 WAITX, TEXT /RELOAD DRIVE AND PRESS CR/ 0