.TITLE DUMP -- DUMP A FILE .IDENT /1/ .GLOBL SUB .MCALL FINIT$,WHILE,IF,END,EXIT$S,STRMACS,FSRSZ$,ERR$ .MCALL ERR$P,CLOSE$,PRINT$,.USE,ELSE,IFB STRMACS FSRSZ$ 8. ERR$ ; ; DUMP IS A PROGRAM TO DUMP A FILE IN A RECORD FASHION ; IN OCTAL, ASCII AND RADIX 50 ; DUMP:: FINIT$ ;INITIALIZE FILE SYSTEM .USE JUMPS MOV #SUB,ERR+E.SUBL ;SET ERROR BLOCK TO SUBSTITUTION LIST WHILE ,CC ;WHILE EVERYTHING OK CALL DECODE ;DECODE PARAMETERS IF ,CC ;IF STILL OK .USE BRANCHES IF #SW.HD,SETON,OPTION ;IF WE SHOULD DUMP HEADER CALL HEADER ;DUMP IT END IF ,CC ;IF OK CALL FILE ;PRINT IT OUT END IF #SW.PH,SETOFF,OPTIONS ;IF DOING FILE I/O CLOSE$ #IN ;CLOSE INPUT FILE IF ,CS ;IF ERROR MOVB F.ERR(R0),R1 ;GET ERROR CODE NEG R1 ;AND MESSAGE NUMBER ERR$P #ERR,<%ERROR CLOSING INPUT FILE : >,R1 ERR$P #ERR,<%%> END END IF #SW.SP,SETOFF,OPTIONS MOV #OUT,R0 ;GET OUTPUT FDB ADDRESS IFB #FD.REC,SETON,F.RCTL(R0) ;IF A RECORD DEVICE MOV #IO.DET,R1 ;TRY TO ATTACH TO IT CLR R2 ;NO PARAMETERS TO QIO CALL .XQIO ;DO IO.DET QIO IF ,CS ;IF ERROR MOVB F.ERR(R0),R1 ;GET ERROR CODE NEG R1 ;OTHERWISE GET ERROR MESSAGE NUMBER ERR$P #ERR,<%ERROR DETACHING OUTPUT DEVICE : >,R1 ERR$P ,<%%> END END CLOSE$ #OUT ;JUST CLOSE THE OUTPUT FILE ELSE PRINT$ #OUT ;OTHERWISE SPOOL FILE END IF ,CS ;IF ERROR MOVB F.ERR(R0),R1 ;GET ERROR CODE NEG R1 ;AND MESSAGE NUMBER ERR$P #ERR,<%ERROR CLOSING OUTPUT FILE : >,R1 ERR$P #ERR,<%%> END CLC END END EXIT$S .END DUMP