;
; 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"

.segment "LIBCODE"
_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


