📄 caldisp.asm
字号:
;------------------------------------------------------------------------
;------------------------------------------------------------------------
Leftchk:
lda0 .DataDP
cmpe #C_ZERO
brz leftchkend
PP2One()
lda0 .SFDP
cmpe #C_ZERO
brnz doleftchk
br leftchkend
doleftchk:
call Clrfullmatrix
notfullleft:
PP2One()
lda #C_12
sta GetCount
lda #C_TWO
sta cmpPP
lda #C_ZERO
sta cmpDP
nfleftloop:
call Addplace
call Chklength
PP2One()
lda GetCount
suba displength
sta GetCount
brnc fullleft
lda0 .SFDP
cmpe cmpDP
brnz nfleftloop
nfldisp:
PP2One()
lda #C_11
sta GetCount
lda #C_TWO
sta cmpPP
lda #C_ZERO
sta cmpDP
nfldisploop:
call Addplace
PP2One()
lda0 .SFDP
cmpe cmpDP
brnz keepnfldisp
lda GetCount
sta blankCount
keepnfldisp:
call Font2disp
lda GetCount
cmpe #MAX
brz leftchkend
lda0 .DataDP
cmpe cmpDP
brnz nfldisploop
br leftchkend
fullleft:
PP2One()
lda #C_12
sta GetCount
lda #C_TWO
sta cmpPP
lda0 .SFDP
sta cmpDP
leftloop:
call Decplace
call Chklength
PP2One()
lda GetCount
suba displength
sta GetCount
brnc set2leftdisp
lda cmpDP
cmpe #C_ZERO
brnz leftloop
br set2leftdisp
set2leftdisp:
PP2One()
lda #C_11
sta GetCount
call Addplace
leftdisploop:
call Addplace
PP2One()
lda0 .SFDP
cmpe cmpDP
brnz keepleftdisp
lda GetCount
sta blankCount
keepleftdisp:
call Font2disp
lda GetCount
cmpe #MAX
brz leftchkend
lda0 .DataDP
cmpe cmpDP
brnz leftdisploop
leftchkend:
ret
;------------------------------------------------------------------------
Rightchk::
PP2One()
lda .SetFlag
anda #BLANKCHK
brnz Matrixanschk
lda0 .SFDP
cmpe #C_ZERO
brnz dorightchk
br lastchk
dorightchk:
lda0 .DataDP
cmpe #C_ZERO
brz rightchkend
call Clrfullmatrix
notfullright:
PP2One()
lda #C_12
sta GetCount
lda #C_TWO
sta cmpPP
lda #C_ZERO
sta cmpDP
nfrightloop:
call Addplace
call Chklength
PP2One()
lda GetCount
suba displength
sta GetCount
brnc fullright
lda0 .SFDP
cmpe cmpDP
brnz nfrightloop
br nfrdisp
nfrdisp:
PP2One()
lda #C_11
sta GetCount
lda #C_TWO
sta cmpPP
lda #C_ZERO
sta cmpDP
nfrdisploop:
call Addplace
PP2One()
lda0 .SFDP
cmpe cmpDP
brnz keepnfrdisp
lda GetCount
sta blankCount
keepnfrdisp:
call Font2disp
lda GetCount
cmpe #MAX
brz rightchkend
lda0 .DataDP
cmpe cmpDP
brnz nfrdisploop
br rightchkend
fullright:
PP2One()
lda #C_12
sta GetCount
lda #C_TWO
sta cmpPP
lda0 .SFDP
sta cmpDP
rightloop:
call Decplace
call Chklength
PP2One()
lda GetCount
suba displength
sta GetCount
brnc set2rightdisp
lda cmpDP
cmpe #C_ZERO
brnz rightloop
br set2rightdisp
set2rightdisp:
PP2One()
lda #C_11
sta GetCount
call Addplace
rightdisploop:
call Addplace
PP2One()
lda0 .SFDP
cmpe cmpDP
brnz keeprightdisp
lda GetCount
sta blankCount
keeprightdisp:
call Font2disp
lda GetCount
cmpe #MAX
brz rightchkend
lda0 .DataDP
cmpe cmpDP
brnz rightdisploop
br rightchkend
lastchk:
PP2Zero()
lda .SFDP
cmpe .DataDP
brnz keepdolast
call Clrfullmatrix
PP2One()
call Rekeyindisp2
clrpage2:
call ClrPP2
PP2One()
br rightchkend
keepdolast:
call Clrfullmatrix
PP2One()
lda #C_11
sta GetCount
lda #C_TWO
sta cmpPP
lda #C_ZERO
sta cmpDP
chkoverloop:
call Addplace
call Chklength
PP2One()
lda GetCount
suba displength
sta GetCount
brnc Fulldisp
lda0 .DataDP
cmpe cmpDP
brnz chkoverloop
br notoverdisp
notoverdisp:
PP2One()
lda #C_11
sta GetCount
lda #C_TWO
sta cmpPP
lda #C_ZERO
sta cmpDP
novdisploop:
call Addplace
call Font2disp
PP2One()
lda0 .DataDP
cmpe cmpDP
brnz novdisploop
lda GetCount
sta blankCount
rightchkend:
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
Matrixanschk:
lda0 .DataDP
cmpe #C_ZERO
brz Matrixanschkend
call Clrfullmatrix
Mansdisp:
PP2One()
lda #C_11
sta GetCount
lda #C_TWO
sta cmpPP
lda #C_ZERO
sta cmpDP
Mdisploop:
call Addplace
call Font2disp
lda GetCount
cmpe #MAX
brz Matrixanschkend
PP2One()
lda0 .DataDP
cmpe cmpDP
brnz Mdisploop
Matrixanschkend:
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
Chkkeylr::
lda #>ErrorFlag
sta PP
lda #<ErrorFlag
sta DP
lda i
cmpe #C_ZERO
brnz chkkeylrend0
PP2One()
lda #C_ZERO
sta Insetflag
lda .SFlag
anda #EQUCHK
brnz chkkeyEqu
lda0 .KeyPos
cmpe #LEFTKEY
brz LeftGo
cmpe #RIGHTKEY
brz RightGo
br chkkeylrend1
chkkeyEqu:
lda0 .KeyPos
cmpe #LEFTKEY
brz chkkeylrend2
cmpe #RIGHTKEY
brz chkkeylrend3
br chkkeylrend1
LeftGo:
PP2One()
lda0 .SFDP
cmpe #C_ZERO
brnz 3$
2$:
lda0 .DataDP
sta0 .SFDP
br chkkeylrend0
3$:
lda #C_TWO
sta cmpPP
lda0 .SFDP
sta cmpDP
call Decplace
lda cmpDP
cmpe #C_ZERO
brnz 4$
br chkkeylrend4
4$:
lda cmpDP
sta0 .SFDP
br chkkeylrend0
RightGo:
PP2One()
lda0 .SFDP
cmpe #C_ZERO
brz chkkeylrend4
1$:
PP2Zero()
lda .SFDP
cmpe .DataDP
brnz 2$
PP2One()
br chkkeylrend1
2$: PP2One()
lda #C_TWO
sta cmpPP
lda0 .SFDP
sta cmpDP
call Addplace
lda cmpDP
sta0 .SFDP
br chkkeylrend0
chkkeylrend4:
lda .SFlag
anda #~ACCHK
sta .SFlag
lda #C_TWO
br chkkeylrend
chkkeylrend3:
PP2One()
lda .SetFlag
anda #~BLANKCHK
sta .SetFlag
lda #C_ZERO
sta cmpDP
lda #C_TWO
sta cmpPP
call Addplace
lda cmpDP
sta0 .SFDP
br chkkeylrend0
chkkeylrend2:
PP2One()
lda .SetFlag
anda #~BLANKCHK
sta .SetFlag
lda #RIGHTKEY
sta0 .KeyPos
chkkeylrend1:
lda #C_ZERO
sta0 .SFDP
chkkeylrend0:
lda #>.SRFlag
sta PP
lda #C_ZERO
sta .SRFlag
PP2One()
lda .SFlag
anda #~(ACCHK|EQUCHK)
sta .SFlag
lda T1Flag
ora #TIMEGO
sta T1Flag
lda #C_ZERO
sta t1count
lda #C_ONE
chkkeylrend:
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
T1chkblank::
allblankchk:
PP2One()
lda T1Flag
anda #TIMEGO
brz T1chkblankend1
lda0 ErrorFlag
cmpe #C_ZERO
brnz T1chkblankend ;ChkT1end
lda0 .ModeFlag
anda #MASKLO
brnz T1chkblankend ;ChkT1end
lda BasenFlag
anda #MASKHI
brnz T1chkblankend ;ChkT1end
lda .SetFlag
anda #(DRGCHK|BLANKCHK)
brnz T1chkblankend ;ChkT1end
lda .SFlag
anda #ACCHK
brnz normalblank
lda blankCount
cmpe #MAX
brnz 1$
lda #C_ZERO
sta blankCount
1$:
lda0 .SFDP
cmpe #C_ZERO
brnz spblank
normalblank:
lda0 .DataDP
cmpe #WILLFULL
brnc 0$
lda t1count
cmpe #C_ZERO
brz 1$
cmpe #C_ONE
brz Display_t1
cmpe #C_SEVEN
brz 2$
cmpe #C_EIGHT
brz Display_t1
br T1chkblankend
0$: lda t1count
cmpe #C_ONE
brz Display_t1_1
cmpe #C_TWO
brz Display_t1_2
cmpe #C_THREE
brz Display_t1_3
cmpe #C_FOUR
brz Display_t1_4
cmpe #C_FIVE
brz Display_t1_5
cmpe #C_SIX
brz Display_t1_6
cmpe #C_SEVEN
brz 2$
cmpe #C_EIGHT
brz Display_t1_1
cmpe #C_NINE
brz Display_t1_2
cmpe #C_TEN
brz Display_t1_3
cmpe #C_11
brz Display_t1_4
cmpe #C_12
brz Display_t1_5
cmpe #C_13
brz Display_t1_6
1$: lda Insetflag
cmpe #C_ONE
brz 12$
lda .SFlag
anda #ACCHK
brnz 10$
lda0 .DataDP
cmpe #WILLFULL
brc 11$
10$: lda #SPACEDISP
sta t1dispbf
br T1chkblankend
11$: lda #BLANKDISP
sta t1dispbf
br T1chkblankend
12$: lda #INSETDISP
sta t1dispbf
br T1chkblankend
2$: lda #C_ZERO
sta t1dispbf
br T1chkblankend
spblank:
lda t1count
cmpe #C_ZERO
brz dispspace
cmpe #C_ONE
brz Display_t1
cmpe #C_SEVEN
brz dispword
cmpe #C_EIGHT
brz Display_t1
br T1chkblankend
dispspace:
lda Insetflag
cmpe #C_ONE
brz 2$
lda0 .DataDP
cmpe #WILLFULL
brc 1$
lda #SPACEDISP
sta t1dispbf
br 127$ ;br T1chkblankend
1$: lda #BLANKDISP
sta t1dispbf
br 127$ ;br T1chkblankend
2$: lda #INSETDISP
sta t1dispbf
;br 127$
127$:
lda #C_TWO
sta PP
lda0 .SFDP
deca
sta DP
lda I
sta0 .DataBuf
PP2One()
lda0 .DataBuf
sta font
call ChangeKeychk
lda font
sta t1fontbf
br T1chkblankend
dispword:
;lda #^firstword
;sta tab_ptr+2
lda #>firstword
sta tab_ptr+1
lda #<firstword
adda t1fontbf ;font
sta tab_ptr
call GetLdv
sta t1dispbf
br T1chkblankend
Display_t1:
lda t1dispbf
sta font
lda blankCount
sta dig_num
call Display_5X7_1
br T1chkblankend
Display_t1_1:
lda t1dispbf
sta font
lda blankCount
sta dig_num
call Display_5X7_blk1
br T1chkblankend
Display_t1_2:
lda t1dispbf
sta font
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -