This commit is contained in:
Matthias@Dell 2023-12-21 17:28:02 +01:00
parent 0e774c5c86
commit 03221c5fb4
2 changed files with 55 additions and 0 deletions

12
system/irq_handler.h65 Normal file
View File

@ -0,0 +1,12 @@
;********************************************************************************
; @module irq_handler
; @type system
;********************************************************************************
.ifndef INCLUDE_IRQ_HANDLER
INCLUDE_IRQ_HANDLER = 1
.scope irq
.endscope
.endif

43
system/irq_handler.s65 Normal file
View File

@ -0,0 +1,43 @@
.include "irq_handler.h65"
.bss
.code
.proc register_via_handler
.endproc
.proc remove_via_handler
.endproc
.proc main_handler
Print "Unknown IRQ"
rti
.endproc
.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