]> git.sur5r.net Git - cc65/blobdiff - libsrc/serial/ser_unload.s
no TGI_ERR_NO_MEM or TGI_ERR_NO_IOCB anymore: replaced by TGI_ERR_NO_RES
[cc65] / libsrc / serial / ser_unload.s
index 6dbad90cd0ab2033ab98a0f09b692d616a1d95a3..325c3d6673c9713f4e3fe27b7aca77f9a59cb176 100644 (file)
@@ -5,27 +5,34 @@
 ; /* Unload the currently loaded driver. */
 
 
-        .import         ser_clear_ptr
-
         .include        "ser-kernel.inc"
         .include        "ser-error.inc"
         .include        "modload.inc"
 
+        .import         ser_clear_ptr
+        .import         return0
+
+
+
 _ser_unload:
        lda     _ser_drv
+        pha                             ; Save pointer to driver
        ora     _ser_drv+1
                beq     no_driver               ; No driver
+       lda     _ser_drv+1
+       pha
 
-       jsr     ser_uninstall           ; Deinstall the driver
+               jsr     _ser_uninstall          ; Uninstall the driver
 
-        lda     _ser_drv
-        ldx     _ser_drv+1
+       pla
+       tax
+       pla                             ; Get pointer to driver
         jsr     _mod_free               ; Free the driver
-
-        jmp     ser_clear_ptr           ; Clear the driver pointer, return zero
+        jmp     return0                 ; Return SER_ERR_OK
 
 no_driver:
-       tax                             ; X = 0
-       lda     #SER_ERR_NO_DRIVER
+               tax                             ; X = 0
+        pla                             ; Remove pushed junk
+       lda     #<SER_ERR_NO_DRIVER
        rts