]> git.sur5r.net Git - cc65/blobdiff - libsrc/joystick/joy_unload.s
Merge pull request #390 from jedeoric/master
[cc65] / libsrc / joystick / joy_unload.s
index e5077703e81f4d7999662fded1b909ba7296a199..25d54ff02e169bc2bee3565a27cf870b538d2d1a 100644 (file)
@@ -1,32 +1,37 @@
 ;
 ; Ullrich von Bassewitz, 2002-11-29
 ;
-; unsigned char __fastcall__ joy_unload (void);
+; unsigned char joy_unload (void);
 ; /* Unload the currently loaded driver. */
 
 
-        .import         joy_clear_ptr
-
         .include        "joy-kernel.inc"
         .include        "joy-error.inc"
         .include        "modload.inc"
 
-_joy_unload:
-       lda     _joy_drv
-       ora     _joy_drv+1
-               beq     no_driver               ; No driver
+        .import         joy_clear_ptr
+        .import         return0
 
-               jsr     joy_uninstall           ; Uninstall the driver
 
-        lda     _joy_drv
-        ldx     _joy_drv+1
-        jsr     _mod_free               ; Free the driver
 
-        jmp     joy_clear_ptr           ; Clear driver pointer, return zero
+_joy_unload:
+        lda     _joy_drv
+        pha                             ; Save pointer to driver
+        ora     _joy_drv+1
+        beq     no_driver               ; No driver
+        lda     _joy_drv+1
+        pha
 
-no_driver:
-       tax                             ; X = 0
-       lda     #JOY_ERR_NO_DRIVER
-       rts
+        jsr     _joy_uninstall          ; Uninstall the driver
 
+        pla
+        tax
+        pla                             ; Get pointer to driver
+        jsr     _mod_free               ; Free the driver
+        jmp     return0                 ; Return JOY_ERR_OK
 
+no_driver:
+        tax                             ; X = 0
+        pla                             ; Remove pushed junk
+        lda     #JOY_ERR_NO_DRIVER
+        rts