📄 postfixvalume.asm
字号:
cmpe #0e5h
brz .M6
cmpe #0e6h
brz .M7
cmpe #0e7h
brz .M8
cmpe #0e8h
brz .M9
cmpe #0f5h
brz .M10
cmpe #0f6h
brz .M11
cmpe #0f7h
brz .M12
cmpe #0aah
brz .M13
cmpe #0bbh
brz .M14
cmpe #0ceh
brz .M15
;-LR
cmpe #0fah ;A
brz .LR1
cmpe #0fbh ;B
brz .LR2
cmpe #0cfh ;C
brz .LR3
cmpe #0cbh
brz .LR4
cmpe #0fdh
brz .LR5
cmpe #0bah
brz .LR6
cmpe #0feh
brz .LR7
cmpe #0bch
brz .LR8
cmpe #0cah
brz .LR9
cmpe #0bdh
brz .LR10
cmpe #0beh
brz .LR11
cmpe #0fch
brz .LR12
ret
.M1:
call .Random
ret
.M2:
lda #>(PI_tab1)
sta TableC+1
lda #<(PI_tab1)
sta TableC
lda #0
sta .M_Data_Offset
call .GetTabVal
ret
.M3:
call .I_trans_X
call .X_trans_Z
ret
.M4:
call .A_TO_Z
ret
.M5:
call .B_TO_Z
ret
.M6:
call .C_TO_Z
ret
.M7:
call .D_TO_Z
ret
.M8:
call .E_TO_Z
ret
.M9:
call .F_TO_Z
ret
.M10:
call .X_TO_Z
ret
.M11:
call .Y_TO_Z
ret
.M12:
call .M_TO_Z
ret
;-------------------------------------------
;M13 is Degree mode
;degree of Degree =X*1
;degree of Rad=X*pi/180
;degree of Gra=X/0.9
;-------------------------------------------
.M13:
lda #01h
sta PP
lda StateFlag
anda #30h
cmpe #10h
brz .Degree1
cmpe #30h
brz .EndM13Gra
call .PiDivD180
call .Z_trans_X
call .ReciX
ret
.EndM13Gra:
call .GRA0POINT9
call .Z_trans_X
call .ReciX
ret
;-------------------------------------------
;M14 is Rad mode
;rad of Degree =X*180/pi
;rad of Rad=X*1
;rad of Gra=X*180/pi/0.9
;-------------------------------------------
.M14:
lda #01h
sta PP
lda StateFlag
anda #30h
cmpe #20h
brz .Degree1
cmpe #30h
brz .EndM14Gra
call .PiDivD180
ret
.EndM14Gra:
call .PiDivD180
call .Z_trans_X
call .GRA0POINT9
call .Z_trans_Y
call Division
ret
;-------------------------------------------
;M15 is Gra mode
;gra of Degree =X*0.9
;gra of Rad=X*0.9*pi/180
;gra of Gra=X*1
;-------------------------------------------
.M15:
lda #01h
sta PP
lda StateFlag
anda #30h
cmpe #30h
brz .Degree1
cmpe #20h
brz .RadM15
call .GRA0POINT9
ret
.RadM15:
call .PiDivD180
call .Z_trans_Y
call .GRA0POINT9
call .Z_trans_X
call Division
ret
.LR1:
lda #>StateFlag
sta PP
lda StateFlag
anda #07h
cmpe #06h
brnz .OtherA
call QR_CalcA
ret
.OtherA:
call LR_CalcA
lda #>StateFlag
sta PP
lda StateFlag
anda #07h
cmpe #03h
brz .Z_to_expA
cmpe #04h
brz .Z_to_expA
ret
.Z_to_expA:
call .Z_trans_X
lda #0h
sta PP
call Ex
ret
.LR2:
lda #>StateFlag
sta PP
lda StateFlag
anda #07h
cmpe #06h
brnz .OtherB
call QR_CalcB
ret
.OtherB:
call LR_CalcB
ret
.LR3:
call LR_CalcR
ret
.LR4:
call LR_CalcXAvg
ret
.LR5:
call LR_CalcYAvg
ret
.LR6:
call LR_CalcXPSD
ret
.LR7:
call LR_CalcYPSD
ret
.LR8:
call LR_CalcXSSD
ret
.LR9:
call LR_CalcYSSD
ret
.LR12:
call QR_CalcC
ret
;-------------------------------------------
.PiDivD180:
call .PI
call .Z_trans_Y
call .ClrX
lda #0h
sta PP
lda #90h
sta0 OperandX+6
call Division
ret
.GRA0POINT9:
call .ClrZ
lda #09h
sta0 OperandZ+6
lda #01h
sta0 PointZ
ret
.Degree1:
call .ClrZ
lda #01h
sta0 OperandZ+6
ret
;-------------------------------------------
.CalcDMS:
;lda #01h
;sta PP
;lda .SetFlag
;anda #10h
;brnz .NoSetDms
;ora #04h
;sta .SetFlag
.NoSetDms:
call .R_trans_X
lda0 .DataBuf
cmpe #0abh
brz .Dodegrees
;cmpe #0aah
;brz .Dodegrees
cmpe #0ach
brz .Domins
cmpe #0adh
brz .Dosecs
br .EndCalcVal
.Dodegrees:
call .X_trans_Z
br .MarkDP1
.Domins:
call .ClrY
lda #60h
sta0 OperandY+6
lda #0h
sta PP
call Division
call .Z_trans_X
br .MarkDP1
.Dosecs:
call .ClrY
lda #36h
sta0 OperandY+5
lda #0h
sta PP
call Division
call .Z_trans_X
br .MarkDP1
;-------------------------------------------
.PointToDMS::
call .ClearInt
call CheckOutData
lda0 OperandZ+6
cmpe #0h
brnz .NotModify
call .I_trans_Z
call .ClrY
call .Y_trans_S
call .Y_trans_B
br .EndDMS
.NotModify:
call .Mul60
call .Z_trans_S
call .DelPoint
call .Z_trans_Buf ;M
call .S_trans_Z
call .ClearInt
call .Mul60
call .CheckS
call .S_trans_X
call .ClrY
lda #60h
sta0 OperandY+6
call Mod
call .X_trans_S
call .Z_trans_X
call .Buf_trans_Y
lda #0h
sta0 SignX
sta0 SignY
call Addition
call .Z_trans_X
call .ClrY
lda #60h
sta0 OperandY+6
call Mod
call .X_trans_B
call .GetDpCount
lda0 DpCount
cmpe #0h
brz .EndDMS
call .I_trans_Z
call .DelPoint
call .Z_add_One
ret
.EndDMS:
call .I_trans_Z
ret
;--------------
.Mul60:
call .Z_trans_X
call .ClrY
lda #60h
sta0 OperandY+6
lda #0h
sta PP
call Multiplation
ret
;--------------
.Z_add_One:
call .Z_trans_Y
call .Put_1_to_OperandX
lda PointY
sta PointX
lda SignY
sta SignX
call Addition
lda #0h
sta OperandZ+7
ret
;--------------
.CheckS:
lda0 PointZ
cmpe #03h
brnc .ShowS
cmpe #04h
brnc .CkZcarry
lda0 PointZ
suba #03h
sta0 PointZ
call GetInt
lda #0h
sta0 OperandZ+7
call CheckOutData
lda #03h
sta0 PointZ
.CkZcarry:
lda0 OperandZ+6
anda #0fh
cmpe #05h
brnc .NoCarryZ
lda0 OperandZ+6
anda #0f0h
sta0 OperandZ+6
call .Z_trans_X
call .ClrY
lda #10h
sta0 OperandY+6
lda #0h
sta0 SignX
lda0 PointX
sta0 PointY
call Addition
br .ShowS
.NoCarryZ:
lda0 OperandZ+6
anda #0f0h
sta0 OperandZ+6
.ShowS:
lda #0h
sta0 OperandZ+7
call CheckOutData
call .Z_trans_S
ret
;-------------------------------------------
.ChkInput::
lda #>StateFlag
sta PP
lda StateFlag
anda #08h
brz .EndInput
.ChangInput:
lda0 .Buf1
cmpe #26h
brz .ChkDec
cmpe #27h
brz .ChkHex
cmpe #28h
brz .ChkBin
cmpe #29h
brz .ChkOct
br .EndInput
.ChkDec:
call .CalcDataCnt
call .DecDataChk
lda0 PointX
cmpe #0bh
brc .ErrorSyn
br .EndInput
.ChkHex:
call .CalcDataCnt
call .DecDataChk
lda0 PointX
cmpe #09h
brc .ErrorSyn
br .EndInput
.ChkOct:
call .CalcDataCnt
call .DecDataChk
lda0 PointX
cmpe #0bh
brc .ErrorSyn
br .EndInput
.ChkBin:
call .CalcDataCnt
call .DecDataChk
lda0 PointX
cmpe #0bh
brc .ErrorSyn
br .EndInput
.ErrorSyn:
lda #02h
sta0 ErrorFlag
.EndInput:
ret
;-------------------------------------------
.CalcDataCnt:
lda #0eh
sta0 PointX
lda #0h
sta0 .Counter
lda #<OperandX
sta DP
.CalcCnt:
lda0 .Counter
cmpe #07h
brz .EndCalc
lda #>OperandX
sta PP
lda i
cmpe #0h
brz .Dec2OpXCnt
anda #0f0h
brz .Dec1OpXCnt
br .EndCalc
.IncCnt:
incdp
lda0 .Counter
inca
sta0 .Counter
br .CalcCnt
.Dec2OpXCnt:
lda0 PointX
suba #02h
sta0 PointX
br .IncCnt
.Dec1OpXCnt:
lda0 PointX
deca
sta0 PointX
.EndCalc:
ret
;-------------------------------------------
.DecDataChk:
lda #0h
sta0 .Counter
lda #<OperandX
sta DP
lda0 .Buf1
cmpe #26h
brz .LimitDec
cmpe #27h
brz .EndDecChk
cmpe #28h
brz .LimitBin
cmpe #29h
brz .LimitOct
br .ErrorData
.LimitDec:
lda #0ah
sta0 .Buf2
lda #0a0h
sta0 .Buf3
br .StartDecChk
.LimitOct:
lda #08h
sta0 .Buf2
lda #80h
sta0 .Buf3
br .StartDecChk
.Limitbin:
lda #02h
sta0 .Buf2
lda #20h
sta0 .Buf3
br .StartDecChk
.StartDecChk:
lda #0h
sta PP
lda0 .Counter
cmpe #07h
brz .EndDecChk
lda i
anda #0fh
cmpe .Buf2
brc .ErrorData
lda i
anda #0f0h
cmpe .Buf3
brc .ErrorData
Incdp
lda0 .Counter
inca
sta0 .Counter
br .StartDecChk
.ErrorData:
lda #02h
sta0 ErrorFlag
.EndDecChk:
ret
;-------------------------------------------
.BaseModeChk::
lda #>BasenFlag
sta PP
lda BasenFlag
anda #0f0h
cmpe #80h
brnz .Ckhex
lda #26h
sta0 .DataBuf+1
br .EndBaseModeChk
.Ckhex:
cmpe #40h
brnz .Ckbin
lda #27h
sta0 .DataBuf+1
br .EndBaseModeChk
.Ckbin:
cmpe #20h
brnz .Ckoct
lda #28h
sta0 .DataBuf+1
br .EndBaseModeChk
.Ckoct:
cmpe #10h
brnz .Ckhex
lda #29h
sta0 .DataBuf+1
.EndBaseModeChk:
ret
;-------------------------------------------
.NBase2_DEC::
lda #>StateFlag
sta PP
lda StateFlag
anda #08h
brz .NotBaseNmode
call .Z_trans_X
lda0 .Buf1
cmpe #26h
brz .EndNBaseDEC
cmpe #27h
brz .HexToDec
cmpe #28h
brz .BinToDec
cmpe #29h
brz .OctToDec
br .EndNBaseDEC
.HexToDec:
call Base_Hex2Dec
br .EndNBaseDEC
.BinToDec:
call Base_Bin2Dec
br .EndNBaseDEC
.OctToDec:
call Base_Oct2Dec
br .EndNBaseDEC
.EndNBaseDEC:
call .X_trans_Z
.NotBaseNmode:
ret
;-------------------------------------------
.SimeCounter::
lda0 .KeyPos
cmpe #0a3h
brz .SynError
cmpe #77h
brz .SynError
call .X_trans_Z
call .DelPoint
lda #0h
sta0 OperandZ+7
call CheckOutData
lda0 PointZ
cmpe #0h
brnz .InpErr
lda #02h
sta PP
lda #0h
sta DP
lda i
cmpe #0b0h
brz .DoLRSimeCnt
call .ClrY
lda #01h
sta0 OperandY+6
call Subtration
call .Z_trans_X
.DoLRSimeCnt:
lda0 .KeyPos
cmpe #0dfh ;IF Key is CL cntX chang sign
brnz .DoLRCnt
lda0 SignX
cmpe #01h
brz .DoLRCnt
lda #01h
sta0 SignX
.DoLRCnt:
call X_SatDataCnt_Trans
call .LRX_trans_X
call .LRY_trans_Y
lda #>stateFlag
sta PP
lda StateFlag
anda #40h
brnz .SDntime
lda StateFlag
anda #07h
cmpe #06h
brz .QRntime
cmpe #02h
brz .TransLog
cmpe #03h
brz .TransExp
cmpe #04h
brz .TransPwr
cmpe #05h
brz .TransInv
.LR_NTimes:
call LR_PrepareNTimes
.ShowSimeX:
call .LRX_trans_X
call .X_trans_I
call .I_trans_Z
br .EndSimeCounter
.TransLog:
call .X_trans_I
call .Y_trans_B
call Ln
call .Z_trans_X
call .B_trans_Y
br .LR_NTimes
.TransExp:
call .X_trans_I
call .Y_trans_X
call Ln
call .Z_trans_Y
call .I_trans_X
br .LR_NTimes
.TransPwr:
call .X_trans_I
call .Y_trans_B
call Ln
call .Z_trans_S
call .B_trans_X
call Ln
call .Z_trans_Y
call .S_trans_X
br .LR_NTimes
.TransInv:
call .X_trans_I
call .Y_trans_B
call .ReciX
call .Z_trans_X
call .B_trans_Y
br .LR_NTimes
.InpErr:
lda #02h
sta0 ErrorFlag
.EndSimeCounter:
ret
;-------------------------------------------
.ChkOverExp50:
lda #0h
sta0 ErrorFlag
call .ClrY
lda #01h
sta0 OperandY+6
lda #0ceh
sta0 PointY
call Subtration
lda0 SignZ
cmpe #0h
brnz .EndCkExp50
lda #01h
sta0 ErrorFlag
.EndCkExp50:
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -