wip
This commit is contained in:
parent
1a5fc8cc1b
commit
288a89ad05
25
spicode.s65
25
spicode.s65
@ -133,8 +133,8 @@ kbinit:
|
|||||||
|
|
||||||
|
|
||||||
irq_on_shift_reg:
|
irq_on_shift_reg:
|
||||||
lda #'{'
|
; lda #'{'
|
||||||
jsr lcd::print_char
|
; jsr lcd::print_char
|
||||||
lda kb::KB_IO + IO::SR
|
lda kb::KB_IO + IO::SR
|
||||||
sta key_read
|
sta key_read
|
||||||
stz kb::KB_IO + IO::SR
|
stz kb::KB_IO + IO::SR
|
||||||
@ -147,7 +147,6 @@ irq_on_shift_reg:
|
|||||||
sta kb::KB_IO + IO::IER
|
sta kb::KB_IO + IO::IER
|
||||||
; start timer
|
; start timer
|
||||||
lda #1
|
lda #1
|
||||||
lda #$10 ; todo remove
|
|
||||||
sta kb::KB_IO + IO::T2CH
|
sta kb::KB_IO + IO::T2CH
|
||||||
; lda #'}'
|
; lda #'}'
|
||||||
; jsr lcd::print_char
|
; jsr lcd::print_char
|
||||||
@ -184,31 +183,31 @@ irq_on_timer:
|
|||||||
rol ; rotate carry into byte, rotate startbit into carry
|
rol ; rotate carry into byte, rotate startbit into carry
|
||||||
; TODO byte is inverted, maybe consider wasting 256 bytes for a bit reverse lookup table?
|
; TODO byte is inverted, maybe consider wasting 256 bytes for a bit reverse lookup table?
|
||||||
sta keycode
|
sta keycode
|
||||||
jsr lcd::print_char
|
|
||||||
|
|
||||||
stz key_read
|
stz key_read
|
||||||
stz key_read+1
|
stz key_read+1
|
||||||
|
|
||||||
lda #'>'
|
Strf "kc:%x", out_str, keycode
|
||||||
jsr lcd::print_char
|
PrintNC out_str
|
||||||
rts
|
rts
|
||||||
|
|
||||||
key_read: .res 2
|
key_read: .res 2
|
||||||
keycode: .res 1
|
keycode: .res 1
|
||||||
kb_irq1:
|
kb_irq1:
|
||||||
lda #'!'
|
; lda #'!'
|
||||||
jsr lcd::print_char
|
; jsr lcd::print_char
|
||||||
jsr irq_on_shift_reg
|
jsr irq_on_shift_reg
|
||||||
lda #':'
|
; lda #':'
|
||||||
jsr lcd::print_char
|
; jsr lcd::print_char
|
||||||
rts
|
rts
|
||||||
.byte '='
|
.byte '='
|
||||||
kb_irq2:
|
kb_irq2:
|
||||||
lda #'?'
|
; lda #'?'
|
||||||
jsr lcd::print_char
|
; jsr lcd::print_char
|
||||||
jsr irq_on_timer
|
jsr irq_on_timer
|
||||||
lda #';'
|
lda #';'
|
||||||
jsr lcd::print_char
|
jsr lcd::print_char
|
||||||
rts
|
rts
|
||||||
.byte '@'
|
.byte '@'
|
||||||
|
|
||||||
|
out_str: .res 40
|
||||||
|
|
||||||
|
@ -1,43 +1,43 @@
|
|||||||
.include "irq_handler.h65"
|
; .include "irq_handler.h65"
|
||||||
.bss
|
; .bss
|
||||||
|
|
||||||
|
|
||||||
.code
|
; .code
|
||||||
|
|
||||||
.proc register_via_handler
|
; .proc register_via_handler
|
||||||
.endproc
|
; .endproc
|
||||||
|
|
||||||
.proc remove_via_handler
|
; .proc remove_via_handler
|
||||||
.endproc
|
; .endproc
|
||||||
|
|
||||||
.proc main_handler
|
; .proc main_handler
|
||||||
Print "Unknown IRQ"
|
; Print "Unknown IRQ"
|
||||||
rti
|
; rti
|
||||||
.endproc
|
; .endproc
|
||||||
|
|
||||||
.zeropage
|
; .zeropage
|
||||||
tmp: .res 1
|
; tmp: .res 1
|
||||||
|
|
||||||
.macro VIAHandler via_addr, via_handlers_table
|
; .macro VIAHandler via_addr, via_handlers_table
|
||||||
lda via_addr + IO::IFR
|
; lda via_addr + IO::IFR
|
||||||
sta tmp
|
; sta tmp
|
||||||
bbr7 tmp,@rts ; irq
|
; bbr7 tmp,@rts ; irq
|
||||||
bbs0 tmp,@ca2
|
; bbs0 tmp,@ca2
|
||||||
bbs1 tmp,@ca1
|
; bbs1 tmp,@ca1
|
||||||
bbs2 tmp,@sr
|
; bbs2 tmp,@sr
|
||||||
bbs3 tmp,@cb2
|
; bbs3 tmp,@cb2
|
||||||
bbs4 tmp,@cb1
|
; bbs4 tmp,@cb1
|
||||||
bbs5 tmp,@t2
|
; bbs5 tmp,@t2
|
||||||
bbs6 tmp,@t1
|
; bbs6 tmp,@t1
|
||||||
; TODO error, one should have been true
|
; ; TODO error, one should have been true
|
||||||
stp
|
; stp
|
||||||
@rts:
|
; @rts:
|
||||||
rts
|
; rts
|
||||||
@ca2: jmp (via_handlers_table)
|
; @ca2: jmp (via_handlers_table)
|
||||||
@ca1: jmp (via_handlers_table+2)
|
; @ca1: jmp (via_handlers_table+2)
|
||||||
@sr: jmp (via_handlers_table+4)
|
; @sr: jmp (via_handlers_table+4)
|
||||||
@cb2: jmp (via_handlers_table+6)
|
; @cb2: jmp (via_handlers_table+6)
|
||||||
@cb1: jmp (via_handlers_table+8)
|
; @cb1: jmp (via_handlers_table+8)
|
||||||
@t2: jmp (via_handlers_table+10)
|
; @t2: jmp (via_handlers_table+10)
|
||||||
@t1: jmp (via_handlers_table+12)
|
; @t1: jmp (via_handlers_table+12)
|
||||||
.endmacro
|
; .endmacro
|
||||||
|
Loading…
Reference in New Issue
Block a user