small performance optimization, fix for keyboard scanner variables optimization
This commit is contained in:
1 parent
5c8ac04083
commit
c7f9f0ae34
2 files changed
+22
-18
No files matched your search
@@ -55,12 +55,11 @@
|
|||||||
!addr M65_SCRCOLMAX = $594 ; maximum allowed column
|
!addr M65_SCRCOLMAX = $594 ; maximum allowed column
|
||||||
!addr M65_KB_BUCKY = $595 ; result of bucky keys scan
|
!addr M65_KB_BUCKY = $595 ; result of bucky keys scan
|
||||||
!addr M65_KB_COLSCAN = $596 ; $596-$59E results of keyboard scan, columns 0-8
|
!addr M65_KB_COLSCAN = $596 ; $596-$59E results of keyboard scan, columns 0-8
|
||||||
!addr M65_KB_COLSUM = $59F ; sum (OR) of the M65_KB_COLSCAN
|
!addr M65_JOYCRSR = $59F ; joystick to be used for cursor movement
|
||||||
!addr M65_KB_PRESSED = $560 ; $560-$562 keys pressed, used during scanning keyboard
|
!addr M65_KB_PRESSED = $560 ; $560-$562 keys pressed, used during scanning keyboard
|
||||||
!addr M65_KB_PRESSED_OLD = $563 ; $563-$565 keys pressed during previous scan
|
!addr M65_KB_PRESSED_OLD = $563 ; $563-$565 keys pressed during previous scan
|
||||||
!addr M65_KB_PRESSED_NEW = $566 ; $566-$568 set of M65_KB_PRESSED minus M65_KB_PRESSED_OLD
|
!addr M65_KB_PRESSED_NEW = $566 ; $566-$568 set of M65_KB_PRESSED minus M65_KB_PRESSED_OLD
|
||||||
!addr M65_JOYCRSR = $569 ; joystick to be used for cursor movement
|
; $569-$5EB -- UNUSED --
|
||||||
; $56A-$5EB -- UNUSED --
|
|
||||||
!addr M65_DMAGIC_LIST = $5F1 ; $5EF-$5FF reserved for DMAgic list, 15 bytes (modulo bytes are not needed)
|
!addr M65_DMAGIC_LIST = $5F1 ; $5EF-$5FF reserved for DMAgic list, 15 bytes (modulo bytes are not needed)
|
||||||
!addr M65_RS232_INBUF = $600 ; $600-$6FF -- reserved for RS-232 input buffer --
|
!addr M65_RS232_INBUF = $600 ; $600-$6FF -- reserved for RS-232 input buffer --
|
||||||
!addr M65_RS232_OUTBUF = $700 ; $700-$7FF -- reserved for RS-232 output buffer --
|
!addr M65_RS232_OUTBUF = $700 ; $700-$7FF -- reserved for RS-232 output buffer --
|
||||||
|
|||||||
@@ -4,13 +4,21 @@
|
|||||||
|
|
||||||
m65_scnkey:
|
m65_scnkey:
|
||||||
|
|
||||||
|
; Initialize work variables for scanning the keyboard
|
||||||
|
|
||||||
|
lda M65_KB_PRESSED+0
|
||||||
|
sta M65_KB_PRESSED_OLD+0
|
||||||
|
lda M65_KB_PRESSED+1
|
||||||
|
sta M65_KB_PRESSED_OLD+1
|
||||||
|
lda M65_KB_PRESSED+2
|
||||||
|
sta M65_KB_PRESSED_OLD+2
|
||||||
|
|
||||||
|
jsr m65_scnkey_init_pressed
|
||||||
|
|
||||||
;
|
;
|
||||||
; Scan the whole keyboard, store results in memory
|
; Scan the whole keyboard, store results in memory
|
||||||
;
|
;
|
||||||
|
|
||||||
lda #$00
|
|
||||||
sta M65_KB_COLSUM
|
|
||||||
|
|
||||||
ldx #$08
|
ldx #$08
|
||||||
|
|
||||||
lda #%01111111
|
lda #%01111111
|
||||||
@@ -25,8 +33,6 @@ m65_scnkey_fetch_loop:
|
|||||||
lda KBSCN_PEEK
|
lda KBSCN_PEEK
|
||||||
eor #$FF ; let bit 1 mean 'pressed', not the otherwise
|
eor #$FF ; let bit 1 mean 'pressed', not the otherwise
|
||||||
sta M65_KB_COLSCAN, x
|
sta M65_KB_COLSCAN, x
|
||||||
ora M65_KB_COLSUM
|
|
||||||
sta M65_KB_COLSUM
|
|
||||||
dex
|
dex
|
||||||
bpl m65_scnkey_fetch_loop
|
bpl m65_scnkey_fetch_loop
|
||||||
|
|
||||||
@@ -80,16 +86,15 @@ m65_scnkey_keytab_set_done:
|
|||||||
; Scan the keyboard matrix stored in memory to determine which keys were pressed
|
; Scan the keyboard matrix stored in memory to determine which keys were pressed
|
||||||
;
|
;
|
||||||
|
|
||||||
lda M65_KB_PRESSED+0
|
lda M65_KB_COLSCAN+0 ; no loop here - for performance purposes
|
||||||
sta M65_KB_PRESSED_OLD+0
|
ora M65_KB_COLSCAN+1
|
||||||
lda M65_KB_PRESSED+1
|
ora M65_KB_COLSCAN+2
|
||||||
sta M65_KB_PRESSED_OLD+1
|
ora M65_KB_COLSCAN+3
|
||||||
lda M65_KB_PRESSED+2
|
ora M65_KB_COLSCAN+4
|
||||||
sta M65_KB_PRESSED_OLD+2
|
ora M65_KB_COLSCAN+5
|
||||||
|
ora M65_KB_COLSCAN+6
|
||||||
jsr m65_scnkey_init_pressed
|
ora M65_KB_COLSCAN+7
|
||||||
|
ora M65_KB_COLSCAN+8
|
||||||
lda M65_KB_COLSUM
|
|
||||||
beq m65_scnkey_try_joystick ; branch if no key was pressed
|
beq m65_scnkey_try_joystick ; branch if no key was pressed
|
||||||
|
|
||||||
ldx #$08
|
ldx #$08
|
||||||
|
|||||||
Reference in new issue
Block a user