NBLKS=24. ; ; MACRO PROGRAM TO CHECK THE READABILITY OF AN RP03 ; DISK PACK. UN-READABLE ; BLOCKS ON THE INPUT PACK ARE LISTED ON THE TI WITH ; THE FCS ERROR THAT WAS RETURNED ; ; ; ERROR MESSAGES ARE PRINTED IN THE FORMAT: ; ERROR H LLLLLL EEE ; WHERE: ; EEE = ERROR STATUS RETURN ; H = HIGH WORD OF BLOCK NUMBER ; LLLLLL = LOW WORD OF BLOCK NUMBER ; .MCALL ALUN$C,QIOW$S,QIOW$C,EXIT$S CHECK: ALUN$C 1,SY,0 ;1 IS THE DP DISK ALUN$C 2,TI,0 ;2 IS THE ERROR OUTPUT DEVICE QIOW$C IO.ATT,1 ;ATTACH THE DISK BCS QUIT ; ; LOOP FOR EVERY BLOCK ON THE DISK ; LUP: QIOW$S #IO.RLB,#1,#1,,#ERR,,<#BUF,#512.*NBLKS,,HI,LO> TSTB ERR BMI ERROR ;EVERYTHING HUNKY-DORY? ; ; INCRIMENT TO NEXT BLOCK ; NEXT: ADD #NBLKS,LO ;INCRIMENT LOW ORDER WORD ADC HI ;IT'S A DP ADD BR LUP ;GO BACK FOR MORE QUIT: EXIT$S ;I QUIT WHEN THEY ARE NO LONGER EQUAL. ; ; AN ERROR HAS OCCURED IN ONE OF THE 20 BLOCKS, ; READ EACH OF THEM INDIVIDUALLY, AND ; FIND WHICH ONE HAD THE ERROR ; ERROR: MOV #NBLKS,R4 SLOW: QIOW$S #IO.RLB,#1,#1,,#ERR,,<#BUF,#512.,,HI,LO> MOVB ERR,R0 ;GET ERROR CODE CMP R0,#-20. ;CHECK FOR DOENE BEQ QUIT ;ILLEGAL CYLENDER ADDRESS MEANS DONE TST R0 BMI PRINT ;PRINT IT IF NEGATIVE INCR: ADD #1,LO ;I MUST UUSE ADD TO GET A CARRY BIT ADC HI ;NOW ADD YOUR CARRY SOB R4,SLOW ;GO DO THE NNEXT BLOCK JMP LUP ;GO DO THE NNEXT 20 BLOCKS PRINT: BIC #177400,R0 ;CLOBBER AUTO-SIGN-EXTENSION MOV #EROUT,R1 ;LOAD ADDRESS OF OUTPUT MOV #3,R2 ;SET FOR 3 CHARACTERS JSR PC,OCTAL ;CONVERT TO OCTAL NUMERAL STRING MOV LO,R0 ;GET LOW WORD OF BLOCK MOV #6,R2 ;PRINT ALL 6 DIGITS JSR PC,OCTAL ;CONVERT MOV HI,R0 ;GET HIGH ORDER WORD MOV #1,R2 ;SET TO PRINT 1 DIGIT JSR PC,OCTAL ;CONVERT QIOW$C IO.WLB,2,1,,,, ;PRINT ON TI: BR INCR ;GO TO NNEXT BLOCK IN ERROR AREA ; ; SUBROUTINE TO CONVERT BINARY NUMBER TO AN OCTAL ; NUMERAL STRING. ; R0=NUMBER TO BE CONVERTED ; R1=ADDRESS OF LAST CHARACTER OF OUTPUT +1 ; R2=NUMBER OF DIGITS TO PROCESS ; ; R0 IS ZEROED ; R1 IS DECRIMENTED TO POINT TO A SPACE BEFORE THE MSD ; R2 IS ZEROED ; R3 IS USED AS A SCRATCH. RETURNS ASCII OF MSD ; OCTAL: MOV R0,R3 ;COPY VALUE TO SCRATCH BIC #177770,R3 ;CHOP OUT LOWER OCTAL VALUE BIS #60,R3 ;CONVERT TO ASCII MOVB R3,-(R1) ;STORE IN OUTPUT ASH #-3,R0 ;SHIFT NEXT DIGIT DOWN BIC #160000,R0 ;PREVENT SIGN EXTENSION SOB R2,OCTAL ;KEEP GOING UNTIL YOU ARE DONE MOVB #40,-(R1) ;STORE A SPACE BEFORE THE STRING RTS PC ;AND RETURN ; ; DATA ; MESS: .ASCII /ERROR 0 000000 000/ EROUT: .EVEN HI: .WORD 0 LO: .WORD 0 ERR: .BLKW 2 BUF: .BLKW 512.*NBLKS .END CHECK