]> git.sur5r.net Git - cc65/commitdiff
Unloading the joystick driver didn't reset the interrupts, so the program may
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 4 Jun 2006 10:14:30 +0000 (10:14 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 4 Jun 2006 10:14:30 +0000 (10:14 +0000)
crash later.

git-svn-id: svn://svn.cc65.org/cc65/trunk@3751 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/joystick/joy_unload.s

index e5077703e81f4d7999662fded1b909ba7296a199..021cf5c1e7a6eac36d9ad6e2a9fb30653297190d 100644 (file)
@@ -6,7 +6,7 @@
 
 
         .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
+               beq     no_driver               ; No driver
 
-               jsr     joy_uninstall           ; Uninstall the driver
+       lda     _joy_drv
+       pha
+       lda     _joy_drv+1
+       pha                             ; Save pointer to driver
 
-        lda     _joy_drv
-        ldx     _joy_drv+1
-        jsr     _mod_free               ; Free the driver
+               jsr     _joy_uninstall          ; Uninstall the driver
 
-        jmp     joy_clear_ptr           ; Clear driver pointer, return zero
+       pla
+       tax
+       pla                             ; Get pointer to driver
+        jmp    _mod_free               ; Free the driver
 
 no_driver:
-       tax                             ; X = 0
+       tax                             ; X = 0
        lda     #JOY_ERR_NO_DRIVER
        rts