1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-07 23:29:39 +00:00
cc65/libsrc/cbm/oserror.s
2014-04-03 17:28:36 -04:00

78 lines
2.7 KiB
ArmAsm

;
; Ullrich von Bassewitz, 17.05.2000
;
; int __fastcall__ _osmaperrno (unsigned char oserror);
; /* Map a system specific error into a system independent code */
;
.include "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 EUNKNOWN
lda #<EUNKNOWN
ldx #>EUNKNOWN
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 ; Illegal 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
.byte 74, ENODEV ; Drive not ready
ErrTabSize = (* - ErrTab)