📄 postfixvalume.asm
字号:
inca
sta0 .Buf2
br .StartChang
.EndReSetP3STK:
ret
;===========================================
.ChoiceFunc:
lda #0h
sta0 OperandX+7
lda #0h
sta PP
lda0 .Buf1
cmpe #0b0h
brz .DoSimeFunct
cmpe #0a1h
brz .ExpD
cmpe #0D4h
brz .FactD
cmpe #0C8h
brz .ReciXD
cmpe #0d1h
brz .Pow_3_invyD ;-------------no
cmpe #0d2h
brz .XCubeD
cmpe #0d3h
brz .Pow_x_yD
cmpe #0d7h
brz .Pow_x_invyD
cmpe #0c4h
brz .SquD
cmpe #0c5h
brz .XSquD
cmpe #0c6h
brz .LogD
cmpe #0d8h ;-----------no
brz .TenXD
cmpe #0c7h
brz .LnD
cmpe #0d9h
brz .ExD
cmpe #0b9h
brz .SinD
cmpe #0e0h
brz .AsinD
cmpe #0c0h
brz .CosD
cmpe #0e1h
brz .AcosD
cmpe #0c1h
brz .TanD
cmpe #0e2h
brz .AtanD
cmpe #0e9h
brz .SinHD
cmpe #0f2h
brz .AsinHD
cmpe #0f0h
brz .CosHD
cmpe #0f3h
brz .AcosHD
cmpe #0f1h
brz .TanHD
cmpe #0f4h
brz .AtanHD
cmpe #0beh
brz .LR10
cmpe #0bDh
brz .LR11
cmpe #0a8h
brz .DecSignD
cmpe #024h
brz .Donot
cmpe #025h
brz .Doneg
cmpe #026h
brz .TrnsDec
cmpe #027h
brz .TrnsHex
cmpe #028h
brz .TrnsBin
cmpe #029h
brz .TrnsOct
br .EndChoiceFunc
.FactD:
call .Factorial
call .Z_trans_X
lda0 .DPBuf
deca
sta0 .DPBuf
br .EndChoiceFunc
.ReciXD:
call .ReciX
call .Z_trans_X
lda0 .DPBuf
deca
sta0 .DPBuf
br .EndChoiceFunc
.Pow_3_invyD:
call .Pow_x_inv3
call .Z_trans_X
br .EndChoiceFunc
.XCubeD:
call .XCube
call .Z_trans_X
lda0 .DPBuf
deca
sta0 .DPBuf
br .EndChoiceFunc
.SquD:
call .CKNear_1
call Squ
call .CKNear_1
call .Z_trans_X
br .EndChoiceFunc
.XSquD:
call .XSqu
call .Z_trans_X
lda0 .DPBuf
deca
sta0 .DPBuf
br .EndChoiceFunc
.LogD:
call .CKNear_1
call .Log
call .CKNear_1
call .Z_trans_X
br .EndChoiceFunc
.TenXD:
call .Pow_10_X
call .Z_trans_X
br .EndChoiceFunc
.LnD:
call .CKNear_1
call Ln
call .CKNear_1
call .Z_trans_X
br .EndChoiceFunc
.ExD:
call Ex
call .Z_trans_X
br .EndChoiceFunc
.SinD:
call .CheckRrdDegre
call .RadCheck
call Sin
call .Z_trans_X
br .EndChoiceFunc
.AsinD:
call .Asin
call .CheckAsinRrdDegre
call .Z_trans_X
br .EndChoiceFunc
.CosD:
call .CheckRrdDegre
call Cos
call .Z_trans_X
br .EndChoiceFunc
.AcosD:
call .Acos
call .CheckAsinRrdDegre
call .Z_trans_X
br .EndChoiceFunc
.TanD:
call .CheckRrdDegre
call .RadCheck
call Tan
call .Z_trans_X
br .EndChoiceFunc
.AtanD:
call .Atan
call .CheckAsinRrdDegre
call .Z_trans_X
br .EndChoiceFunc
.SinHD:
call .SinH
call .Z_trans_X
br .EndChoiceFunc
.AsinHD:
call .AsinH
call .Z_trans_X
br .EndChoiceFunc
.CosHD:
call .CosH
call .Z_trans_X
br .EndChoiceFunc
.AcosHD:
call .AcosH
call .Z_trans_X
br .EndChoiceFunc
.TanHD:
call .TanH
call .Z_trans_X
br .EndChoiceFunc
.AtanHD:
call .AtanH
call .Z_trans_X
br .EndChoiceFunc
.ExpD:
call .Expp
br .EndChoiceFunc
.DecSignD:
call .X_trans_Z
lda0 SignX
cmpe #01h
brz .DECsign
lda #01h
sta0 SignZ
call .Z_trans_X
br .EndChoiceFunc
.DECsign:
lda #0h
sta0 SignZ
call .Z_trans_X
br .EndChoiceFunc
.TrnsDec:
call .ChkInput
call CheckDecLimit
call .Z_trans_X
br .EndChoiceFunc
.TrnsHex:
call .ChkInput
call CheckHexLimit
call Base_Hex2Dec
call .Z_trans_X
br .EndChoiceFunc
.TrnsBin:
call .ChkInput
call CheckBinLimit
call Base_Bin2Dec
call .Z_trans_X
br .EndChoiceFunc
.TrnsOct:
call .ChkInput
call CheckOctLimit
call Base_Oct2Dec
call .Z_trans_X
br .EndChoiceFunc
.DOnot:
call LogicNot
call .Z_trans_X
br .EndChoiceFunc
.DOneg:
call LogicNeg
call .Z_trans_X
br .EndChoiceFunc
.LR10:
call .X_trans_LRX
lda #>DaltaXcnt
sta PP
lda #02h
sta DaltaXcnt
lda #>StateFlag
sta PP
lda StateFlag
anda #07h
cmpe #06h
brz .QR_EstimateY
cmpe #05h
brz .LR_InvEstimateY
cmpe #04h
brz .LR_PwrEstimateY
cmpe #03h
brz .LR_ExpEstimateY
cmpe #02h
brz .LR_LogEstimateY
cmpe #01h
brz .LR_LinEstimateY
br .EndChoiceFunc
.QR_EstimateY:
call .X_trans_T
call QR_EstimateY
br .EndChoiceFunc
.LR_LinEstimateY:
call .X_trans_Y
call .Y_trans_LRY
call LR_EstimateY
br .EndChoiceFunc
.LR_LogEstimateY:
call .X_trans_Y
call .Y_trans_LRY
call LR_LnEstimateY
br .EndChoiceFunc
.LR_ExpEstimateY:
call .X_trans_Y
call .Y_trans_LRY
call LR_ExpEstimateY
br .EndChoiceFunc
.LR_PwrEstimateY:
call .X_trans_Y
call .Y_trans_LRY
call LR_PwrEstimateY
br .EndChoiceFunc
.LR_InvEstimateY:
call .X_trans_Y
call .Y_trans_LRY
call LR_InvEstimateY
br .EndChoiceFunc
;-------------------------------------------
.LR11:
call .X_trans_Y
call .Y_trans_LRY
lda #>DaltaXcnt
sta PP
lda #01h
sta DaltaXcnt
lda StateFlag
anda #07h
cmpe #06h
brz .QR_EstimateX
cmpe #05h
brz .LR_InvEstimateX
cmpe #04h
brz .LR_PwrEstimateX
cmpe #03h
brz .LR_ExpEstimateX
cmpe #02h
brz .LR_LogEstimateX
cmpe #01h
brz .LR_LinEstimateX
br .EndChoiceFunc
.QR_EstimateX:
call .X_trans_T
call QR_EstimateX1
br .EndChoiceFunc
.LR_LinEstimateX:
call .X_trans_LRX
call LR_EstimateX
br .EndChoiceFunc
.LR_LogEstimateX:
call .X_trans_LRX
call LR_LnEstimateX
br .EndChoiceFunc
.LR_ExpEstimateX:
call .X_trans_LRX
call LR_ExpEstimateX
br .EndChoiceFunc
.LR_PwrEstimateX:
call .X_trans_LRX
call LR_PwrEstimateX
br .EndChoiceFunc
.LR_InvEstimateX:
call .X_trans_LRX
call LR_InvEstimateX
br .EndChoiceFunc
;---------------------------------------------
.DoSimeFunct:
call .SimeCounter
br .EndChoiceFunc
.SDntime:
call SD_PrepareNTimes
br .ShowSimeX
.QRntime:
call QR_PrepareNTimes
br .ShowSimeX
.SynError:
lda #02h
sta0 ErrorFlag
br .EndChoiceFunc
.EndChoiceFunc:
ret
;-------------------------------------------
.RadCheck:
lda #01h
sta PP
lda StateFlag
anda #30h
cmpe #20h
brnz .EndRadCheck
lda #>Sign_i
sta PP
lda Sign_i
sta0 SignX
sta0 SignZ
.EndRadCheck:
lda #>SignX
sta PP
ret
;-------------------------------------------
.CheckRrdDegre::
lda #01h
sta PP
lda StateFlag
anda #30h
cmpe #20h
brz .TOrad
cmpe #30h
brnz .EndCheckRrdDegre
call .Z_trans_X
call .Gpercent
call .Z_trans_X
br .EndCheckRrdDegre
.TOrad:
;-------------------------------------------------------SPECIAL ANGLE
;;;Input=OperandX
;;; X->I
;;; X->Buf
;;; X%2PI=Q,R-->Buf
;;; Buf%(pi/4)=Q,R
;;; If R!=0 ,data not special angle
;;; else Do special angle
;-------------------------------------------------------
call .X_trans_Buf
call .X_trans_I
lda #>(PI2_tab) ;2*PI =6.2831853071795
sta TableC+1
lda #<(PI2_tab)
sta TableC
lda #0
sta .M_Data_Offset
call .GetTabVal ;X%2PI=Q R->X
call .Z_trans_T
call .Z_trans_Y
call .Buf_trans_X
call ModCarry ;
call .X_trans_Z ;X<2pi
call .Z_trans_Buf
call .T_trans_X ;S=2PI , S/4=90
call .ClrY
lda #04h
sta0 OperandY+6
call Division
call .Z_trans_Y ;Y=PI/4
call .Buf_trans_X ;INPUT<2PI
call ModCarry
call CheckOutData
call .GetDpCountX ;Judge no R
lda0 DpCount
cmpe #0h
brnz .NotSpecialAngle
lda0 PointZ
cmpe #0h
brnz .NotSpecialAngle
lda0 OperandZ+6
cmpe #0h
brz .SetX360
cmpe #01h
brz .SetX90
cmpe #02h
brz .SetX180
cmpe #03h
brz .SetX270
cmpe #04h
brz .SetX360
;;;---------------------------------------------
.NotSpecialAngle:
call .I_trans_X
call .ClrY
lda #0eh
sta0 PointY
lda #01h
sta0 OperandY+6
call Subtration
lda0 SignZ
cmpe #01h
brz .NoAddOffest
call .I_trans_X
call .I_trans_Z
call .Degree
call .Z_trans_X
call .ClrY
lda #58h
sta0 OperandY
lda #00h
sta0 OperandY+1
lda #00h
sta0 OperandY+5
lda #03h
sta0 OperandY+6
lda #1bh
sta0 PointY
call Addition
call .Z_trans_X
br .EndCheckRrdDegre
.NoAddOffest:
call .I_trans_X
call .I_trans_Z
call .ClrY
call .Degree
call .Z_trans_X
.EndCheckRrdDegre:
lda #0h
sta PP
ret
.SetX360:
call .ClrX
lda #60h
sta OperandX+6
lda #03h
sta OperandX+5
call .X_trans_Z
br .EndCheckRrdDegre
.SetX270:
call .ClrX
lda #70h
sta OperandX+6
lda #02h
sta OperandX+5
call .X_trans_Z
br .EndCheckRrdDegre
.SetX180:
call .ClrX
lda #80h
sta OperandX+6
lda #01h
sta OperandX+5
call .X_trans_Z
br .EndCheckRrdDegre
.SetX90:
call .ClrX
lda #90h
sta OperandX+6
call .X_trans_Z
br .EndCheckRrdDegre
;-------------------------------------------
.CheckAsinRrdDegre::
lda #01h
sta PP
lda StateFlag
anda #30h
cmpe #20h
brz .DtoRad
cmpe #30h
brnz .EndRrdDegre
call .Z_trans_X
call .ClrY
lda #09h
sta0 OperandY+6
lda #01h
sta0 PointY
lda #0h
sta PP
call Division
call .Z_trans_X
br .EndRrdDegre
.DtoRad:
call .Z_trans_X
call .Rad
br .EndRrdDegre
.EndRrdDegre:
lda #0h
sta PP
ret
;===========================================
.SearchError::
lda #0h
sta0 .INDP
sta0 .IFlag
lda #0h
sta0 .Cnter2
lda0 .FunDP
sta0 .Buf3
sta DP
lda #02h
sta PP
.33$:
lda i
cmpe #0ffh
brz .ErrorCK
cmpe #0feh
brz .ErrorCK
cmpe #0eeh
brz .ErrorCK
lda0 .Cnter2
inca
sta0 .Cnter2
incdp
br .33$
;-------------------------------------------
.ErrorCK:
lda #0h
sta PP
lda0 .INDP
cmpe .DataDP
brz .EndGetData
;-------------------------------------------
.StartCKC:
lda #.INPP
sta PP
lda0 .INDP
sta DP
lda i
sta0 .Buf2
sta0 .DataBuf+1
lda0 .IFlag
cmpe #0h
brnz .GetRightc
lda0 .Buf2
anda #0f0h
cmpe #0a0h
brc .FuncLc
lda #01h
sta0 .IFlag
call .SftRight
lda0 .DataBuf+1
sta0 .Buf2
br .EndGetData
.FuncLc:
lda0 .INDP
inca
sta0 .INDP
lda #0h
sta0 .IFlag
br .EndGetData
;-------------------------------------------
.GetRightc:
lda0 .Buf2
anda #0fh
sta0 .Buf2
cmpe #0ah
brc .FuncRc
lda #0h
sta0 .IFlag
lda0 .INDP
inca
sta0 .INDP
br .EndGetData
;-------------------------------------------
.FuncRc:
lda #.INPP
sta PP
lda0 .INDP
sta DP
lda i
sta0 .DataBuf+1
sta0 .Buf2
call .SftLeft
lda0 .DataBuf+1
sta0 .Buf2
incdp
lda i
sta0 .DataBuf+1
lda #.INPP
sta PP
lda DP
sta0 .INDP
lda #01h
sta0 .IFlag
call .SftRight
lda #0h
sta PP
lda0 .Buf2
adda .DataBuf+1
sta0 .DataBuf+1
sta0 .Buf2
br .EndGetData
.EndGetData:
lda #02h
sta PP
lda0 .FunDP
sta DP
lda i
sta0 .DataBuf
cmpe #0ffh
brz .EndCmpe
cmpe #0feh
brz .EndCmpe
cmpe #0feh
brz .EndCmpe
lda #0h
sta PP
lda0 .DataBuf
cmpe .Buf2
brnz .RestCnt
lda0 .FunDP
inca
sta0 .FunDP
lda0 .Cnter
inca
sta0 .Cnter
lda #02h
sta PP
incdp
lda i
cmpe #0ffh
brz .EndCmpe
cmpe #0feh
brz .EndCmpe
cmpe #0eeh
brz .EndCmpe
br .ErrorCK
.RestCnt:
lda0 .Buf3
sta0 .FunDP
lda #0h
sta0 .Cnter
br .ErrorCK
.EndCmpe:
lda #0h
sta PP
lda0 .Cnter2
cmpe .Cnter
brnz .EndSearch
lda0 .INDP
sta0 .SFDP
lda0 .IFlag
sta0 .TFlag
.EndSearch:
ret
;-------------------------------------------
.MemoryToZ::
lda0 .DataBuf+1
cmpe #0a9h
brz .M1
cmpe #0f9h
brz .M2
cmpe #0a2h
brz .M3
cmpe #0e3h
brz .M4
cmpe #0e4h
brz .M5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -