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