📄 caldisp.asm
字号:
lda blankCount
sta dig_num
call Display_5X7_blk2
br T1chkblankend
Display_t1_3:
lda t1dispbf
sta font
lda blankCount
sta dig_num
call Display_5X7_blk3
br T1chkblankend
Display_t1_4:
lda t1dispbf
sta font
lda blankCount
sta dig_num
call Display_5X7_blk4
br T1chkblankend
Display_t1_5:
lda t1dispbf
sta font
lda blankCount
sta dig_num
call Display_5X7_blk5
br T1chkblankend
Display_t1_6:
lda t1dispbf
sta font
lda blankCount
sta dig_num
call Display_5X7_blk6
;br T1chkblankend
T1chkblankend:
lda t1count
inca
cmpe #C_14
brnc 1$
lda #C_ZERO
1$: sta t1count
T1chkblankend2:
lda T1Flag
anda #~TIMEGO
sta T1Flag
T1chkblankend1:
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
Moveopz2bf::
lda #C_ZERO
sta0 .DataBuf
sta0 .DataBuf+1
moveopzloop:
PP2Zero()
lda #OperandZ
adda .DataBuf
sta DP
lda I
sta .DataBuf+1
PP2One()
lda0 .DataBuf
adda #pzdispbf
sta DP
lda0 .DataBuf+1
sta I
lda0 .DataBuf
inca
sta0 .DataBuf
cmpe #Length
brc Moveopz2bfend
br moveopzloop
Moveopz2bfend:
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
Chkopzbf1:
PP2One()
lda #C_14
sta0 .DataBuf+1
lda #pzdispbf+Length-1
sta DP
lda I
anda #MASKHI
brnz Chkopzbfend1
lda pointbf
deca
sta pointbf
call Shiftrnibble
lda0 .DataBuf+1
deca
sta0 .DataBuf+1
cmpe #C_ZERO
brz Chkopzbfend1
br Chkopzbf1
Chkopzbfend1:
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
Chkopzbf2:
PP2One()
lda #C_14
sta0 .DataBuf+1
lda #pzdispbf+Length-1
sta DP
lda I
anda #MASKHI
brnz Chkopzbfend2
lda pointbf
deca
sta pointbf
lda dispcount
deca
sta dispcount
call Shiftrnibble
lda0 .DataBuf+1
deca
sta0 .DataBuf+1
cmpe #C_ZERO
brz Chkopzbfend2
br Chkopzbf2
Chkopzbfend2:
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
Shiftrnibble:
lda #Length-1
sta0 .DataBuf
PP2One()
lda #C_ZERO
sta cmpDP
lda #pzdispbf
sta DP
1$:
lda i
sta cmpFlag
rorc
rorc
rorc
rorc
anda #MASKHI
ora cmpDP
sta I
lda cmpFlag
rolc
rolc
rolc
rolc
anda #MASKLO
sta cmpDP
incdp
lda0 .DataBuf
deca
sta0 .DataBuf
brc 1$
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
Shiftlnibble::
lda #Length-1
sta0 .DataBuf
PP2One()
lda #C_ZERO
sta cmpDP
lda0 .DataBuf
adda #pzdispbf
sta DP
1$:
lda i
sta cmpFlag
rolc
rolc
rolc
rolc
anda #MASKLO
ora cmpDP
sta I
lda cmpFlag
rorc
rorc
rorc
rorc
anda #MASKHI
sta cmpDP
decdp
lda0 .DataBuf
deca
sta0 .DataBuf
brc 1$
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
ChkDispAns::
call Clrfullmatrix
call Rightchk
PP2One()
lda .SetFlag
anda #BLANKCHK
brz 0$
lda #>.SRFlag
sta PP
lda .SRFlag
anda #C_ONE
brz 0$
PP2One()
lda #EQUDISP
sta font
lda #C_TEN
sta dig_num
call Display_5X7_1
0$:
PP2One()
lda StateFlag
anda #BASENSTATE
brnz Set2Move
PP2Zero()
lda #C_ZERO
sta OperandZ+Length
call CheckOutData
Set2Move:
PP2One()
call Moveopz2bf
call AnsZerochk
getpointbf:
PP2One()
lda cmpDP
sta pointbf
lda #C_ZERO
suba pointbf
sta dispcount
lda0 PointZ
adda dispcount
cmpe #HALFMAX
brc 2$
cmpe #MINUS100 ;璽100
brnc ChkDispAnsend
lda #C_ZERO
sta dispcount
call Clrpzdispbf
br ChkDispAnsend
2$:
cmpe #PLUS99-1 ;タ100
brc ChkDispAnsend
lda #>ErrorFlag
sta PP
lda #<ErrorFlag
sta DP
lda #C_ONE
sta I
ChkDispAnsend:
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
ShowAnschk::
PP2One()
lda .SFlag
anda #08h
brz 1$
lda #0
sta0 .SFDP
1$:
lda T1Flag
anda #~(ENG1GO|ENG2GO|ENGEND)
sta T1Flag
lda #STARTENG
sta EngFlag ;to clear all eng disp
call Clr_signm
call Clr_expm
call Clrfullseg
call AnsZerochk
cmpe #C_TWO
brz DispAnsZero
NotZeroDispChk:
PP2One()
lda StateFlag
anda #BASENSTATE
brnz BasenAnsDisp
lda .SetFlag
anda #FDPCHK
cmpe #DMSCHK
brz Dmsalldispchk
cmpe #FRACHK
brz Fraalldispchk
cmpe #HPOINTCHK
brz Fraspchk1
Dispmodechk:
PP2One()
lda DispFlag
anda #MASKLO
cmpe #NORAM1DISP
brz Norm1
cmpe #NORAM2DISP
brz Norm2
cmpe #FIXDISP
brz FIX
cmpe #SCIDISP
brz SCI
ShowAnschkend:
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
AnsZerochk:
PP2One()
lda #C_ZERO
sta cmpPP
sta cmpDP
lda #C_14
sta0 .DataBuf
zerochkloop:
PP2One()
lda0 .DataBuf
deca
sta0 .DataBuf
lda #pzdispbf
adda cmpPP
sta DP
lda I
anda #MASKLO
cmpe #C_ZERO
brnz AnsNotZero
lda0 .DataBuf
deca
sta0 .DataBuf
lda I
anda #MASKHI
cmpe #C_ZERO
brnz AnsNotZero
lda cmpPP
inca
sta cmpPP
cmpe #Length
brc SetAnsZero
br zerochkloop
AnsNotZero:
PP2One()
lda0 .DataBuf
sta cmpDP
lda #C_ONE
br AnsZerochkend
SetAnsZero:
PP2One()
lda #C_TWO
AnsZerochkend:
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
Norm1::
PP2One()
lda0 PointZ
adda dispcount
sta dispcount
cmpe #HALFMAX
brc 1$
br 2$
1$: cmpe #CHKTEN
brc Notexp
br Isexp
2$:
cmpe #CHKMTWO
brc Isexp
br Notexp
;------------------------------------------------------------------------
Norm2::
PP2One()
lda0 PointZ
adda dispcount
sta dispcount
cmpe #HALFMAX
brc 1$
br 2$
1$:
cmpe #CHKTEN
brc Notexp
br Isexp
2$:
cmpe #CHKMTEN
brc Isexp
br Notexp
;------------------------------------------------------------------------
FIX::
PP2One()
lda DispFlag
anda #MASKHI
sta cmpPP
lda0 PointZ
adda dispcount
sta dispcount
cmpe #HALFMAX
brc 1$
br 2$
1$:
cmpe #CHKTEN
brc FixNotexp1
br Isexp
2$:
;cmpe cmpPP
;brz FixNotexp2
;brc DispAnsZero
br FixNotexp2
;------------------------------------------------------------------------
SCI::
PP2One()
lda pointbf
sta editDP
call Chkopzbf1
PP2One()
lda0 PointZ
adda dispcount
sta dispcount
lda DispFlag
anda #MASKHI
sta cmpPP
lda pointbf
inca
cmpe cmpPP
brz Isexp1go
brc SciOvergo
ScinotOvergo:
PP2One()
lda pointbf
inca
cmpe cmpPP
brc Isexp1go
lda pointbf
inca
sta pointbf
call Shiftlnibble
br ScinotOvergo
SciOvergo:
PP2One()
lda T1count
anda #80h
brz 1$
call Xort1count
call .I_trans_Z
br SciOvergo1
1$:
lda editDP
inca
suba cmpPP
sta cmpFlag
call Chkaddopz
cmpe #C_TWO
brnz SciOvergo1
call Xort1count
br SCI
SciOvergo1:
PP2One()
lda pointbf
inca
cmpe cmpPP
brz Isexp1go
lda pointbf
deca
sta pointbf
call Shiftrnibble
br SciOvergo1
;------------------------------------------------------------------------
Xort1count:
PP2One()
lda T1count
xora #80h
sta T1count
ret
;------------------------------------------------------------------------
;------------------------------------------------------------------------
FixNotexp1:
PP2One()
lda0 PointZ
inca
sta dispcount
lda0 PointZ
sta cmpFlag
lda pointbf
inca
suba cmpFlag
adda cmpPP
cmpe #C_TEN
brc 1$
lda T1count
anda #80h
brz 0$
call Xort1count
call .I_trans_Z
br 1$
0$:
PP2One()
lda0 PointZ
sta cmpFlag
lda pointbf
inca
suba cmpFlag
sta cmpFlag
lda pointbf
inca
suba cmpPP
suba cmpFlag
sta cmpFlag
call Chkaddopz
cmpe #C_TWO
brnz 1$
call Xort1count
br FIX
1$:
PP2One()
call Over10shift
PP2One()
lda0 PointZ
sta cmpDP
lda pointbf
suba cmpDP
sta cmpDP
cmpe #C_TEN
brz Notexprun1
PP2One()
lda cmpDP
adda cmpPP
cmpe #C_TEN
brc FixnotFullgo
Fixfullgo:
lda dispcount
cmpe cmpPP
brz FullFixloop1
brc FullFixloop2
FullFixloop1:
PP2One()
lda pointbf
cmpe #C_NINE
brc Notexprun1
lda dispcount
deca
cmpe cmpPP
brc Notexprun1
lda pointbf
inca
sta pointbf
lda dispcount
inca
sta dispcount
call Shiftlnibble
br FullFixloop1
FullFixloop2:
PP2One()
lda dispcount
deca
cmpe cmpPP
brz Notexprun1
lda pointbf
deca
sta pointbf
lda dispcount
deca
sta dispcount
call Shiftrnibble
br FullFixloop2
FixnotFullgo:
PP2One()
lda pointbf
cmpe #C_NINE
brc Notexprun1
lda pointbf
inca
sta pointbf
lda dispcount
inca
sta dispcount
call Shiftlnibble
br FixnotFullgo
;------------------------------------------------------------------------
FixNotexp2:
PP2One()
lda0 PointZ
inca
sta dispcount
lda cmpPP
cmpe #C_NINE
brc FixNotexp2_1
lda T1count
anda #80h
brz 0$
call Xort1count
call .I_trans_Z
br FixNotexp2_1
0$:
PP2One()
lda0 PointZ
deca
cmpe pointbf
brnc 1$
suba pointbf
sta editDP
lda cmpPP
suba editDP
br 2$
1$: lda cmpPP
2$: sta editDP ;干纕
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -