home *** CD-ROM | disk | FTP | other *** search
- ;
- ; 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
-