Compare commits
No commits in common. "288a89ad0530abee1c0d6270db2edabde95ebe72" and "03221c5fb4d934c2cda0a0ed243193e6ad85d785" have entirely different histories.
288a89ad05
...
03221c5fb4
9
main.s65
9
main.s65
@ -65,7 +65,7 @@ irq:
|
||||
@irq_io1:
|
||||
lda IO1 + IO::IFR
|
||||
sta irq_via_ifr
|
||||
bbr7 irq_via_ifr,@irq_io2 ; skip
|
||||
bbr7 irq_via_ifr,@irq_io1 ; skip
|
||||
bbs2 irq_via_ifr,@irq_kb1 ; shit reg -> first 8 bits
|
||||
bbs5 irq_via_ifr,@irq_kb2 ; timer -> last 3 bits
|
||||
@irq_io2:
|
||||
@ -82,8 +82,7 @@ irq:
|
||||
lda #$ff
|
||||
sta IO1 + IO::IFR
|
||||
sta IO2 + IO::IFR
|
||||
rti
|
||||
; bra @irq_return
|
||||
bra @irq_return
|
||||
@irq_keypad:
|
||||
jsr kp::read_irq
|
||||
bra @irq_return
|
||||
@ -91,11 +90,11 @@ irq:
|
||||
jsr spi_p::read
|
||||
bra @irq_return
|
||||
@irq_kb1:
|
||||
PrintNC "<30>"
|
||||
Print "$3000"
|
||||
jsr $3000
|
||||
bra @irq_return
|
||||
@irq_kb2:
|
||||
PrintNC "<31>"
|
||||
Print "$3100"
|
||||
jsr $3100
|
||||
bra @irq_return
|
||||
; @irq_dht:
|
||||
|
@ -32,13 +32,16 @@ status_str: .res 17 ; 16 + null
|
||||
@check_byte:
|
||||
lda spi_p::bytes_written
|
||||
cmp trans_bytes
|
||||
beq @read_keypad
|
||||
@byte_written:
|
||||
sta trans_bytes
|
||||
bne @byte_written
|
||||
@check_page:
|
||||
lda spi_p::pages_written
|
||||
cmp trans_pages
|
||||
beq @read_keypad
|
||||
bne @page_written
|
||||
bra @read_keypad
|
||||
@byte_written:
|
||||
sta trans_bytes
|
||||
; bra @print_status
|
||||
bra @read_keypad
|
||||
@page_written:
|
||||
sta trans_pages
|
||||
bra @print_status
|
||||
|
25
spicode.s65
25
spicode.s65
@ -133,8 +133,8 @@ kbinit:
|
||||
|
||||
|
||||
irq_on_shift_reg:
|
||||
; lda #'{'
|
||||
; jsr lcd::print_char
|
||||
lda #'{'
|
||||
jsr lcd::print_char
|
||||
lda kb::KB_IO + IO::SR
|
||||
sta key_read
|
||||
stz kb::KB_IO + IO::SR
|
||||
@ -147,6 +147,7 @@ irq_on_shift_reg:
|
||||
sta kb::KB_IO + IO::IER
|
||||
; start timer
|
||||
lda #1
|
||||
lda #$10 ; todo remove
|
||||
sta kb::KB_IO + IO::T2CH
|
||||
; lda #'}'
|
||||
; jsr lcd::print_char
|
||||
@ -183,31 +184,31 @@ irq_on_timer:
|
||||
rol ; rotate carry into byte, rotate startbit into carry
|
||||
; TODO byte is inverted, maybe consider wasting 256 bytes for a bit reverse lookup table?
|
||||
sta keycode
|
||||
jsr lcd::print_char
|
||||
|
||||
stz key_read
|
||||
stz key_read+1
|
||||
|
||||
Strf "kc:%x", out_str, keycode
|
||||
PrintNC out_str
|
||||
lda #'>'
|
||||
jsr lcd::print_char
|
||||
rts
|
||||
|
||||
key_read: .res 2
|
||||
keycode: .res 1
|
||||
kb_irq1:
|
||||
; lda #'!'
|
||||
; jsr lcd::print_char
|
||||
lda #'!'
|
||||
jsr lcd::print_char
|
||||
jsr irq_on_shift_reg
|
||||
; lda #':'
|
||||
; jsr lcd::print_char
|
||||
lda #':'
|
||||
jsr lcd::print_char
|
||||
rts
|
||||
.byte '='
|
||||
kb_irq2:
|
||||
; lda #'?'
|
||||
; jsr lcd::print_char
|
||||
lda #'?'
|
||||
jsr lcd::print_char
|
||||
jsr irq_on_timer
|
||||
lda #';'
|
||||
jsr lcd::print_char
|
||||
rts
|
||||
.byte '@'
|
||||
|
||||
out_str: .res 40
|
||||
|
||||
|
@ -1,43 +1,43 @@
|
||||
; .include "irq_handler.h65"
|
||||
; .bss
|
||||
.include "irq_handler.h65"
|
||||
.bss
|
||||
|
||||
|
||||
; .code
|
||||
.code
|
||||
|
||||
; .proc register_via_handler
|
||||
; .endproc
|
||||
.proc register_via_handler
|
||||
.endproc
|
||||
|
||||
; .proc remove_via_handler
|
||||
; .endproc
|
||||
.proc remove_via_handler
|
||||
.endproc
|
||||
|
||||
; .proc main_handler
|
||||
; Print "Unknown IRQ"
|
||||
; rti
|
||||
; .endproc
|
||||
.proc main_handler
|
||||
Print "Unknown IRQ"
|
||||
rti
|
||||
.endproc
|
||||
|
||||
; .zeropage
|
||||
; tmp: .res 1
|
||||
.zeropage
|
||||
tmp: .res 1
|
||||
|
||||
; .macro VIAHandler via_addr, via_handlers_table
|
||||
; lda via_addr + IO::IFR
|
||||
; sta tmp
|
||||
; bbr7 tmp,@rts ; irq
|
||||
; bbs0 tmp,@ca2
|
||||
; bbs1 tmp,@ca1
|
||||
; bbs2 tmp,@sr
|
||||
; bbs3 tmp,@cb2
|
||||
; bbs4 tmp,@cb1
|
||||
; bbs5 tmp,@t2
|
||||
; bbs6 tmp,@t1
|
||||
; ; TODO error, one should have been true
|
||||
; stp
|
||||
; @rts:
|
||||
; rts
|
||||
; @ca2: jmp (via_handlers_table)
|
||||
; @ca1: jmp (via_handlers_table+2)
|
||||
; @sr: jmp (via_handlers_table+4)
|
||||
; @cb2: jmp (via_handlers_table+6)
|
||||
; @cb1: jmp (via_handlers_table+8)
|
||||
; @t2: jmp (via_handlers_table+10)
|
||||
; @t1: jmp (via_handlers_table+12)
|
||||
; .endmacro
|
||||
.macro VIAHandler via_addr, via_handlers_table
|
||||
lda via_addr + IO::IFR
|
||||
sta tmp
|
||||
bbr7 tmp,@rts ; irq
|
||||
bbs0 tmp,@ca2
|
||||
bbs1 tmp,@ca1
|
||||
bbs2 tmp,@sr
|
||||
bbs3 tmp,@cb2
|
||||
bbs4 tmp,@cb1
|
||||
bbs5 tmp,@t2
|
||||
bbs6 tmp,@t1
|
||||
; TODO error, one should have been true
|
||||
stp
|
||||
@rts:
|
||||
rts
|
||||
@ca2: jmp (via_handlers_table)
|
||||
@ca1: jmp (via_handlers_table+2)
|
||||
@sr: jmp (via_handlers_table+4)
|
||||
@cb2: jmp (via_handlers_table+6)
|
||||
@cb1: jmp (via_handlers_table+8)
|
||||
@t2: jmp (via_handlers_table+10)
|
||||
@t1: jmp (via_handlers_table+12)
|
||||
.endmacro
|
||||
|
Loading…
Reference in New Issue
Block a user