1; 2; Ullrich von Bassewitz, 17.05.2000 3; 4; char* __fastcall__ strerror (int errcode); 5; /* Map an error number to an error message */ 6; 7 8 .export _strerror 9 .import __sys_errlist 10 11 .include "errno.inc" 12 13_strerror: 14 cpx #$00 ; High byte must be zero 15 bne @L1 ; Jump if invalid error 16 cmp #EMAX ; Valid error code (map EUNKNOWN to 0)? 17 bcc @L2 ; Jump if ok 18 19; The given error code is invalid 20 21@L1: lda #<EINVAL 22 sta __errno 23 lda #>EINVAL ; = 0 24 sta __errno+1 25; lda #$00 ; A contains zero: "Unknown error" 26 27; Load the pointer to the error message and return 28 29@L2: asl a ; * 2 30 tay 31 ldx __sys_errlist+1,y 32 lda __sys_errlist,y 33 rts 34 35 36