Login

Subversion Repositories NedoOS

Rev

Rev 1679 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed


        MODULE OSOPENHANDLE
        PUBLIC OS_CLOSEHANDLE,OS_OPENHANDLE,OS_GETFILINFO
    PUBLIC OS_SEEKHANDLE
        EXTERN errno
        #include "sysdefs.asm"
        RSEG CODE
OS_GETFILINFO:
        push bc
        ld l,c
        ld h,b
        ld c,CMD_GETFILINFO    
        jr label1
OS_SEEKHANDLE:
    ld b,d
    pop af
    pop hl
    pop de
    push de
    push hl
    push af
        push bc
        ld c,CMD_SEEKHANDLE    
        jr label1
OS_OPENHANDLE:
        push bc
        ld a,c
    ex af,af'
        ld c,CMD_OPENHANDLE    
        jr label1
OS_CLOSEHANDLE:
        push bc
        ld b,d
        ld c,CMD_CLOSEHANDLE
label1:
        push ix
        push iy
        call BDOS
        ld (errno),a
        ld h,b
        ld l,a
        pop iy
        pop ix
        pop bc
        ret
        ENDMOD
       
        MODULE OSDIRCALLS
;       PUBLIC OS_CHDIR
;       PUBLIC OS_DELETE
        PUBLIC OS_MKDIR,OS_OPENDIR,OS_READDIR,OS_CHDRV
        EXTERN errno
        #include "sysdefs.asm"
        RSEG CODE
OS_READDIR:
        push bc
        ld c,CMD_READDIR       
        jr label1
OS_OPENDIR:
        push bc
        ld c,CMD_OPENDIR       
        jr label1
;OS_DELETE:
;       push bc
;       ld c,CMD_DELETE
;       jr label1
OS_MKDIR:
        push bc
        ld c,CMD_MKDIR 
        jr label1
;OS_CHDIR:
;       push bc
;       ld c,CMD_CHDIR 
;       jr label1
OS_CHDRV:
        push bc
        ld c,CMD_SETDRV
label1:
        push ix
        push iy
        call BDOS
        ld (errno),a
        pop iy
        pop ix
        pop bc
        ret
        ENDMOD
       
       
        MODULE OSWRITEHANDLE
        PUBLIC OS_WRITEHANDLE,OS_READHANDLE;,OS_GETPATH,OS_SETSYSDRV
        PUBLIC OS_GETFILESIZE
        EXTERN errno
        #include "sysdefs.asm"
        RSEG CODE
;OS_SETSYSDRV:
;       ld c,CMD_SETSYSDRV     
;       jr label1
OS_GETFILESIZE:
        ld c,CMD_GETFILESIZE
        ld b,d
        jr label1
;OS_GETPATH:
;       ld c,CMD_GETPATH       
;       jr label1
OS_READHANDLE:
        ld c,CMD_READHANDLE    
        jr label1
OS_WRITEHANDLE:
        ld c,CMD_WRITEHANDLE
label1:
        pop af
        pop hl
        push hl
        push af
        push ix
        push iy
        call BDOS
        ld (errno),a
        ld b,d
        ld c,e
        pop iy
        pop ix
        ret
        ENDMOD
       
        MODULE OSCREATEHANDLE
        PUBLIC OS_CREATEHANDLE
        EXTERN errno
        #include "sysdefs.asm"
        RSEG CODE
OS_CREATEHANDLE:
        push ix
        push iy
        ld a,c
        and 0x80
        ld b,a
        ld a,c
        and 0x7f
    ex af,af'

        ld c,CMD_CREATEHANDLE  
        call BDOS
        ld (errno),a
        ld h,b
        ld l,a
        pop iy
        pop ix
        ret
        ENDMOD
       
        MODULE FS_GET_ERR_STR
        PUBLIC fs_get_err_str
        EXTERN errno
        #include "sysdefs.asm"
        RSEG CODE
fs_get_err_str:
        push de
        LD      HL,(errno)
        LD      H,0
        ADD     HL,HL
        LD      BC,fs_errs
        ADD     HL,BC
        LD      a,(HL)
        INC     HL
        LD      h,(HL)
    ld l,a
        pop de
        ret
   
        RSEG CONST

fs_errs:
        DEFW    ?0010
        DEFW    ?0011
        DEFW    ?0012
        DEFW    ?0013
        DEFW    ?0014
        DEFW    ?0015
        DEFW    ?0016
        DEFW    ?0017
        DEFW    ?0018
        DEFW    ?0019
        DEFW    ?0020
        DEFW    ?0021
        DEFW    ?0022
        DEFW    ?0023
        DEFW    ?0028
        DEFW    ?0028
        DEFW    ?0028
        DEFW    ?0028
        DEFW    ?0028
        DEFW    ?0029
?0010:
        DEFB    'Succeeded'
        DEFB    0
?0011:
        DEFB    'A hard error occured in the low level disk I/O layer'
        DEFB    0
?0012:
        DEFB    'Assertion failed'
        DEFB    0
?0013:
        DEFB    'The physical drive cannot work'
        DEFB    0
?0014:
        DEFB    'Could not find the file'
        DEFB    0
?0015:
        DEFB    'Could not find the path'
        DEFB    0
?0016:
        DEFB    'The path name format is invalid'
        DEFB    0
?0017:
        DEFB    'Acces denied due to prohibited access or directory full'
        DEFB    0
?0018:
        DEFB    'Acces denied due to prohibited access'
        DEFB    0
?0019:
        DEFB    'The file/directory object is invalid'
        DEFB    0
?0020:
        DEFB    'The physical drive is write protected'
        DEFB    0
?0021:
        DEFB    'The logical drive number is invalid'
        DEFB    0
?0022:
        DEFB    'The volume has no work area'
        DEFB    0
?0023:
        DEFB    'There is no valid FAT volume on the physical drive'
        DEFB    0
?0028:
        DEFB    'file error'
        DEFB    0
?0029:
        DEFB    'Without MBR'
        DEFB    0
        END