unrolled a loop for better performance
This commit is contained in:
1 parent
c7f9f0ae34
commit
d01c7e8ac9
1 file changed
+51
-10
@@ -25,26 +25,67 @@ m65_scnkey:
|
|||||||
and KBSCN_BUCKY
|
and KBSCN_BUCKY
|
||||||
sta M65_KB_BUCKY
|
sta M65_KB_BUCKY
|
||||||
|
|
||||||
; FALLTROUGH
|
stx KBSCN_SELECT ; no loop here, for performance and accuracy purposes
|
||||||
|
|
||||||
m65_scnkey_fetch_loop:
|
|
||||||
|
|
||||||
stx KBSCN_SELECT
|
|
||||||
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+8
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bpl m65_scnkey_fetch_loop
|
stx KBSCN_SELECT
|
||||||
|
lda KBSCN_PEEK
|
||||||
|
eor #$FF
|
||||||
|
sta M65_KB_COLSCAN+7
|
||||||
|
|
||||||
|
dex
|
||||||
|
stx KBSCN_SELECT
|
||||||
|
lda KBSCN_PEEK
|
||||||
|
eor #$FF
|
||||||
|
sta M65_KB_COLSCAN+6
|
||||||
|
|
||||||
|
dex
|
||||||
|
stx KBSCN_SELECT
|
||||||
|
lda KBSCN_PEEK
|
||||||
|
eor #$FF
|
||||||
|
sta M65_KB_COLSCAN+5
|
||||||
|
|
||||||
|
dex
|
||||||
|
stx KBSCN_SELECT
|
||||||
|
lda KBSCN_PEEK
|
||||||
|
eor #$FF
|
||||||
|
sta M65_KB_COLSCAN+4
|
||||||
|
|
||||||
|
dex
|
||||||
|
stx KBSCN_SELECT
|
||||||
|
lda KBSCN_PEEK
|
||||||
|
eor #$FF
|
||||||
|
sta M65_KB_COLSCAN+3
|
||||||
|
|
||||||
|
dex
|
||||||
|
stx KBSCN_SELECT
|
||||||
|
lda KBSCN_PEEK
|
||||||
|
eor #$FF
|
||||||
|
sta M65_KB_COLSCAN+2
|
||||||
|
|
||||||
|
dex
|
||||||
|
stx KBSCN_SELECT
|
||||||
|
lda KBSCN_PEEK
|
||||||
|
eor #$FF
|
||||||
|
sta M65_KB_COLSCAN+1
|
||||||
|
|
||||||
|
dex
|
||||||
|
stx KBSCN_SELECT
|
||||||
|
lda KBSCN_PEEK
|
||||||
|
eor #$FF
|
||||||
|
sta M65_KB_COLSCAN+0
|
||||||
|
|
||||||
;
|
;
|
||||||
; Retrieve SHIFT / VENDOR / CTRL / ALT / NO SCROLL / CAPS LOCK status
|
; Calculate SHIFT / VENDOR / CTRL / ALT / NO SCROLL / CAPS LOCK status
|
||||||
;
|
;
|
||||||
|
|
||||||
lda SHFLAG
|
lda SHFLAG
|
||||||
sta LSTSHF ; needed for SHIFT+VENDOR support
|
sta LSTSHF ; needed for SHIFT+VENDOR support
|
||||||
|
|
||||||
inx ; .X goes from $FF to $00
|
stx SHFLAG ; .X is $00 here
|
||||||
stx SHFLAG
|
|
||||||
|
|
||||||
lda M65_KB_BUCKY
|
lda M65_KB_BUCKY
|
||||||
dex ; index into kb_matrix_bucky_shflag
|
dex ; index into kb_matrix_bucky_shflag
|
||||||
|
|||||||
Reference in new issue
Block a user