📄 interrupt.asm
字号:
;-------------------------
; Test for interrupts
;-------------------------
org 0x0000 ; reset
jmpa al 0x1000
org 0x0004 ; nmi
jmpa al 0x2000
org 0x0008 ; div 0
jmpa al 0x2500
org 0x0020 ; int 8
jmpa al 0x3000
org 0x0090 ; int 24
jmpa al 0x3500
; reset routine
org 0x1000
ldi r0 0xaa
ldi r1 0x00
udiv r1 ; create a div0
lda r1 0xffe0
ldi r0 0x23
cmp r1 ; check weather div-0 routine got executed
jmpa ne error
; nmi
ldi r0 0x55
sta r0 0x6780 ; inmi
nop
nop
ldi r0 0x47
lda r1 0xff27
cmp r1 ; check weather nmi routine got executed
jmpa ne error
nop
nop
nop
; int
ldi r0 0x10
wrps ; enable interrupt
ldi r0 0x08
sta r0 0x6782 ; int vector adress
ldi r0 0x55
sta r0 0x6781 ; int
nop
nop
ldi r1 0xd6
lda r0 0xff98
cmp r1 ; check weather int routine got executed
jmpa ne error
nop
nop
nop
; both nmi and int at the same time
ldi r0 0x22
sta r0 0xff27
ldi r0 0x22
sta r0 0xff98
ldi r0 0x55
sta r0 0x6783 ; inmi
nop
nop
ldi r0 0x47
lda r1 0xff27
cmp r1 ; check weather nmi routine got executed
jmpa ne error
ldi r1 0xd6
lda r0 0xff98
cmp r1 ; check weather int routine got executed
jmpa ne error
nop
nop
nop
ldi r0 0x24
sta r0 0x6782 ; int vector adress
ldi r0 0x55
sta r0 0x6781 ; int
nop
nop
ldi r1 0x45
lda r0 0xff97
cmp r1 ; check weather int routine got executed
jmpa ne error
nop
nop
nop
; make sure ie works
ldi r0 0x00
wrps ; disable interrupt
ldi r0 0x22
sta r0 0xff98
ldi r0 0x55
sta r0 0x6781 ; int
ldi r1 0x22
lda r0 0xff98
cmp r1 ; check weather int routine didn't get executed
jmpa ne error
nop
nop
jmpr al finish
error:
ldi r0 0xa2
sta r0 0x1234
jmpr al skip
finish:
ldi r0 0x55
sta r0 0xffff
skip:
nop
nop
; nmi routine
org 0x2000
ldi r0 0x47
sta r0 0xff27
ret
; div-0 routine
org 0x2500
ldi r0 0x23
sta r0 0xffe0
ret
; int-8 routine
org 0x3000
ldi r0 0xd6
sta r0 0xff98
ret
; int-24 routine
org 0x3500
ldi r0 0x45
sta r0 0xff97
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -