📄 pt6554.asm
字号:
.ifnz PT6554
fProcessVfdWrite:
inx pt6554_count
inx pt6554_count
;;STB=0
rmb VFD_STB_bit,VFD_PORT
lda #%01000010
sta rOutBuffer
jsr fSentOneByte
;;STB=1
smb VFD_STB_bit,VFD_PORT
lda IOP_DATA0_L
and #VFD_DAT_LN_MASK
sta pt6554_count
lda #6
sta pt6554_display_length
ldx #0
pt6554_SentDataloop:
lda IOP_DATA2_L,x
sta rOutBuffer
jsr fSentOneByte
inx
cpx pt6554_display_length
bne pt6554_SentDataloop
lda pt6554_count
cmp #1
bne next1
lda #%00000011
sta rOutBuffer
jsr fSentOneByte
bra pt6554_end
next1:
cmp #6
bne next2
lda #%10000000
sta rOutBuffer
jsr fSentOneByte
bra pt6554_end
next2:
cmp #3
bne next3
lda #%01000000
sta rOutBuffer
jsr fSentOneByte
bra pt6554_end
next3:
cmp #4
bne pt6554_end
lda #%11000000
sta rOutBuffer
jsr fSentOneByte
lda #0
sta pt6554_count
pt6554_end:
;;STB=0
rmb VFD_STB_bit,VFD_PORT
rmb VFD_CLK_bit,VFD_PORT
rts
;;*************************************************************
;;Function : spl10 fProcessVfdRead
;;Description : process VFD read function
;;Input : parameter on memory
;;Output : data memory
;;**************************************************************
fProcessVfdRead:
rmb VFD_STB_bit,VFD_PORT
bbs VFD_DATA_IN_bit,VFD_DATA_IN_PORT,pt6554_data_is_High
lda #%01000011
sta rOutBuffer
jsr fSentOneByte
smb VFD_STB_bit,VFD_PORT
jsr fReceiveOneByte
ldx #30
check_next_bit:
ror pt6554_receiver
ror pt6554_receiver+1
ror pt6554_receiver+2
ror pt6554_receiver+3
bcc next_loop
stx VfdResponse1
bra pt6554_data_is_High
next_loop:
dex
bne check_next_bit
pt6554_data_is_High:
stz pt6554_receiver+1
stz pt6554_receiver+2
stz pt6554_receiver+3
lda #2
sta pt6554_receiver
rmb VFD_STB_bit,VFD_PORT
rmb VFD_CLK_bit,VFD_PORT
rts
;;**************************************************************
;;Function : sent byte to spl10
;;Description : if rSpl10CtrlFlag=1 ,indication communication fail
;;Input : rOutBuffer
;;Output : NONE
;;**************************************************************
fSentOneByte:
ldy #8
clc
SentOneBit:
rmb VFD_CLK_bit,VFD_PORT ;;clk=0
ror rOutBuffer
bcs lDataIsHigh
rmb VFD_DATA_bit,VFD_DATA_PORT
bra DataIsSet
lDataIsHigh:
smb VFD_DATA_bit,VFD_DATA_PORT
DataIsSet:
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
smb VFD_CLK_bit,VFD_PORT ;;clk=1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
dey
bne SentOneBit
SentOneBytefail:
rts
;;***********************************************
;;fReceiveOneByte
;;**********************************************
fReceiveOneByte:
lReceiveOneBit:
;;clk=0
rmb VFD_CLK_bit,VFD_PORT
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
;;clk=1
smb VFD_CLK_bit,VFD_PORT
bbs VFD_DATA_IN_bit,VFD_DATA_IN_PORT,lRevDataIsHigh
lRevDataIsLow:
clc
bra lRevOk
lRevDataIsHigh:
sec
lRevOk:
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
jsr fDelay1
rol pt6554_receiver
rol pt6554_receiver+1
rol pt6554_receiver+2
rol pt6554_receiver+3
bcc lReceiveOneBit
rts
.endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -