]> git.sur5r.net Git - cc65/commitdiff
adapt to new oserror/errno handling
authorcpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 6 Jul 2010 22:43:19 +0000 (22:43 +0000)
committercpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 6 Jul 2010 22:43:19 +0000 (22:43 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4732 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/atari/do_oserr.s
libsrc/atari/graphics.s
libsrc/atari/inviocb.s
libsrc/atari/lseek.s
libsrc/atari/open.s

index 7782ac868e09212bb80b622d9784a0354d82ffe9..534ba2e78c62374f113214999a5d40c1433e14bf 100644 (file)
@@ -1,17 +1,12 @@
 ;
-; __do_oserror updates __oserror.  Do a JMP here right after calling
-; CIOV.         It will return with AX set to -1 ($FFFF).  It expects the CIO
+; __do_oserror updates __oserror and errno.  Do a JMP here right after
+; calling CIOV. It will return with AX set to -1 ($FFFF).  It expects the CIO
 ; status in Y.
-;
-; __retminus is a routine whitch returns with AX set to -1 ($FFFF).
 ;
        .include "errno.inc"
 
-       .export __do_oserror, __retminus
+       .export __do_oserror
 
 __do_oserror:
-       sty     __oserror       ; save os dependent error code
-__retminus:
-       lda     #$FF
-       tax                     ; return -1
-       rts
+       tya
+       jmp     __mappederrno
index 3b2c07cbd504873ee604a52081f2bc41a0474a33..120865f826871254ba7e4eb79da1f4374701f245 100644 (file)
@@ -44,9 +44,7 @@ parmok:       jsr     findfreeiocb
        beq     iocbok          ; we found one
 
        lda     #<EMFILE        ; "too many open files"
-seterr:        jsr     __seterrno
-       lda     #$FF
-       tax
+seterr:        jsr     __mappederrno   ; @@@ probably not correct to set errno here @@@
        rts                     ; return -1
 
 ;invmode:ldx   #>EINVAL
index 67a6a7c424e33f4300a225fbdba5f0c2b7bf2685..b7954dd116da6083dc9d7c0427e7b4c0b7dd2080 100644 (file)
@@ -2,11 +2,9 @@
 ; set EINVAL error code and returns -1
 ;
        .include "errno.inc"
-       .import __retminus
 
        .export __inviocb
 
 __inviocb:
        lda     #<EINVAL
-       jsr     __seterrno
-       jmp     __retminus      ; return -1
+       jmp     __directerrno
index ac033004c46cb5f0f37e278bb6a1f096e6cd6e42..244095969f26d6a571396d99cb6c5297112e1d49 100644 (file)
 ; seeking not supported, return -1 and ENOSYS errno value
 no_supp:jsr    incsp6
        lda     #<ENOSYS
-       jsr     __seterrno      ; set __errno, return zero in A
-               sta     __oserror
-       lda     #$FF
-       tax
+       jsr     __directerrno   ; returns with $FFFF in AX
        sta     sreg
        sta     sreg+1
        rts
@@ -93,8 +90,14 @@ end: ldx     tmp3
        bpl     l01
 
 ; error returned from CIO
-xxerr: sty     __oserror
-       bmi     iocberr
+xxerr: tya
+       pha
+       jsr     incsp6
+       pla
+       jsr     __mappederrno   ; returns with $FFFF in AX
+       sta     sreg
+       sta     sreg+1
+       rts
 
 ; check for offset 0, SEEK_CUR (get current position)
 cont:  ldy     #3
index 927c1953c24cac1da8a55c20dbf0f74f5fa79e2e..73361336f4d1c70ff965a5207d5b2364773fef32 100644 (file)
@@ -16,7 +16,7 @@
        .import clriocb
        .import fddecusage,newfd
        .import findfreeiocb
-       .import __do_oserror,incsp4
+       .import incsp4
        .import ldaxysp,addysp
        .import __oserror
        .importzp tmp4,tmp2
@@ -38,7 +38,7 @@ parmok:       jsr     findfreeiocb
        beq     iocbok          ; we found one
 
        lda     #<EMFILE        ; "too many open files"
-seterr:        jsr     __seterrno
+seterr:        jsr     __directerrno
        jsr     incsp4          ; clean up stack
        lda     #$FF
        tax
@@ -143,7 +143,8 @@ finish:     php
 
        bpl     ok
        jsr     fddecusage      ; decrement usage counter of fd as open failed
-       jmp     __do_oserror
+       tya                     ; put error code into A
+       jmp     __mappederrno
 
 ok:    lda     tmp2            ; get fd
        ldx     #0