]> git.sur5r.net Git - cc65/blobdiff - libsrc/tgi/tgi_geterror.s
Replace sscanf by an assembler version
[cc65] / libsrc / tgi / tgi_geterror.s
index b5595709494ee8786bb224923f48003d15f8be86..c2426158bf514f312254b800811273f93decd156 100644 (file)
@@ -2,12 +2,24 @@
 ; Ullrich von Bassewitz, 21.06.2002
 ;
 ; unsigned char __fastcall__ tgi_geterror (void);
-; /* Return the error code for the last operation. */
+; /* Return the error code for the last operation. This will also clear the
+;  * error.
+;  */
 
         .include        "tgi-kernel.inc"
 
+.proc   _tgi_geterror
 
-_tgi_geterror:
-        lda     _tgi_error
-        rts
+        lda     _tgi_drv                ; Check if we have a driver
+        ora     _tgi_drv+1
+        beq     @L1
+        jsr     tgi_geterror            ; First call driver
+@L1:    ldx     #$00                    ; Clear high byte
+        ldy     _tgi_error              ; Test high level error code
+        beq     @L2                     ; Branch if no high level error code
+        tya                             ; Use high level code if we have one
+        stx     _tgi_error              ; Clear high level error code
+@L2:    rts
+
+.endproc