This commit was generated by cvs2svn to compensate for changes in r2,
which included commits to RCS files with non-trunk default branches. git-svn-id: svn://svn.cc65.org/cc65/trunk@3 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
77
libsrc/cbm/oserror.s
Normal file
77
libsrc/cbm/oserror.s
Normal file
@@ -0,0 +1,77 @@
|
||||
;
|
||||
; Ullrich von Bassewitz, 17.05.2000
|
||||
;
|
||||
; int __fastcall__ _osmaperrno (unsigned char oserror);
|
||||
; /* Map a system specific error into a system independent code */
|
||||
;
|
||||
|
||||
.export __osmaperrno
|
||||
.include "../common/errno.inc"
|
||||
|
||||
.code
|
||||
|
||||
__osmaperrno:
|
||||
ldx #ErrTabSize
|
||||
@L1: cmp ErrTab-2,x ; Search for the error code
|
||||
beq @L2 ; Jump if found
|
||||
dex
|
||||
dex
|
||||
bne @L1 ; Next entry
|
||||
|
||||
; Code not found, return EINVAL
|
||||
|
||||
lda #<EINVAL
|
||||
ldx #>EINVAL
|
||||
rts
|
||||
|
||||
; Found the code
|
||||
|
||||
@L2: lda ErrTab-1,x
|
||||
ldx #$00 ; High byte always zero
|
||||
rts
|
||||
|
||||
.rodata
|
||||
|
||||
ErrTab:
|
||||
.byte 1, EMFILE ; Too many open files
|
||||
.byte 2, EINVAL ; File is open
|
||||
.byte 3, EINVAL ; File not open
|
||||
.byte 4, ENOENT ; File not found
|
||||
.byte 5, ENODEV ; Device not present
|
||||
.byte 6, EINVAL ; File not input
|
||||
.byte 7, EINVAL ; File not output
|
||||
.byte 8, EINVAL ; Filename missing
|
||||
.byte 9, ENODEV ; Ilegal device
|
||||
; .byte 20, ; Read error
|
||||
; .byte 21, ; Read error
|
||||
; .byte 22, ; Read error
|
||||
; .byte 23, ; Read error
|
||||
; .byte 24, ; Read error
|
||||
; .byte 25, ; Write error
|
||||
.byte 26, EACCES ; Write protect on
|
||||
; .byte 27, ; Read error
|
||||
; .byte 28, ; Write error
|
||||
; .byte 29, ; Disk ID mismatch
|
||||
; .byte 30, ; Syntax error
|
||||
; .byte 31, ; Syntax error
|
||||
; .byte 32, ; Syntax error
|
||||
.byte 33, EINVAL ; Syntax error (invalid file name)
|
||||
.byte 34, EINVAL ; Syntax error (no file given)
|
||||
; .byte 39, ; Syntax error
|
||||
; .byte 50, ; Record not present
|
||||
; .byte 51, ; Overflow in record
|
||||
; .byte 52, ; File too large
|
||||
.byte 60, EINVAL ; Write file open
|
||||
.byte 61, EINVAL ; File not open
|
||||
.byte 62, ENOENT ; File not found
|
||||
.byte 63, EEXIST ; File exists
|
||||
.byte 64, EINVAL ; File type mismatch
|
||||
; .byte 65, ; No block
|
||||
; .byte 66, ; Illegal track or sector
|
||||
; .byte 67, ; Illegal system track or sector
|
||||
.byte 70, EBUSY ; No channel
|
||||
; .byte 71, ; Directory error
|
||||
; .byte 72, ; Disk full
|
||||
; .byte 73, ; DOS version mismatch
|
||||
|
||||
ErrTabSize = (* - ErrTab)
|
||||
Reference in New Issue
Block a user