Piccola modifica per sfruttare anche combinazioni di Shift e C= con i tasti funzione, arrivando a coprire tutti i 16 valori possibili.
relocme
rorg irq
; salvo lo stato di $dc00
lda $dc00
pha
; imposto la lettura dei tasti funzione
; direttamente dalla keymatrix
lda #$fe
sta $dc00
lda $dc01
; salvo il valore letto
sta $02
; ripristino $dc00
pla
sta $dc00
; ora confrontiamo se e' stato premuto un fkey
ldx #3
ck
lda $02
cmp table,x
beq setthis
dex
bpl ck
; nessun tasto dei 4 previsti, esci
BMI EXIT
setthis
; ora ho l'indice 0-3
; devo settare $04,$14,$24,$34
; +shift $44,$54,$64,$74
; +cbm $84,$94,$a4,$b4
; +shift+cbm $c4,$d4,$e4,$f4
txa
asl;*2
asl;*4
asl;*8
asl;*16
sta $02
lda $028D;: shift status
asl
asl
asl
asl
asl
asl;*64
clc
adc $02
adc #04
sta $d018
;solo per debug, dal colore so se setto
;il nybble alto correttamente
;lsr
;lsr
;lsr
;lsr
;sta $d020
EXIT
jmp $ea31