.TITLE ORCIO .IDENT /V01.7/ ; ; ORCAM - I/O ROUTINES FOR OPENING AND CLOSING FILES ; ; ************************************************************* ; ; Modifications Record: ; ===================== ; V01.2 13-Aug-85 CJD ; Default output to TI: if no '=' in command line. ; ; V01.7 1-Oct-86 CJD ; Initialise ASNUM. ; Initialise PSNUM to 0. With original initial value (-1), it would give ; a spurious .BLKB 1 (from ORCP2 at EOM) in a file with only definitions ; and also wrote junk to the PSECTS storage area from ORCSUB routine ; RLDPS the first time around (apparently not catastrophically). ; Modifications to scratch file handling: ; Open as temporary with OPNT$D, so it doesn't get left if ORC crashes. ; Use .POINT instead of CLOSE and reOPEN to rewind. ; ; INIT$ - INITIALISE DATA FOR ORCAM ; .MCALL FINIT$ ; INIT$:: FINIT$ ; INITIALISE FCS ; CLR LLLABS ; CLEAR ALL TABLES CLR LABELS CLR GLOBS CLR PSECTS ; .IF DF O$$FLP CLR FLIPS .ENDC ; DF O$$FLP ; CLR $OVSTS ; CLEAR OVERFLOW STATUS CLR LSB ; CLEAR LSB FLAG CLR PSNUM ; INIT PSECT NUMBER ;V01.7 MOV #-1,ASNUM ; Init .ASECT number ;V01.7 MOV #-1,XFR ; INIT TRANSFER ADDRESS RTS PC ; ; ********************************************************** ; ; OP$MAC - OPEN MACRO FILE ; .MCALL DIR$,CSI$2,OPEN$W,GTIM$ ; OP$MAC:: MOV #HEADID,R0 ; MOVE ORC IDENT INTO HEADER MOV #IDENT,R2 MOV #6,R1 40$: MOVB (R2)+,(R0)+ ; MOVE IDENTIFIER SOB R1,40$ ADD #2,R0 ; POINT TO DATE FIELD DIR$ #GTIM ; GET THE TIME AND DATE MOV #TIMBUF,R1 CMP G.TIDA(R1),#10. BGE 10$ MOVB #' ,(R0)+ 10$: JSR PC,$DAT ; CONVERT DATE TO ASCII INC R0 ; INSERT A SPACE MOV #2,R2 JSR PC,$TIM ; CONVERT TIME TO ASCII MOV #1,LNCNT ; SHOW HEADER NOT YET OUTPUT MOV #ERR7,MESNO MOV #TIDSD,MACFDB+F.DSPT ; Will use TI: if ;V01.2 BITB #CS.EQU,CSIBLK+C.STAT ; '=' in command line ;V01.2 BEQ 60$ ;V01.2 MOV #CSIBLK+C.DSDS,MACFDB+F.DSPT ; There is one, so use file;V01.2 CSI$2 #CSIBLK,OUTPUT,#SWTBL ;V01.2 BCS 5$ ; CS IF SEMANTIC ERROR BITB #CS.WLD,C.STAT(R0) ; WILDCARDS SPECIFIED? BEQ 60$ ; BRANCH IF NO 5$: JMP MOCALL ; OUTPUT ERROR MESSAGE ; 60$: MOV #ERR8,MESNO OPEN$W #MACFDB BCS 5$ RTS PC ; .PSECT ORCDAT,D GTIM: GTIM$ TIMBUF TIMBUF: .BLKW 8. TIDSD: .WORD 2,TINAME,0,0,0,0 ;V01.2 TINAME: .ASCII "TI" ;V01.2 ; .PSECT ; ; ********************************************************** ; ; OP$OBJ - OPEN OBJECT FILE ; .MCALL CSI$2,OPEN$R ; .ENABL LSB OP$OBJ::MOV #ERR3,MESNO MOVB #CS.OUT,CSIBLK+C.TYPR ; Fetch input as "output" if no ;V01.2 BITB #CS.EQU,CSIBLK+C.STAT ; '=' in command line ;V01.2 BEQ 5$ ;V01.2 MOVB #CS.INP,CSIBLK+C.TYPR ; There is one, so real input ;V01.2 5$: CSI$2 #CSIBLK,,#SWTBL ;V01.2 BCS 10$ BITB #CS.WLD,C.STAT(R0) ; WILDCARDS SPECIFIED BNE 10$ ; YES - ERROR OP$OB2::MOV #ERR4,MESNO OPEN$R #OBJFDB BCC 20$ 10$: JMP MOCALL 20$: CLR EOF ; CLEAR EOF AND C-BIT RTS PC .DSABL LSB ; ; ********************************************************** ; ; OP$SCR - OPEN SCRATCH FILE ; .MCALL OPNT$D,OPEN$W ; OP$SCR::MOV #ERR11,MESNO ; OPEN$W #SCRFDB OPNT$D #SCRFDB ;V01.7 BCC 10$ JMP MOCALL 10$: RTS PC ; ; ********************************************************** ; ; CL$MAC - CLOSE MACRO FILE ; .MCALL CLOSE$ ; ; CL$MAC::MOV #ERR10,MESNO ; CLOSE CLOSE$ #MACFDB BCC 10$ JMP MOCALL 10$: RTS PC ; ; ********************************************************** ; ; CL$OBJ - CLOSE THE OBJECT FILE ; .MCALL CLOSE$ ; .ENABL LSB CL$OBJ::MOV #ERR6,MESNO CLOSE$ #OBJFDB BCS 30$ 20$: SEC MOV #1,EOF BR 40$ 30$: JMP MOCALL 40$: RTS PC .DSABL LSB ; ; ********************************************************** ; ; CLO$CR - REWIND SCRATCH FILE ;V01.7 ; CLO$CR::MOV #ERR12,MESNO ;V01.7 MOV #SCRFDB,R0 ;V01.7 MOV R1,-(SP) ;V01.7 MOV R2,-(SP) ;V01.7 MOV R3,-(SP) ;V01.7 CLR R1 ;V01.7 MOV #1,R2 ;V01.7 CLR R3 ;V01.7 JSR PC,.POINT ;V01.7 MOV (SP)+,R3 ;V01.07 MOV (SP)+,R2 ;V01.07 MOV (SP)+,R1 ;V01.07 BCC 20$ 10$: JMP MOCALL 20$: RTS PC ; ; ********************************************************** ; ; CL$SCR - CLOSE SCRATCH FILE -- DELETED AUTOMATICALLY ;V01.7 ; .MCALL CLOSE$ ; CL$SCR::MOV #ERR13,MESNO ; CLOSE CLOSE$ #SCRFDB ;V01.7 BCC 10$ JMP MOCALL 10$: RTS PC ; .END