mirror of
https://github.com/cc65/cc65.git
synced 2025-02-26 23:30:03 +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
|
||||
|
||||
POKMSK = $10 ;SYSTEM MASK FOR POKEY IRQ ENABLE
|
||||
POKMSK = $10 ;SYSTEM MASK FOR POKEY IRQ ENABLE (shadow of IRQEN)
|
||||
BRKKEY = $11 ;BREAK KEY FLAG
|
||||
RTCLOK = $12 ;REAL TIME CLOCK (IN 16 MSEC UNITS>
|
||||
BUFADR = $15 ;INDIRECT BUFFER ADDRESS REGISTER
|
||||
|
@ -446,6 +446,14 @@ IOCTL: lda #<MOUSE_ERR_INV_IOCTL ; We don't support ioclts for now
|
||||
|
||||
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
|
||||
|
||||
ldx #0
|
||||
@ -514,7 +522,12 @@ IRQ:
|
||||
; 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
|
||||
txa
|
||||
pha
|
||||
@ -695,3 +708,22 @@ mmexit: sty oldval
|
||||
pla
|
||||
rti
|
||||
.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