📄 getkeycode.asm
字号:
.area getkeydata(data,abs)
.org 0x12a
.TPPTemp:: .ds 1
.TPHTemp:: .ds 1
.TPLTemp:: .ds 1
.SFlag:: .ds 1
.FunctFlag::
.DelayCnt: .ds 1
.AC EQU 0x66
.ON EQU 0x66
.OFF EQU 0x17
.MODE EQU 0x16
.SHIFT EQU 0x12
.ALPHA EQU 0x13
.LEFT EQU 0x14
.RIGHT EQU 0x15
.HYP EQU 0x44
.STO EQU 0x52
.RCL EQU 0x53
.ENTER EQU 0x06
.SinH EQU 0xe9
.CosH EQU 0xf0
.TanH EQU 0xf1
.ASinH EQU 0xf2
.ACosH EQU 0xf3
.ATanH EQU 0xf4
;SFlag 7 6 5 4 3 2 1 0
;On: 1 cal AC RCL STO EQU Sft Alf Hpy
;Off:0
;SetFlag 7 6 5 4 3 2 1 0
; %+ cma disp pt num dms drg rnd
.area getkeycode(code)
.GetKeyCode::
lda #01h
sta PP
lda0 .KeyPos
cmpe #0h
brz .EndGetKeyCode
cmpe #.AC
brz .PowerOn
cmpe #.OFF
brz .PowerOff
cmpe #.LEFT
brz .ChangKEY
cmpe #.RIGHT
brz .ChangKEY
lda0 ErrorFlag
cmpe #0h
brnz .EndGetKeyCode
lda0 .KeyPos
cmpe #.ENTER
brz .EQU
cmpe #.STO
brz .STOset
cmpe #.RCL
brz .RCLset
.ChangKEY:
lda .SFlag
anda #07h
cmpe #0h
brz .CkStoRcl
cmpe #01h
brz .HypAddNor
cmpe #02h
brz .AlfAddNor
cmpe #04h
brz .SftAddNor
cmpe #05h
brz .HypAddSft
.CkStoRcl:
lda .SFlag
anda #30h
brnz .ChkStoRcl
.NomlKey::
lda0 .KeyPos
cmpe #.SHIFT
brz .SetShift
cmpe #.ALPHA
brz .SetAlpha
cmpe #.HYP
brz .SetHyp
br .KeyTrans
.ChkStoRcl:
lda0 .KeyPos
cmpe #.SHIFT
brz .SetShift
cmpe #.ALPHA
brz .SetAlpha
.KeyTrans:
lda #01h
sta PP
lda0 .KeyPos
sta .M_bcdbuf+1
lda #0h
sta .M_bcdbuf
call .Bcd2Hex
lda .M_bcdbuf+1
sta0 .KeyPos
lda #01h
sta PP
lda #^(.NormalKey)
sta .TPPTemp
lda #@(.NormalKey)
sta .TPHTemp
lda #<(.NormalKey)
sta .TPLTemp
lda0 .KeyPos
adda .TPLTemp
sta .TPLTemp
brnc .NoCarry
lda .TPHTemp
inca
sta .TPHTemp
.NoCarry:
lda .TPPTemp
sta TPP
lda .TPHTemp
sta TPH
lda .TPLTemp
sta TPL
ldv
sta0 .KeyPos
call .CheckClrData
br .EndGetKeyCode
.PowerOn:
lda #01h
sta PP
lda0 ErrorFlag
cmpe #0h
brz 1$
lda .SFlag
anda #~08h
sta .SFlag
1$:
lda #0h
sta .CalcFlag
sta .SRFlag
sta Insetflag
sta0 ErrorFlag
lda .SFlag
anda #04h
brnz .ChangKEY
sta0 ErrorFlag
lda .SFlag
anda #~37h
ora #40h
sta .SFlag
anda #08h
cmpe #08h
brz .PwrEditMode
call .ClrP2Data
.PwrEditMode:
call .ClrZ
lda #>.SetFlag
sta PP
lda .SetFlag
anda #~3fh ;ClrAllStatus
sta .SetFlag
lda #01h
sta0 .ModeFlag
lda BasenFlag ;BaseN 0308
anda #0f0h
sta BasenFlag ;
call ClrAlldisp
;lda #01h
lda #00000101b ;bit 2 1=B type
sta LCDC
lda #0h
sta0 .KeyPos
;;;;;;;formula AC
lda #>.SFlag
sta PP
lda .SFlag
ora #40h
anda #~80h
sta .SFlag
lda0 .FormulaFlag
cmpe #01h
brnz .EndGetKeyCode
call .Formula2Input
lda #0h
sta0 .FormulaFlag
lda #>.ForLDP
sta PP
lda .ForLDP
sta0 .DataDP
br .EndGetKeyCode
.PowerOff:
;lda #0ffh
;sta SP
call .Sleep
br .EndGetKeyCode
.EQU:
lda #01h
sta PP
lda .SFlag
anda #40h
brnz .SetKey0
lda #0h
sta Insetflag
br .ChangKEY
.SetKey0:
lda #0h
sta0 .KeyPos
lda .SFlag
anda #~37h
sta .SFlag
br .EndGetKeyCode
;-------------------------------------------
;;;Judge mode choice enable ;if mdoe enable can't set sto or rcl
.STOset:
lda #01h
sta PP
lda .SetFlag
anda #02h
brnz .EndGetKeyCode
lda BasenFlag
anda #0fh
brnz .EndGetKeyCode
lda0 .ModeFlag
anda #0f0h
brnz .EndGetKeyCode
lda .SFlag
anda #30h
cmpe #20h
brz .DosetSto
cmpe #10h
brz .ResetSto
.DosetSto:
lda .SFlag
anda #~37h
ora #10h
sta .SFlag
br .EndSTOset
.ResetSto:
lda .SFlag
anda #~17h
sta .SFlag
lda #0h
sta0 .KeyPos
.EndSTOset:
call .CheckClrData
br .EndGetKeyCode
;-------------------------------------------
;;;Judge mode choice enable ;if mdoe enable can't set sto or rcl
.RCLset:
lda #01h
sta PP
lda .SetFlag
anda #02h
brnz .EndGetKeyCode
lda BasenFlag
anda #0fh
brnz .EndGetKeyCode
lda0 .ModeFlag
anda #0f0h
brnz .EndGetKeyCode
lda .SFlag
anda #30h
cmpe #10h
brz .DosetRcl
cmpe #20h
brz .ResetRcl
.DosetRcl:
lda .SFlag
anda #~37h
ora #20h
sta .SFlag
br .EndRCLset
.ResetRcl:
lda .SFlag
anda #~27h
sta .SFlag
lda #0h
sta0 .KeyPos
.EndRCLset:
;call .CheckClrData
br .EndGetKeyCode
;-------------------------------------------
.SetShift:
lda .SFlag
anda #07h
cmpe #0h
brz .SetSF4
cmpe #01h
brz .ADDhpy
cmpe #02h
brnz .Sft
lda .SFlag
anda #~37h
ora #04h
sta .SFlag
lda #0h
sta0 .KeyPos
br .EndGetKeyCode
.Sft:
lda .SFlag
anda #~04h
sta .SFlag
lda #0h
sta0 .KeyPos
br .EndGetKeyCode
.ADDhpy:
lda .SFlag
anda #~37h
ora #05h
sta .SFlag
lda #0h
sta0 .KeyPos
br .EndGetKeyCode
.SetSF4:
lda .SFlag
ora #04h
sta .SFlag
lda #0h
sta0 .KeyPos
br .EndGetKeyCode
;-------------------------------------------
.SetAlpha:
lda .SFlag
anda #~37h
ora #02h
sta .SFlag
lda #0h
sta0 .KeyPos
br .EndGetKeyCode
;-------------------------------------------
.SetHyp:
lda .SFlag
anda #07h
cmpe #01h
brz .SetSftF
cmpe #02h
brz .ClrAF
cmpe #05h
brz .SetSftF
br .NoClrhyp
.SetSftF:
lda .SFlag
anda #~01h
sta .SFlag
lda #0h
sta0 .KeyPos
br .EndGetKeyCode
.NoClrhyp:
lda .SFlag
ora #01h
sta .SFlag
lda #0h
sta0 .KeyPos
br .EndGetKeyCode
.ClrAF:
lda .SFlag
anda #~33h
ora #01h
sta .SFlag
.ClrKeyPos1:
lda #0h
sta0 .KeyPos
br .EndGetKeyCode
;-------------------------------------------
.SftAddNor:
lda0 .KeyPos
cmpe #.HYP
brz .SetHyp
lda0 .KeyPos
cmpe #.ALPHA
brz .SetAlpha
lda0 .KeyPos
cmpe #.SHIFT
brnz .GetShfKey
lda #0h
sta0 .KeyPos
lda #01h
sta PP
lda .SFlag
anda #~04h ; #~44h ;12/30
sta .SFlag
br .EndGetKeyCode
.GetShfKey:
lda0 .KeyPos
cmpe #0ffh
brz .EndGetKeyCode
lda #01h
sta PP
lda0 .KeyPos
sta .M_bcdbuf+1
lda #0h
sta .M_bcdbuf
call .Bcd2Hex
lda .M_bcdbuf+1
sta0 .KeyPos
lda #01h
sta PP
lda #^(.ShiftKey)
sta .TPPTemp
lda #@(.ShiftKey)
sta .TPHTemp
lda #<(.ShiftKey)
sta .TPLTemp
lda0 .KeyPos
adda .TPLTemp
sta .TPLTemp
brnc .NoCarrySft
lda .TPHTemp
inca
sta .TPHTemp
.NoCarrySft:
lda .TPPTemp
sta TPP
lda .TPHTemp
sta TPH
lda .TPLTemp
sta TPL
ldv
sta0 .KeyPos
cmpe #60h
brz .IsRntCheck
call .CheckClrData
.22$:
lda .SFlag
anda #~04h
sta .SFlag
br .EndGetKeyCode
.IsRntCheck:
lda .SFlag
anda #08h
brz .22$
lda .SFlag
anda #~44h
sta .SFlag
br .EndGetKeyCode
;-------------------------------------------
.AlfAddNor:
lda0 .KeyPos
cmpe #.SHIFT
brz .SetShift
;lda0 .KeyPos
;cmpe #.HYP
;brz .SetHyp
lda0 .KeyPos
cmpe #.ALPHA
brnz .GetAlfKey
lda #0h
sta0 .KeyPos
lda .SFlag
anda #~02h
sta .SFlag
br .EndGetKeyCode
.GetAlfKey:
lda #01h
sta PP
lda0 .KeyPos
sta .M_bcdbuf+1
lda #0h
sta .M_bcdbuf
call .Bcd2Hex
lda .M_bcdbuf+1
sta0 .KeyPos
lda #^(.AlphaKey)
sta .TPPTemp
lda #@(.AlphaKey)
sta .TPHTemp
lda #<(.AlphaKey)
sta .TPLTemp
lda0 .KeyPos
adda .TPLTemp
sta .TPLTemp
brnc .NoCarryAlf
lda .TPHTemp
inca
sta .TPHTemp
.NoCarryAlf:
lda .TPPTemp
sta TPP
lda .TPHTemp
sta TPH
lda .TPLTemp
sta TPL
ldv
sta0 .KeyPos
call .CheckClrData
lda #>StateFlag
sta PP
lda StateFlag
anda #08h
brz 1$
lda0 .KeyPos
cmpe #7ah ;calc key
brnz 1$
lda #0h
sta0 .KeyPos
1$:
lda .SFlag
anda #~02h
sta .SFlag
br .EndGetKeyCode
;-------------------------------------------
.HypAddNor:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -