.TITLE MTCHECK .IDENT /MRHV01/ .SBTTL INTRO PAGE ; ;THIS PROGRAM IS DESIGNED TO CHECK THE CONDITION OF A MAG-TAPE IT WILL ; ;1 READ THE TAPE RECORD BY RECORD ; ; ;2 MONITOR THE IOSTATUS RETURN TO SEE IF THE READ FAILED AND ; REPORT THIS AS AN ERROR ; ; ; ; ; ; ;DEFINE SOME NEEDED VARIABLES ; READSZ=20.*1000 ;NUMBER OF BYTES IN 20. BLOCKS ; ; .MCALL QIOW$,DIR$,EXIT$S,GMCR$ .PAGE .SBTTL THE CODE ; ;FIRST SET THINGS UP ; START: DIR$ #GETMCR ;SO WE RECALL THE CALLER REOK: CLR R5 ;CLEAR END OF FILE FLAG REGO: DIR$ #REAQIO ;DO TAPE READ ADD #1,RECLOW ;COUNT ONE RECORD, (INC DOESN'T SET C BIT) ADC RECHIG TSTB IOSB ;DID READ GO OK BPL REOK ;BR IF OK CMPB IOSB,#IE.EOV ;END OF TAPE ??? BEQ END ;IF SO, QUIT CMPB IOSB,#IE.EOF ;END OF ONE FILE ??? BNE REPORT ;ELSE REPORT ERROR INC FILES ;COUNT ONE FILE INC R5 ;SHOW ONE EOF CMP R5,#1 ;MORE THAN ONE EOF IN A ROW ? BGT END ;IF SO, END OF TAPE BR REGO ;ELSE GO AGAIN REPORT: MOV #HARDP1,R0 ;POINT TO BUFFER MOV IOSB,R1 ;GET ERROR CODE BIS #177400,R1 ;SET UPPER BYTE CLR R2 ;AND ZERO SUPPRESS JSR PC,$CBOSG ;CONVERT ERROR CODE MOV #HARDP2,R0 ;POINT TO BUFFER MOV RECHIG,R1 ;GET HIGH RECORD NUMBER CLR R2 ;INDICATE 0 SUPPRESSION JSR PC,$CBOMG ;CONVERT NUMBER MOVB #',,(R0)+ ;PUT IN A COMMA MOV RECLOW,R1 ;GET LOW PART OF RECORD NUMBER INC R2 ;MAKE THIS 6 DIGITS JSR PC,$CBOMG ;CONVERT IT MOV #HARDER,TTYQIO+Q.IOPL ;FILL IN MESSAGE START IN DPB MOV #HARDLN,TTYQIO+Q.IOPL+2 ;AND LENGTH DIR$ #TTYQIO ;AND REPORT ERROR BR REOK ;AND GO AGAIN ; ; HERE ON END ; END: MOV #ENDP1,R0 ;POINT TO BUFFER MOV RECHIG,R1 ;GET HIGH PART OF REC NUMBER CLR R2 ;INDICATE 0 SUPPRESSION JSR PC,$CBOMG ;CONVERT NUMBER MOVB #',,(R0)+ ;PUT IN A COMMA MOV RECLOW,R1 ;GET LOW PART OF REC NUMBER INC R2 ;MAKE THIS 6 DIGITS JSR PC,$CBOMG ;CONVERT IT MOV #ENDP2,R0 ;POINT TO FILES NUMBER MOV FILES,R1 ;GET NUMBER OF FILES JSR PC,$CBOMG ;CONVERT # OF FILES MOV #ENDOK,TTYQIO+Q.IOPL ;FILL IN MESSAGE START IN DPB MOV #ENDOKL,TTYQIO+Q.IOPL+2 ;AND LENGTH DIR$ #TTYQIO ;AND REPORT ERROR EXIT$S ;AND EXIT ; .PAGE .SBTTL DATA AREAS ; ;QIO FOR MESSAGES TO TI ; TTYQIO: QIOW$ IO.WVB,5,1,,,,<0,0,40> ; ;NOW POSSIBLE MESSAGES ; ; HARDER: .ASCII /ERROR = / HARDP1: .ASCII /-N AT RECORD # / HARDP2: .ASCII /N,NNNNNN / HARDLN=.-HARDER ; ENDOK: .ASCII /FINISHED READING / ENDP1: .ASCII /N,NNNNNN / .ASCII /RECORDS IN / ENDP2: .ASCII /NNNNNN FILES/ ENDOKL=.-ENDOK .EVEN ; ;NOW THE TAPE READ QIO ; REAQIO: QIOW$ IO.RLB,2,1,,IOSB,, ; IOSB: .WORD 0,0 ;RETURNED STATUS ; GETMCR: GMCR$ ;GET MCR DPB ; ;MISC VARIABLES ; RECLOW: .WORD 0 ;LOW RECORD COUNTER RECHIG: .WORD 0 ;HIGH RECORD COUNTER FILES: .WORD 0 ;FILES COUNTER READBF: .BLKB READSZ ;BUFFER FOR READING N. BLOCKS .END START