; ; SYSLIB Module Name: SFOPEN ; Author: Richard Conn ; SYSLIB Version Number: 2.0 ; Module Version Number: 1.0 ; Module Entry Points: ; F$MOPEN F$OPEN ; Module External References: ; BDOS ; ; ; F$OPEN -- OPEN FILE SPECIFIED BY FCB PTED TO BY DE ; RETURN W/A=0 AND ZERO FLAG SET (Z) IF NO ERROR ; RETURN W/A=0FFH AND NZ IF FILE NOT FOUND OR NO ROOM IN DIRECTORY ; F$MOPEN -- OPEN AND MAKE FILE SPECIFIED BY FCB PTED TO BY DE ; IF FILE DOES NOT EXIST, CREATE IT FIRST ; SAME RETURN CODES ; EXT BDOS PUTRG MACRO PUSH B ; SAVE BC, DE, HL PUSH D PUSH H ENDM GETRG MACRO POP H ; RESTORE HL, DE, BC POP D POP B ENDM F$OPEN:: PUTRG ; SAVE REGISTERS MVI C,B$OPEN ; OPEN FILE CALL BDOS ; OPEN FILE CPI 255 ; NOT PRESENT JNZ OPENOK ; OK OPENERR: MVI A,0FFH ; ERROR FLAG ORA A ; SET FLAGS JMP OPENDN OPENOK: XRA A ; OK FLAG OPENDN: GETRG ; RESTORE REGISTERS RET F$MOPEN:: PUTRG ; SAVE REGISTERS MVI C,B$OPEN ; TRY TO OPEN FILE CALL BDOS CPI 0FFH ; NOT PRESENT? JNZ OPENOK ; OK MVI C,B$CREAT ; TRY TO CREATE FILE CALL BDOS CPI 0FFH ; NOT ENOUGH ROOM? JNZ OPENOK ; OK JMP OPENERR ; ERROR RETURN B$OPEN EQU 15 ; OPEN FILE B$CREAT EQU 22 ; CREATE FILE END