📄 getkeycode.asm
字号:
lda0 .KeyPos
cmpe #.ALPHA
brz .SetAlpha
lda0 .KeyPos
cmpe #.SHIFT
brz .SetShift
lda0 .KeyPos
cmpe #.HYP
brz .SetHyp
lda0 .KeyPos
cmpe #45h
brnz .ChkCosh
lda #.SinH
sta0 .KeyPos
br .EndHypAddNor
.ChkCosh:
cmpe #46h
brnz .ChkTanh
lda #.CosH
sta0 .KeyPos
br .EndHypAddNor
.ChkTanh:
cmpe #47h
brnz .EndHypAddNor1
lda #.TanH
sta0 .KeyPos
br .EndHypAddNor
.EndHypAddNor1:
lda #0h
sta0 .KeyPos
.EndHypAddNor:
call .CheckClrData
lda .SFlag
anda #~41h
sta .SFlag
br .EndGetKeyCode
;-------------------------------------------
.HypAddSft:
lda0 .KeyPos
cmpe #.ALPHA
brz .SetAlpha
lda0 .KeyPos
cmpe #.SHIFT
brz .SetShift
lda0 .KeyPos
cmpe #.HYP
brz .SetHyp
lda0 .KeyPos
cmpe #45h
brnz .ChkACosh
lda #.ASinH
sta0 .KeyPos
br .EndHypAddSft
.ChkACosh:
cmpe #46h
brnz .ChkATanh
lda #.ACosH
sta0 .KeyPos
br .EndHypAddSft
.ChkATanh:
cmpe #47h
brnz .EndHypAddSft1
lda #.ATanH
sta0 .KeyPos
br .EndHypAddSft
.EndHypAddSft1:
lda #0h
sta0 .KeyPos
.EndHypAddSft:
call .CheckClrData
lda .SFlag
anda #~45h
sta .SFlag
br .EndGetKeyCode
;-------------------------------------------
.EndGetKeyCode:
lda #>StateFlag
sta PP
lda StateFlag
anda #80h
brnz .CompMode
lda StateFlag
anda #40h
brnz .ReleaseSDkey
;lda StateFlag
;anda #08h
;brnz .BaseNmode
lda StateFlag
anda #07h
brz .NotRegMode
;;LRmodeKeyLock
lda0 .KeyPos
cmpe #0d0h
brz .ClrKeyPos
cmpe #0d6h
brz .ClrKeyPos
cmpe #07ah ;calc'='
brz .ClrKeyPos
cmpe #07bh ;calc
brz .ClrKeyPos
lda StateFlag
anda #07h
cmpe #06h
brnz .CkFontC
lda0 .KeyPos
cmpe #0cfh
brz .ClrKeyPos
br .NotRegMode
.CkFontC:
lda0 .KeyPos
cmpe #0fch
brz .ClrKeyPos
br .NotRegMode
;-------------------------------------------
.ReleaseSDkey:
lda0 .FormulaFlag
cmpe #01h
brnz .SDModeKeyCK
lda0 .KeyPos
cmpe #0cch
brz .ClrKeyPos
cmpe #0ddh
brz .ClrKeyPos
.SDModeKeyCK:
lda0 .KeyPos
cmpe #0bdh
brz .ClrKeyPos
cmpe #0fah
brz .ClrKeyPos
cmpe #0fbh
brz .ClrKeyPos
cmpe #0cfh
brz .ClrKeyPos
cmpe #0fch
brz .ClrKeyPos
cmpe #0fdh
brz .ClrKeyPos
cmpe #0feh
brz .ClrKeyPos
cmpe #0cah
brz .ClrKeyPos
cmpe #0beh
brz .ClrKeyPos
cmpe #07ah ;calc'='
brz .ClrKeyPos
br .EndDalta
;-------------------------------------------
.CompMode:
lda0 .FormulaFlag
cmpe #01h
brnz .CompModeKeyCK
lda0 ErrorFlag
cmpe #0h
brnz .EndDalta1
lda0 .KeyPos
cmpe #0cch
brz .ClrKeyPos
cmpe #0ddh
brz .ClrKeyPos
.CompModeKeyCK:
lda0 .KeyPos
cmpe #0b0h ; simecolon
brz .ClrKeyPos
cmpe #0cfh
brz .ClrKeyPos
cmpe #0fah
brz .ClrKeyPos
cmpe #0fbh
brz .ClrKeyPos
cmpe #0fch
brz .ClrKeyPos
cmpe #0fdh
brz .ClrKeyPos
cmpe #0feh
brz .ClrKeyPos
cmpe #0cah
brz .ClrKeyPos
cmpe #0cbh
brz .ClrKeyPos
cmpe #0bah
brz .ClrKeyPos
cmpe #0bch
brz .ClrKeyPos
cmpe #0bdh
brz .ClrKeyPos
cmpe #0beh
brz .ClrKeyPos
br .EndDalta
.ClrKeyPos:
lda #0h
sta0 .KeyPos
lda #>.SFlag
sta PP
lda .SFlag
anda #~07h
sta .SFlag
.NotRegMode:
.EndDalta:
lda #0h
sta PP
ret
.EndDalta1:
lda #0h
sta0 .FormulaFlag
sta0 .StoFlag
ret
;-------------------------------------------
.CheckClrData::
lda0 ErrorFlag
cmpe #0h
brnz .EndClrData
lda0 .KeyPos
cmpe #0h
brz .EndClrData ;2002 11 13
lda #01h
sta PP
lda .SetFlag
anda #02h
brnz .EndClrData
lda .SFlag
anda #08h
brz 1$
lda0 .KeyPos
cmpe #61h
brz .ClrKeyPos
cmpe #65h
brz .ClrKeyPos
1$:
lda .SFlag
anda #20h
cmpe #20h
brz .EndClrData
lda .SFlag
anda #18h
cmpe #18h
brz .EndClrData
lda0 .KeyPos
cmpe #052h
brz .EndClrData ;sto
cmpe #0b5h ;m+
brz .CkMaddMode
cmpe #0dfh ;m-
brz .CkMaddMode
cmpe #0cch
brz .EndClrData
cmpe #0ddh
brz .EndClrData
cmpe #0a3h
brz .EndClrData
cmpe #07bh
brz .EndClrData
cmpe #77h
brz .EndClrData
cmpe #0b1h
brz .EndClrData
cmpe #065h ;66
brz .EndClrData
cmpe #0eeh
brz .EndClrData
cmpe #0f8h ;DRG
brz .EndClrData
cmpe #0c2h
brz .EndClrData
cmpe #041h
brz .ChangMode ;.EndClrData ;A/C
cmpe #031h
brz .ChangMode
cmpe #0b7h ;dms
brz .ChangMode
cmpe #042h ;shift dms
brz .ChangMode
cmpe #0c3h ;A B/C
brz .ChangMode
lda0 .ModeFlag
anda #0f0h
brnz .EndClrData
lda BasenFlag
anda #0fh
brnz .EndClrData
.CKEQUAC::
lda #>.SFlag
sta PP
lda .SFlag
anda #48h
cmpe #08h ;08=Enter ,40=AC , 48=AC+Enter
brz .Add_ANS
cmpe #40h
brz .CKlrkey
cmpe #48h
brz .CKlrkey
br .EndClrData
.CkMaddMode:
lda #>StateFlag
sta PP
lda StateFlag
anda #47h
brnz .EndClrData
br .EndClrData;.CKEQUAC
.ChangMode:
lda #01h
sta PP
lda .SFlag
anda #40h
cmpe #40h
brz .CKlrkey
call .CheckFunctKey
br .EndClrData
.CKlrkey:
lda #01h
sta PP
lda .SetFlag
anda #~3fh ;clear disp point fract dms eng rnd
sta .SetFlag
call .ClrP2Data
call Rekeyindisp
br .EndClrData
.Add_ANS:
lda #>.SetFlag
sta PP
lda .SetFlag
anda #80h
brnz .NoClrData
lda #>.SRFlag
sta PP
lda #0h
sta .SRFlag
call .ClrP2Data
.NoClrData:
call .CheckRnd
.EndClrData:
ret
;-------------------------------------------
.CheckFunctKey:
lda #01h
sta PP
lda .SetFlag
anda #20h
brz .CheckShiftDmsAbcKey
lda0 .KeyPos
cmpe #0b7h ;DMS mode
brz .ChangDmsMode
cmpe #42h ;DMS mode
brz .ChangDmsMode
cmpe #0c3h ;Fract to Point mode
brz .ChangFractMode
cmpe #031h ;Fract to Point mode
brz .ChangFractbc
br .EndCheckFunctKey
.ChangDmsMode:
lda .SetFlag
anda #1ch
cmpe #0h
brz .DispDms
cmpe #10h
brz .DispDms
cmpe #08h
brz .DispDms
cmpe #04h
brz .DispPointmode
br .EndCheckFunctKey
.DispDms:
lda .SetFlag
anda #~1ch
ora #04h
sta .SetFlag
br .EndCheckFunctKey
.ChangFractMode:
lda #01h
sta PP
lda .SetFlag
anda #1ch
cmpe #0h
brz .DispFractmode
cmpe #04h
brz .DispFractmode
lda .SetFlag
anda #18h
cmpe #10h
brz .DispFractmode
cmpe #08h
brz .DispPointmode
br .EndCheckFunctKey
.DispFractmode:
lda .SetFlag
anda #~1ch
ora #08h
sta .SetFlag
br .EndCheckFunctKey
.ChangFractbc:
lda .SetFlag
anda #~1ch
ora #10h
sta .SetFlag
br .EndCheckFunctKey
.DispPointmode:
lda .SetFlag
anda #~1ch
sta .SetFlag
br .EndCheckFunctKey
.CheckShiftDmsAbcKey:
lda0 .KeyPos
cmpe #31h
brz .ClrKeyPos
cmpe #42h
brz .ClrKeyPos
.EndCheckFunctKey:
ret
;-------------------------------------------
.Delay::
lda #01h
sta PP
lda #0h
sta .DelayCnt
.Dely:
lda .DelayCnt
cmpe #0ffh
brz .EndDelay
lda .DelayCnt
inca
sta .DelayCnt
br .Dely
.EndDelay:
ret
;-------------------------------------------
.ClrLCD::
lda #0h
sta PP
lda #80h
sta DP
.Clrlcdc:
lda #0h
sta i
incdp
lda DP
cmpe #0d0h
brz .Endlcd
br .Clrlcdc
.Endlcd:
ret
;-------------------------------------------
.ClrP3::
lda #03h
sta PP
lda #0h
sta DP
.Clrpp:
lda #0h
sta i
incdp
lda DP
cmpe #0a4h ;#0b8h
brz .Endp3
br .Clrpp
.Endp3:
ret
;===========================================
;.NormalKey::
; DB 000h,000h,010h,0a0h,0a1h,0a2h,0a3h,000h,000h,000h
; DB 000h,000h,000h,000h,0cch,0ddh,0eeh,000h,000h,000h
; DB 000h,000h,07bh,0c8h,0d0h,0d1h,0d2h,0d3h,000h,000h
; DB 000h,000h,0c2h,0c3h,0c4h,0c5h,0c6h,0c7h,000h,000h
; DB 000h,000h,0a8h,0b7h,0b8h,0b9h,0c0h,0c1h,000h,000h
; DB 000h,000h,000h,000h,0b2h,0b3h,0b4h,0b5h,000h,000h
; DB 000h,000h,007h,008h,009h,065h,066h,000h,000h,000h
; DB 000h,000h,004h,005h,006h,0a6h,0a7h,000h,000h,000h
; DB 000h,000h,001h,002h,003h,0a4h,0a5h,000h,000h,000h
;.ShiftKey::
; DB 000h,000h,060h,0a9h,0f9h,0f8h,077h,000h,000h,000h ;1
; DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;1
; DB 000h,000h,000h,0d4h,0d6h,000h,000h,0d7h,000h,000h ;0
; DB 000h,000h,041h,031h,000h,000h,0d8h,0d9h,000h,000h ;0
; DB 000h,000h,000h,042h,000h,0e0h,0e1h,0e2h,000h,000h ;1
; DB 000h,000h,000h,000h,0cfh,000h,0b0h,0dfh,000h,000h ;1
; DB 000h,000h,0fah,0fbh,0fch,061h,0b6h,000h,000h,000h ;1
; DB 000h,000h,0fdh,0feh,0cah,0d5h,0c9h,000h,000h,000h ;0
; DB 000h,000h,0cbh,0bah,0bch,0bdh,0beh,000h,000h,000h ;0
;
;.AlphaKey::
; DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;1
; DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;1
; DB 000h,000h,07ah,000h,000h,000h,000h,000h,000h,000h ;1
; DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;1
; DB 000h,000h,0e3h,0e4h,0e5h,0e6h,0e7h,0e8h,000h,000h ;0
; DB 000h,000h,000h,000h,000h,0f5h,0f6h,0f7h,000h,000h ;1
; DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;0
; DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;0
; DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;1
.NormalKey::
DB 000h,000h,010h,0a0h,0a1h,0a2h,0a3h,000h,000h,000h
DB 000h,000h,000h,000h,0cch,0ddh,0eeh,000h,000h,000h
DB 000h,000h,0c8h,0c9h,0d0h,0d1h,0d2h,0d3h,000h,000h
DB 000h,000h,0c2h,0c3h,0c4h,0c5h,0c6h,0c7h,000h,000h
DB 000h,000h,0a8h,0b7h,0b8h,0b9h,0c0h,0c1h,000h,000h
DB 000h,000h,000h,000h,0b2h,0b3h,0b4h,0b5h,000h,000h
DB 000h,000h,007h,008h,009h,065h,066h,000h,000h,000h
DB 000h,000h,004h,005h,006h,0a6h,0a7h,000h,000h,000h
DB 000h,000h,001h,002h,003h,0a4h,0a5h,000h,000h,000h
.ShiftKey::
DB 000h,000h,060h,0a9h,0f9h,0f8h,077h,000h,000h,000h ;1
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;1
DB 000h,000h,0d4h,0d5h,0d6h,000h,000h,0d7h,000h,000h ;0
DB 000h,000h,041h,031h,000h,000h,0d8h,0d9h,000h,000h ;0
DB 000h,000h,000h,042h,000h,0e0h,0e1h,0e2h,000h,000h ;1
DB 000h,000h,000h,000h,0cfh,000h,0b0h,0dfh,000h,000h ;1
DB 000h,000h,0fah,0fbh,0fch,061h,0b6h,000h,000h,000h ;1
DB 000h,000h,0fdh,0feh,0cah,000h,000h,000h,000h,000h ;0
DB 000h,000h,0cbh,0bah,0bch,0bdh,0beh,000h,000h,000h ;0
.AlphaKey::
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;1
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;1
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;1
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;1
DB 000h,000h,0e3h,0e4h,0e5h,0e6h,0e7h,0e8h,000h,000h ;0
DB 000h,000h,000h,000h,000h,0f5h,0f6h,0f7h,000h,000h ;1
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;0
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;0
DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h ;1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -