mirror of
https://github.com/cc65/cc65.git
synced 2025-03-12 23:31:18 +00:00
Merge pull request #78 from groessler/something_to_pull
change mouse drivers to be more "floppy access" friendly
This commit is contained in:
commit
0a723fdb3d
@ -318,7 +318,7 @@ APPMHI = $0E ;APPLICATIONS MEMORY HI LIMIT
|
|||||||
|
|
||||||
INTZBS = $10 ;INTERRUPT HANDLER
|
INTZBS = $10 ;INTERRUPT HANDLER
|
||||||
|
|
||||||
POKMSK = $10 ;SYSTEM MASK FOR POKEY IRQ ENABLE
|
POKMSK = $10 ;SYSTEM MASK FOR POKEY IRQ ENABLE (shadow of IRQEN)
|
||||||
BRKKEY = $11 ;BREAK KEY FLAG
|
BRKKEY = $11 ;BREAK KEY FLAG
|
||||||
RTCLOK = $12 ;REAL TIME CLOCK (IN 16 MSEC UNITS>
|
RTCLOK = $12 ;REAL TIME CLOCK (IN 16 MSEC UNITS>
|
||||||
BUFADR = $15 ;INDIRECT BUFFER ADDRESS REGISTER
|
BUFADR = $15 ;INDIRECT BUFFER ADDRESS REGISTER
|
||||||
|
@ -446,6 +446,14 @@ IOCTL: lda #<MOUSE_ERR_INV_IOCTL ; We don't support ioclts for now
|
|||||||
|
|
||||||
IRQ:
|
IRQ:
|
||||||
|
|
||||||
|
; Turn mouse polling IRQ back on in case it disabled itself due to CRITIC
|
||||||
|
; flag being set.
|
||||||
|
|
||||||
|
lda POKMSK
|
||||||
|
ora #%00000001 ; timer 1 enable
|
||||||
|
sta POKMSK
|
||||||
|
sta IRQEN
|
||||||
|
|
||||||
; Check for a pressed button and place the result into Buttons
|
; Check for a pressed button and place the result into Buttons
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
@ -514,7 +522,12 @@ IRQ:
|
|||||||
; T1Han: Local IRQ routine to poll mouse
|
; T1Han: Local IRQ routine to poll mouse
|
||||||
;
|
;
|
||||||
|
|
||||||
T1Han: tya
|
T1Han: lda CRITIC ; if CRITIC flag is set, disable the
|
||||||
|
bne disable_me ; high frequency polling IRQ, in order
|
||||||
|
; not to interfere with SIO I/O (e.g.
|
||||||
|
; floppy access)
|
||||||
|
|
||||||
|
tya
|
||||||
pha
|
pha
|
||||||
txa
|
txa
|
||||||
pha
|
pha
|
||||||
@ -695,3 +708,22 @@ mmexit: sty oldval
|
|||||||
pla
|
pla
|
||||||
rti
|
rti
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
|
||||||
|
; Disable the interrupt source which caused us to be called.
|
||||||
|
; The interrupt will be enabled again by the "IRQ" routine.
|
||||||
|
; The "IRQ" routine, despite its name, is called from the
|
||||||
|
; vertical blank NMI interrupt *only* if the CRITIC flag has
|
||||||
|
; been cleared.
|
||||||
|
|
||||||
|
disable_me:
|
||||||
|
lda POKMSK
|
||||||
|
and #%11111110 ; timer 1 disable
|
||||||
|
sta IRQEN
|
||||||
|
sta POKMSK
|
||||||
|
.ifdef __ATARIXL__
|
||||||
|
rts
|
||||||
|
.else
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
.endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user