File: strerror.s

package info (click to toggle)
cc65 2.19-2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 20,268 kB
  • sloc: ansic: 117,151; asm: 66,339; pascal: 4,248; makefile: 1,009; perl: 607
file content (35 lines) | stat: -rw-r--r-- 886 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
;
; 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