Re: [cc65] Why does this work in 128 mode but not 64 mode?

From: Ullrich von Bassewitz <uz1musoftware.de>
Date: 2010-04-30 08:08:15
On Thu, Apr 29, 2010 at 10:52:46PM -0500, Payton Byrd wrote:
>    After a lot of digging, it appears to be a problem in the libraries.

Actually not. cbm_open is identical for all CBM platforms. It returns what the
kernal returns. If you don't get the expected error, this means that the
kernal doesn't return it. This is the code for cbm_open:

_cbm_open:
        pha
        txa
        pha                     ; Save name

        jsr     popa            ; Get sec_addr
        jsr     _cbm_k_setlfs   ; Call SETLFS, pop all args

        pla
        tax
        pla                     ; Get name
        jsr     _cbm_k_setnam

        jsr     _cbm_k_open
        sta     __oserror

        rts

And here is cbm_k_open:

_cbm_k_open:
        jsr     OPEN            ; <- KERNAL call
        ldx     #0              ; Clear high byte
        bcs     @NotOk
        txa
@NotOk: rts

If the carry is set after a call to the kernal, the error code is definitely
stored in _oserror. If _oserror doesn't contain an error code, it is because
the kernal doesn't return it.

Regards


        Uz


-- 
Ullrich von Bassewitz                                  uz@musoftware.de
----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo@musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.
Received on Fri Apr 30 08:08:21 2010

This archive was generated by hypermail 2.1.8 : 2010-04-30 08:08:24 CEST