]> git.sur5r.net Git - cc65/commitdiff
Added code that disables C128 BASIC's sprite-motion interrupt-handler. 90/head
authorGreg King <gregdk@users.sf.net>
Sat, 15 Mar 2014 20:29:13 +0000 (16:29 -0400)
committerGreg King <gregdk@users.sf.net>
Sat, 15 Mar 2014 20:41:03 +0000 (16:41 -0400)
That lets the mouse drivers control a sprite directly through the VIC's registers.

libsrc/c128/mou/c128-1351.s
libsrc/c128/mou/c128-joy.s
libsrc/c128/mou/c128-pot.s

index b4d950cda9d22efd8a1d03aa5aa3f6d5c6564cbd..e1a8a5c8aff8e1128c29173cffcabc316e590229 100644 (file)
@@ -2,7 +2,8 @@
 ; Driver for the 1351 proportional mouse. Parts of the code are from
 ; the Commodore 1351 mouse users guide.
 ;
-; Ullrich von Bassewitz, 2003-12-29, 2009-09-26
+; 2009-09-26, Ullrich von Bassewitz
+; 2014-03-15, Greg King
 ;
 
         .include        "zeropage.inc"
@@ -83,6 +84,8 @@ YMax:           .res    2               ; Y2 value of bounding box
 OldValue:       .res    1               ; Temp for MoveCheck routine
 NewValue:       .res    1               ; Temp for MoveCheck routine
 
+INIT_save:      .res    1
+
 .rodata
 
 ; Default values for above variables
@@ -107,6 +110,14 @@ NewValue:       .res    1               ; Temp for MoveCheck routine
 
 INSTALL:
 
+; Disable the BASIC interpreter's interrupt-driven sprite-motion code.
+; That allows direct access to the VIC-IIe's sprite registers.
+
+        lda     INIT_STATUS
+        sta     INIT_save
+        lda     #%11000000
+        sta     INIT_STATUS
+
 ; Initialize variables. Just copy the default stuff over
 
         ldx     #.sizeof(DefVars)-1
@@ -133,13 +144,17 @@ INSTALL:
 
         ldx     #$00
         txa
-        rts                             ; Run into UNINSTALL instead
+        rts
 
 ;----------------------------------------------------------------------------
 ; UNINSTALL routine. Is called before the driver is removed from memory.
 ; No return code required (the driver is removed from memory on return).
 
-UNINSTALL       = HIDE                  ; Hide cursor on exit
+UNINSTALL:
+        jsr     HIDE                    ; Hide cursor on exit
+        lda     INIT_save
+        sta     INIT_STATUS
+        rts
 
 ;----------------------------------------------------------------------------
 ; HIDE routine. Is called to hide the mouse pointer. The mouse kernel manages
index 2bbb4c79bcc7a4e6c628cbec3454536327c1ba13..29689305b4a9deda7920be41a5493f25af587784 100644 (file)
@@ -1,7 +1,8 @@
 ;
 ; Driver for a "joystick mouse".
 ;
-; Ullrich von Bassewitz, 2004-04-05, 2009-09-26
+; 2009-09-26, Ullrich von Bassewitz
+; 2014-03-15, Greg King
 ;
 
         .include        "zeropage.inc"
@@ -85,6 +86,8 @@ XMax:           .res    2               ; X2 value of bounding box
 YMax:           .res    2               ; Y2 value of bounding box
 Buttons:        .res    1               ; Button mask
 
+INIT_save:      .res    1
+
 ; Temporary value used in the int handler
 
 Temp:           .res    1
@@ -113,6 +116,14 @@ Temp:           .res    1
 
 INSTALL:
 
+; Disable the BASIC interpreter's interrupt-driven sprite-motion code.
+; That allows direct access to the VIC-IIe's sprite registers.
+
+        lda     INIT_STATUS
+        sta     INIT_save
+        lda     #%11000000
+        sta     INIT_STATUS
+
 ; Initialize variables. Just copy the default stuff over
 
         ldx     #.sizeof(DefVars)-1
@@ -145,7 +156,11 @@ INSTALL:
 ; UNINSTALL routine. Is called before the driver is removed from memory.
 ; No return code required (the driver is removed from memory on return).
 
-UNINSTALL       = HIDE                  ; Hide cursor on exit
+UNINSTALL:
+        jsr     HIDE                    ; Hide cursor on exit
+        lda     INIT_save
+        sta     INIT_STATUS
+        rts
 
 ;----------------------------------------------------------------------------
 ; HIDE routine. Is called to hide the mouse pointer. The mouse kernel manages
index 2568445f1b5d9ec3f4c05b4ffba3f3a3ad5c9400..07058bf794c4334a68bccf1205145554bfcbc609 100644 (file)
@@ -1,8 +1,9 @@
 ;
-; Driver for a potentiometer "mouse" e.g. Koala Pad
+; Driver for a potentiometer "mouse", e.g. Koala Pad
 ;
-; Ullrich von Bassewitz, 2004-03-29, 2009-09-26
-; Stefan Haubenthal, 2006-08-20
+; 2006-08-20, Stefan Haubenthal
+; 2009-09-26, Ullrich von Bassewitz
+; 2014-03-15, Greg King
 ;
 
         .include        "zeropage.inc"
@@ -82,6 +83,8 @@ XMax:           .res    2               ; X2 value of bounding box
 YMax:           .res    2               ; Y2 value of bounding box
 Buttons:        .res    1               ; Button mask
 
+INIT_save:      .res    1
+
 ; Temporary value used in the int handler
 
 Temp:           .res    1
@@ -110,6 +113,14 @@ Temp:           .res    1
 
 INSTALL:
 
+; Disable the BASIC interpreter's interrupt-driven sprite-motion code.
+; That allows direct access to the VIC-IIe's sprite registers.
+
+        lda     INIT_STATUS
+        sta     INIT_save
+        lda     #%11000000
+        sta     INIT_STATUS
+
 ; Initialize variables. Just copy the default stuff over
 
         ldx     #.sizeof(DefVars)-1
@@ -142,7 +153,11 @@ INSTALL:
 ; UNINSTALL routine. Is called before the driver is removed from memory.
 ; No return code required (the driver is removed from memory on return).
 
-UNINSTALL       = HIDE                  ; Hide cursor on exit
+UNINSTALL:
+        jsr     HIDE                    ; Hide cursor on exit
+        lda     INIT_save
+        sta     INIT_STATUS
+        rts
 
 ;----------------------------------------------------------------------------
 ; HIDE routine. Is called to hide the mouse pointer. The mouse kernel manages