📄 storedata.asm
字号:
;/subrutine name : StoreData.asm
;/user bady : HE
;/fast clock : 4Mhz
;/slow clock : 32768khz
;/programer : Alton
;
;
.A EQU 0Xa8
.B EQU 0Xb7
.C EQU 0Xb8
.D EQU 0Xb9
.E EQU 0Xc0
.F EQU 0Xc1
.X EQU 0Xb3
.Y EQU 0Xb4
.M EQU 0Xb5
.SartPP EQU 0x02
.Point EQU 0xa0
.Fract EQU 0xc3
.area stocode(code,rel)
.StoData::
call .CKEQUAC
lda #>.SFlag
sta PP
lda .SFlag
anda #~7fh
sta .SFlag
lda #.SartPP
sta PP
lda0 .DataDP
sta DP
cmpe #4fh
brc .InpErr
lda0 .KeyPos
cmpe #10h
brnz .Savedat
lda #0h
.Savedat:
sta i
incdp
lda DP
sta0 .DataDP
lda0 .KeyPos
cmpe #0b4h
brnz .EndStoData
lda #01h
sta0 .CommaFlag
br .EndStoData
.InpErr:
lda #03h
sta0 ErrorFlag
.EndStoData:
lda #0h
sta PP
ret
;-------------------------------------------
.ClrRAM::
lda #02h
sta0 .KeyC
lda #0h
sta DP
.ClrRAMD:
lda0 .KeyC
sta PP
lda #0h
sta i
incdp
lda DP
cmpe #0h
brnz .ClrRAMD
lda0 .KeyC
cmpe #06h
brz .EndClrRAM
lda0 .KeyC
inca
sta0 .KeyC
br .ClrRAMD
.EndClrRAM:
lda #0h
sta PP
ret
;-------------------------------------------
.STOReg::
lda #0h
sta PP
call .I_trans_Z
call .Z_trans_X
lda0 .KeyPos
cmpe #.A
brz .STOA
cmpe #0e3h
brz .STOA
br .CKSTOB
.STOA:
call .X_TO_A
lda #0e3h
br .EndSTOReg
.CKSTOB:
cmpe #.B
brz .STOB
cmpe #0e4h
brz .STOB
br .CKSTOC
.STOB:
call .X_TO_B
lda #0e4h
br .EndSTOReg
.CKSTOC:
cmpe #.C
brz .STOC
cmpe #0e5h
brz .STOC
br .CKSTOD
.STOC:
call .X_TO_C
lda #0e5h
br .EndSTOReg
.CKSTOD:
cmpe #.D
brz .STOD
cmpe #0e6h
brz .STOD
br .CKSTOE
.STOD:
call .X_TO_D
lda #0e6h
br .EndSTOReg
.CKSTOE:
cmpe #.E
brz .STOE
cmpe #0e7h
brz .STOE
br .CKSTOF
.STOE:
call .X_TO_E
lda #0e7h
br .EndSTOReg
.CKSTOF:
cmpe #.F
brz .STOF
cmpe #0e8h
brz .STOF
br .CKSTOX
.STOF:
call .X_TO_F
lda #0e8h
br .EndSTOReg
.CKSTOX:
cmpe #.X
brz .STOX
cmpe #0f5h
brz .STOX
br .CKSTOY
.STOX:
call .X_TO_X
lda #0f5h
br .EndSTOReg
.CKSTOY:
cmpe #.Y
brz .STOY
cmpe #0f6h
brz .STOY
br .CKSTOM
.STOY:
call .X_TO_Y
lda #0f6h
br .EndSTOReg
.CKSTOM:
cmpe #.M
brz .STOM
cmpe #0f7h
brz .STOM
br .EndSTO
.STOM:
call .X_TO_M
lda #0f7h
br .EndSTOReg
.EndSTOReg:
sta0 .KeyPos
lda #01h
sta PP
lda StateFlag
anda #08h
brz 1$
call .IsBaseNMode
1$:
lda0 .FormulaFlag
cmpe #01h
brz .EndSTO
lda #>.SFlag
sta PP
lda .SFlag
anda #~40h
sta .SFlag
call .ShowMem
.EndSTO:
ret
;-------------------------------------------
.RCLReg::
lda0 .KeyPos
cmpe #0e3h
brz .RCLA
cmpe #.A
brnz .CKRCLB
.RCLA:
call .A_TO_Z
lda #0e3h
br .EndRCLReg
.CKRCLB:
cmpe #0e4h
brz .RclB
cmpe #.B
brnz .CKRCLC
.RclB:
call .B_TO_Z
lda #0e4h
br .EndRCLReg
.CKRCLC:
cmpe #0e5h
brz .RclC
cmpe #.C
brnz .CKRCLD
.RclC:
call .C_TO_Z
lda #0e5h
br .EndRCLReg
.CKRCLD:
cmpe #0e6h
brz .RclD
cmpe #.D
brnz .CKRCLE
.RclD:
call .D_TO_Z
lda #0e6h
br .EndRCLReg
.CKRCLE:
cmpe #0e7h
brz .RclE
cmpe #.E
brnz .CKRCLF
.RclE:
call .E_TO_Z
lda #0e7h
br .EndRCLReg
.CKRCLF:
cmpe #0e8h
brz .RclF
cmpe #.F
brnz .CKRCLX
.RclF:
call .F_TO_Z
lda #0e8h
br .EndRCLReg
.CKRCLX:
cmpe #0F5h
brz .RclX
cmpe #.X
brnz .CKRCLY
.RclX:
call .X_TO_Z
lda #0f5h
br .EndRCLReg
.CKRCLY:
cmpe #0F6h
brz .RclY
cmpe #.Y
brnz .CKRCLM
.RclY:
call .Y_TO_Z
lda #0f6h
br .EndRCLReg
.CKRCLM:
cmpe #0F7h
brz .RclZ
cmpe #.M
brnz .EndRCLd
.RclZ:
call .M_TO_Z
lda #0f7h
.EndRCLReg:
sta0 .KeyPos
call .Z_trans_I
call .Z_trans_Buf
lda #01h
sta PP
lda StateFlag
anda #08h
brz 1$
call .IsBaseNMode
1$:
lda0 .DataDP ;;4/16
cmpe #0h ;;
brnz .StoRclCode ;;
lda #>StateFlag
sta PP
lda .SFlag
anda #~40h
ora #08h
sta .SFlag
lda StateFlag
anda #08h
brz .Endrcl
.Endrcl:
;call .Z_trans_I
lda0 .FormulaFlag
cmpe #01h
brz .EndRCLd
call .ShowMem
br .EndRCLd
.StoRclCode:
lda #>.SFlag
sta PP
lda .SFlag ;clear rcl flag
anda #08h
brz .SaveRclCode
call .ClrP2Edit
lda #0h
sta0 .DataDP
.SaveRclCode:
lda .SFlag
anda #~28h
sta .SFlag
lda0 .SFDP ;Check Cursor is tail SFDP=0
cmpe #0h
brnz .EndRCLd
lda0 .DataDP
sta DP
lda #02h
sta PP
lda0 .KeyPos
sta i
incdp
lda DP
sta0 .DataDP
.EndRCLd:
ret
.IsBaseNMode::
call .I_trans_Z
call .Z_trans_X
lda #01h
sta PP
lda BasenFlag
anda #0f0h
cmpe #80h
brz .DecMode
cmpe #40h
brz .HexMode
cmpe #20h
brz .BinMode
call Base_Dec2Oct
call .Z_trans_X
call CheckOctLimit
ret
.DecMode:
call .Z_trans_X
call CheckDecLimit
ret
.BinMode:
call Base_Dec2Bin
call .Z_trans_X
call CheckBinLimit
ret
.HexMode:
call Base_Dec2Hex
call .Z_trans_X
call CheckHexLimit
ret
.ShowMem:
call .ClrP2Edit
lda #0h
sta0 .DataDP
sta DP
lda #02h
sta PP
lda0 .KeyPos
sta i
lda #01h
sta0 .DataDP
lda #>.SRFlag
sta PP
lda #01h
sta .SRFlag
lda0 .FormulaFlag
cmpe #0h
brz .EndShowMem
lda #>.SRFlag
sta PP
lda #0h
sta .SRFlag
.EndShowMem:
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -