📄 ir_thomson.asm
字号:
.if IR_THOMSON
inc markcount
inc spacecount
inc synccount
inc bit01count
lda IrStateFlag
cmp #IR_MARK_STATE
beq preprocessmark
cmp #IR_SPACE_STATE
beq preprocessspace
cmp #IR_SYNC_STATE
beq preprocesssync
cmp #IR_BIT01_STATE
beq preprocessbit01
cmp #BEGIN_FROM_HEAD
beq beginning
preprocessmark:
jmp processmark
preprocessspace:
jmp processspace
preprocesssync:
jmp processsync
preprocessbit01:
jmp processbit01
beginning:
lda IR_PORT
and #IR_IN
bne exit1
lda #0
sta markcount
lda #IR_MARK_STATE
sta IrStateFlag
exit1:
jmp PreIrqExit
;;-----------------------------------------------
SRAM_PG1: .section ;;PAGE1 start
;;-----------------------------------------------
processmark:
lda IR_PORT
and #IR_IN
beq exit2
lda markcount
cmp #34 ;;36
bcc fromhead
lda #IR_SPACE_STATE
sta IrStateFlag
lda #0
sta spacecount
exit2:
jmp PreIrqExit
processspace:
lda IR_PORT
and #IR_IN
bne exit3
lda spacecount
cmp #34 ;;36
bcc fromhead
lda #IR_SYNC_STATE
sta IrStateFlag
lda #0
sta synccount
exit3:
jmp PreIrqExit
processsync:
lda IR_PORT
and #IR_IN
beq exit4
lda synccount
cmp #3 ;;4
bcc fromhead
lda #IR_BIT01_STATE
sta IrStateFlag
lda #0
sta bit01count
exit4:
jmp PreIrqExit
processbit01:
lda IR_PORT
and #IR_IN
bne exit5
lda bit01count
cmp #15 ;;18
bcc checknext
lda #1
sta bitis0
lda #IR_SYNC_STATE
sta IrStateFlag
lda #0
sta synccount
bra exit5
checknext:
lda bit01count
cmp #7 ;;9
bcc fromhead
lda #1
sta bitis1
lda #IR_SYNC_STATE
sta IrStateFlag
lda #0
sta synccount
exit5:
jmp PreIrqExit
fromhead:
lda #BEGIN_FROM_HEAD
sta IrStateFlag
stz datacount
jmp PreIrqExit
PreIrqExit:
lda datacount
cmp #12
beq sendIRdata
lda bitis0
cmp #1
bne check_next_bit
lda #0
sta bitis0
inc datacount
clc
bra receive
check_next_bit:
lda bitis1
cmp #1
bne end_exit
lda #0
sta bitis1
inc datacount
sec
receive:
rol Receiver1
rol Receiver2
bra end_exit
sendIRdata:
inc repeattimes
lda repeattimes
cmp #3
bne next
stz repeattimes
lda IOP_DATA5_H
ora #$80
sta IOP_DATA5_H
lda Receiver1
eor #%11111111
sta IOP_DATA5_L
lda Receiver2
sta IOP_DATA6_L
next:
stz Receiver1
stz Receiver2
lda #0
sta datacount
lda #BEGIN_FROM_HEAD
sta IrStateFlag
end_exit:
jmp lIrqIrExit
.endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -