;
; Ullrich von Bassewitz, 2003-08-12
;
; Helper function for several high level file functions.
;
; The function will store the value in A into _oserror. If the value is not
; zero, it is translated into a standard error number which is then stored
; into errno, and -1 is returned in a/x. If the value in A was zero, errno
; is not changed, and zero is returned in a/x.
;

        .export         oserrcheck

        .include        "errno.inc"

.segment "LIBCODE"
.proc   oserrcheck

        sta     __oserror               ; Store the error code
        tay                             ; Did we have an error?
        beq     ok                      ; Branch if no
        jsr     __osmaperrno            ; Map os error into errno code
        sta     __errno
        stx     __errno+1               ; Save in errno
        lda     #$FF                    ; Return -1

; Error free, A contains zero

ok:     tax                             ; Make high byte also zero
        rts

.endproc



