;
; Ullrich von Bassewitz, 17.05.2000
;
; char* __fastcall__ strerror (int errcode);
; /* Map an error number to an error message */
;

        .export         _strerror
        .import         __sys_errlist

        .include        "errno.inc"

_strerror:
        cpx     #$00            ; High byte must be zero
        bne     @L1             ; Jump if invalid error
        cmp     #EMAX           ; Valid error code (map EUNKNOWN to 0)?
        bcc     @L2             ; Jump if ok

; The given error code is invalid

@L1:    lda     #<EINVAL
        sta     __errno
        lda     #>EINVAL        ; = 0
        sta     __errno+1
;       lda     #$00            ; A contains zero: "Unknown error"

; Load the pointer to the error message and return

@L2:    asl     a               ; * 2
        tay
        ldx     __sys_errlist+1,y
        lda     __sys_errlist,y
        rts


