Compare commits

..

No commits in common. "288a89ad0530abee1c0d6270db2edabde95ebe72" and "03221c5fb4d934c2cda0a0ed243193e6ad85d785" have entirely different histories.

4 changed files with 60 additions and 57 deletions

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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