That lets the mouse drivers control a sprite directly through the VIC's registers.
; 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"
OldValue: .res 1 ; Temp for MoveCheck routine
NewValue: .res 1 ; Temp for MoveCheck routine
+INIT_save: .res 1
+
.rodata
; Default values for above variables
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
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
;
; 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"
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
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
; 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
;
-; 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"
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
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
; 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