MGCML.MAC=MGCML.MAC -51,,/;PE/ ; MODIFIED FOR FILEIND BY PAUL ELLIOTT NOV 78. -64,,/;PE/ .MCALL OFNB$W -77,,/;PE/ .MCALL OPEN$R -301,,/;PE/ CALL EXTOP ;OPEN AN SECOND CONTROL FILE IF NEEDED BCS 4$ ;CHECK FOR ERROR ON SECOND FILE -338,,/;PE/ CALL EXTOP ;OPEN SECOND FILE IF SPECIFIED BCS OPRERR ;CHECK FOR ERROR -365,369,/;PE/ CSI$2 R0,OUTPUT,#$SWTAB ; GET THE OUTPUT FILE ;PW001 BCS 10$ ;PW001 BITB #CS.WLD,C.STAT(R0) ; NO * WILD CARDS, AND ONLY ONE FILE ;PW001 -380,,/;PE/ MOV R0,-(SP) ;SAVE R0 MOVB EXST,R0 ;GET FLAG FOR EXTRA FILE BGE 5$ ;TEST IF EXTRA FILE IF N COMPLEMENT NEGB R0 5$: CMPB R0,G.CDEP(R5) ;CHECK IF AT SAME LEVEL AS BNE 6$ ;WHEN EXTRA FILE WAS OPENED CLOSE$ #EXTRA,7$ ;IF Y THEN CLOSE IT. CLRB EXST ;SET FLAG EXTRA FILE NOT IN USE 6$: MOV (SP)+,R0 ;RESTORE R0 -422,,/;PE/ 7$: RETURN ;RESTORE REGS -506,506,/;PE/ GOPEN: TSTB EXST+1 ;TO OPEN EXTRA FILE MUST SKIP THIS BLT 2$ ;MYSTERYOUS CODE ;I DO NOT NO WHY OR WHAT THIS CODE DOES. MOV R5,R0 ;++002 PUT FDB ADDR IN R0 -517,517,/;PE/ 2$: MOV R0,R1 ; POINT R1 TO THE -522,525,/;PE/ ;I DO NOT KNOW WHY THE CODE ;FROM AAA TO BBB IS NECESSARY BUT IT IS ; IF IT IS NOT THERE WE FAIL TO OPEN ;THE FILE FOR READ WITH CODE .NSF=-26 ;(NO SUCH FILE) THIS IS BECAUSE N.DID ;HAS THE ID OF [0,0] INSTEAD OF THE ;THE USER DIRECTORY WHY THIS IS I ;DO NOT UNDERSTAND. PERHAPS IT IS A ;BUG IN THE .PARSE ROUTINE OR ;PERHAPS THIS PROGRAM CHANGED SOME ;GLOBAL FCS INFO THAT MADE .PARSE ;BEHAVE IN THIS MANNER ;IN ANY CASE THE CALLS TO GETDID ;AND GETDIR CAUSE THE DOUBLY ;DEFINED SYMBOLS. ;AAA TSTB EXST+1 ;CHECK IF READING EXTRA FILE BGT 20$ ;+ THEN OPEN FOR WRITE BEQ 23$ ;0 THEN MCR FILE SKIP OPEN READ ADD #4,R2 ;GET DIRECTORY STRING TST (R2) ;IS THERE A DIRECTORY? BNE 22$ ;YES USE GETDI CALL .GTDID ;OTHERWISE USE DEFAULT STRING BCS 10$ ;CHECK FOR ERRORS BR 23$ ;OPEN FOR READ 22$: CALL .GTDIR ;GET THE USER SPECIFIED DIRECTORY BCS 10$ ;CHECK FOR ERROR ;BBB 23$: OFNB$R 10$: RETURN ;++002 20$: OFNB$W ;OPEN FOR WRITE RETURN EXTOP: TSTB EXST ;CHECK IF FILE ALREADY IN USE BEQ 5$ ;NO RETURN ;RETURN IF ALREADY IN USE 5$: CALL $SAVAL ;SAVE ALL REGISTERS MOV #$CSIBK,R0 ;GET CSI CONTROL BITB #CS.MOR,C.STAT(R0) ;CHECK IF , OCCURS BEQ 20$ ;NO CHECK FOR OUTPUT FILE BITB #CS.EQU,C.STAT(R0) ;CHECK FOR INPUT FILE BNE 21$ ;NO SIMPLY RETURN CSI$2 R0,OUTPUT ;GET FILE INFO BCS 21$ ;ERROR FDOP$R #EXTRA,,,,FO.WRT ;SET FILE OUTPUT MOVB #1,EXST+1 ;SET FLAG FOR EXTRA OUTPUT MOV R5,-(SP) ;SAVE R5 MOV R0,R5 ;OPEN REQUIRES FDB IN R5 CALL OPEN ;OPEN THE FILE MOV (SP)+,R5 ;RESTORE R5 BCS 21$ ;ERROR CLRB EXST+1 ;CLEAR FLAG FOR EXTRA FILE MOVB G.CDEP(R5),EXST ;SAVE THE DEPTH AT WHICH OPEN OCCURED NEGB EXST ;- MEANS OUTPUT 10$: CLC ;OK RETURN 20$: BITB #CS.EQU,C.STAT(R0) ;CHECK IF = OCCURED BEQ 10$ ;NO RETURN CSI$2 R0,INPUT ;GET FILE INFO BCS 21$ ;ERROR MOV #EXTRA,R0 ;GET FILE FDB FDOP$R R0,,,,FO.RD ;SET FILE FOR READ MOVB #-1,EXST+1 ;SET EXTRA READ FLAG MOV R5,-(SP) ;SAVE R5 MOV R0,R5 ;REQUIRES R5 TO BE FDB CALL OPEN ;OPEN THE FILE MOV (SP)+,R5 ;RESTORE R5 BCS 21$ ;CHECK ERROR CLRB EXST+1 ;CLEAR EXTRA FLAG MOVB G.CDEP(R5),EXST ;SAVE DEPTH AT WHICH THIS OPEN OCCURED BR 10$ ;RETURN 21$: CLRB EXST+1 ;ERROR RETURN SEC ;SET ERROR BIT RETURN /