home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ZSYS / SIMTEL20 / SYSLIB / SLIB2.LBR / SFOPEN.Z80 < prev    next >
Text File  |  2000-06-30  |  1KB  |  62 lines

  1. ;
  2. ; SYSLIB Module Name:  SFOPEN
  3. ; Author:  Richard Conn
  4. ; SYSLIB Version Number:  3.6
  5. ; Module Version Number:  1.1
  6.  
  7.     public    f$mopen,f$open
  8.  
  9. ;
  10. ;  F$OPEN -- OPEN FILE SPECIFIED BY FCB PTED TO BY DE
  11. ;    RETURN W/A=0 AND ZERO FLAG SET (Z) IF NO ERROR
  12. ;    RETURN W/A=0FFH AND NZ IF FILE NOT FOUND OR NO ROOM IN DIRECTORY
  13. ;  F$MOPEN -- OPEN AND MAKE FILE SPECIFIED BY FCB PTED TO BY DE
  14. ;    IF FILE DOES NOT EXIST, CREATE IT FIRST
  15. ;    SAME RETURN CODES
  16. ;
  17.     EXT    BDOS
  18.  
  19. PUTRG    MACRO
  20.     PUSH    BC    ; SAVE BC, DE, HL
  21.     PUSH    DE
  22.     PUSH    HL
  23.     ENDM
  24. GETRG    MACRO
  25.     POP    HL    ; RESTORE HL, DE, BC
  26.     POP    DE
  27.     POP    BC
  28.     ENDM
  29.  
  30. F$OPEN:
  31.     PUTRG            ; SAVE REGISTERS
  32.     LD    C,B$OPEN    ; OPEN FILE
  33.     CALL    BDOS        ; OPEN FILE
  34.     CP    255        ; NOT PRESENT
  35.     JP    NZ,OPENOK    ; OK
  36. OPENERR:
  37.     LD    A,0FFH        ; ERROR FLAG
  38.     OR    A        ; SET FLAGS
  39.     JP    OPENDN
  40. OPENOK:
  41.     XOR    A        ; OK FLAG
  42. OPENDN:
  43.     GETRG            ; RESTORE REGISTERS
  44.     RET
  45.  
  46. F$MOPEN:
  47.     PUTRG            ; SAVE REGISTERS
  48.     LD    C,B$OPEN    ; TRY TO OPEN FILE
  49.     CALL    BDOS
  50.     CP    0FFH        ; NOT PRESENT?
  51.     JP    NZ,OPENOK    ; OK
  52.     LD    C,B$CREAT    ; TRY TO CREATE FILE
  53.     CALL    BDOS
  54.     CP    0FFH        ; NOT ENOUGH ROOM?
  55.     JP    NZ,OPENOK    ; OK
  56.     JP    OPENERR        ; ERROR RETURN
  57.  
  58. B$OPEN    EQU    15    ; OPEN FILE
  59. B$CREAT    EQU    22    ; CREATE FILE
  60.  
  61.     END
  62.