A large commit.
[pdp8.git] / sw / rescue / muenchen2013 / files / krause_soft / tdchk.pa
diff --git a/sw/rescue/muenchen2013/files/krause_soft/tdchk.pa b/sw/rescue/muenchen2013/files/krause_soft/tdchk.pa
new file mode 100644 (file)
index 0000000..9291bcc
--- /dev/null
@@ -0,0 +1,107 @@
+/TDCHK DECTAPE READ CHECK\r
+\r
+/------------------------------------------------------\r
+/      BY ROBERT KRAUSE, MAY 1983\r
+/\r
+/READ CHECK IS STARTED BY SETTING SW0 TO 1\r
+/IF THE TAPE HAS NO ERRORS IT IS REWOUND AND\r
+/ALL MQ BITS ARE SET. LOWER AND RAISE SW0 TO\r
+/RESTART CHECK. AFTER AN ERROR THE ROUTINE\r
+/TRIES TO FIND THE EXACT BLOCK # OF THE ERROR.\r
+/IF THE ERROR DISAPPEARED THE CHECK IS RESTARTED,\r
+/OTHERWISE THE BLOCK # OF THE ERROR IS DISPLAYED\r
+/IN THE MQ REGISTER AND THE TERMINAL BELL RINGS.\r
+/SETTING SW0 TO 0 ABORTS THE CURRENT OPERATION\r
+/AND THE TAPE IS REWOUND.\r
+/CTRL/C RETURNS TO THE KEYBOARD MONITOR.\r
+/------------------------------------------------------\r
+\r
+       *200\r
+\r
+TDCHK, LAS             /SW0 = 1 ?\r
+       SMA CLA\r
+       JMP .-2\r
+\r
+       TAD (-103       /SET COUNT TO # OF CLUSTERS\r
+       DCA CNT\r
+       DCA BLKN        /SET BLOCK # TO 0\r
+       MQL             /CLEAR MQ\r
+\r
+NEXT,  KRS             /CTRL/C TYPED ?\r
+       TAD (-203\r
+       SNA\r
+       JMP I (7600     /YES, RETURN TO MONITOR\r
+\r
+       LAS             /SW0 = 1 ?\r
+       SMA CLA\r
+       JMP REWIND      /NO, REWIND TAPE\r
+\r
+       JMS I (7614     /READ 11. BLOCKS FROM UNIT 1\r
+       1310            /INTO FIELD 1\r
+       0000            /BEGINNING AT 0000\r
+BLKN,  0000            /BLOCK #\r
+\r
+       JMP ERROR       /ERROR RETURN\r
+\r
+       CLA             /BLKN:=BLKN+11.\r
+       TAD BLKN\r
+       TAD (13\r
+       DCA BLKN\r
+       TAD BLKN        /DISPLAY IN MQ (JUST FOR FUN)\r
+       MQL\r
+       ISZ CNT         /INCREMENT CLUSTER COUNT\r
+\r
+       JMP NEXT        /CONTINUE\r
+\r
+       STA             /CNT = 0, DISPLAY -1 IN MQ\r
+       MQL\r
+\r
+REWIND,        CLA\r
+       JMS I (7614     /READ BLOCK #0 TO REWIND TAPE\r
+       0110\r
+       0000\r
+       0000\r
+       NOP\r
+\r
+       LAS             /SW0 = 0 ?\r
+       SPA\r
+       JMP .-2\r
+\r
+       JMP TDCHK       /RESTART\r
+\r
+ERROR, CLA             /SET ERROR COUNT\r
+       TAD (-13\r
+       DCA CNT\r
+       TAD BLKN        /ERRBLK:=BLKN\r
+       DCA ERRBLK\r
+\r
+ERR1,  JMS I (7614     /READ 1 BLOCK\r
+       0110\r
+       0000\r
+ERRBLK,        0000\r
+\r
+       JMP ERR2        /ERROR RETURN\r
+\r
+       ISZ ERRBLK      /INCREMENT BLOCK #\r
+       CLA             /DISPLAY BLOCK # IN MQ\r
+       TAD ERRBLK\r
+       MQL\r
+       ISZ CNT         /INCREMENT COUNT\r
+\r
+       JMP ERR1        /CHECK NEXT BLOCK\r
+\r
+ERR2,  CLA             /RING TERMINAL BELL\r
+       TAD (207\r
+       TLS\r
+\r
+       LAS             /SW0 = 0 ?\r
+       SPA\r
+       JMP .-2\r
+\r
+       JMP REWIND      /REWIND TAPE AND RESTART\r
+\r
+/-------\r
+\r
+CNT,   0\r
+\r
+$\r