📄 postfixvalume.asm
字号:
brnz .6$
lda #0h
sta0 SignY
.6$:
call Addition
call .Z_trans_X
call .SimeCounter
call .I_trans_Z
br .MarkDP2
.SimeERROR:
lda #02h
sta0 ErrorFlag
br .MarkDP2
;-------------------------------------------
; Input Regdata
;-------------------------------------------
.DoLin:
call .X_trans_I
lda0 .KeyPos
cmpe #0dfh
brnz .LinInp
br .DoLRCLmode
.LinInp:
call LR_Prepare
call .I_trans_Z
br .MarkDP2
.DoLog:
lda #0h
sta PP
call .X_trans_I
call .Y_trans_B
call Ln
call .Z_trans_X
call .B_trans_Y
lda0 .KeyPos
cmpe #0dfh
brnz .LogInp
br .DoLRCLmode
.LogInp:
call LR_Prepare
call .I_trans_Z
br .MarkDP2
.DoExp:
lda #0h
sta PP
call .X_trans_I
call .Y_trans_X
call Ln
call .Z_trans_Y
call .I_trans_X
lda0 .KeyPos
cmpe #0dfh
brnz .ExpInp
br .DoLRCLmode
.ExpInp:
call LR_Prepare
call .I_trans_Z
br .MarkDP2
.DoPwr:
lda #0h
sta PP
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
lda0 .KeyPos
cmpe #0dfh
brnz .PwrInp
br .DoLRCLmode
.PwrInp:
call LR_Prepare
call .I_trans_Z
br .MarkDP2
.DoInv:
lda #0h
sta PP
call .X_trans_I
call .Y_trans_B
call .ReciX
call .Z_trans_X
call .B_trans_Y
lda0 .KeyPos
cmpe #0dfh
brnz .InvInpt
br .DoLRCLmode
.InvInpt:
call LR_Prepare
call .I_trans_Z
br .MarkDP2
.DoQuad:
call .X_trans_I
lda0 .KeyPos
cmpe #0dfh
brnz .QuadInp
br .DoLRCLmode
.QuadInp:
call QR_Prepare
call .I_trans_Z
br .MarkDP2
.DoLRCLmode:
call .ClrX
lda #02h
sta0 OperandX+6
call .SimeCounter
br .MarkDP2
;-------------------------------------------
.PercentEqu:
decdp
lda i
sta DP
lda #02h
sta PP
lda i
cmpe #0a4h
brz .Pecadd
cmpe #0a5h
brz .Pecdec
cmpe #0a6h
brz .Pecmul
cmpe #0a7h
brz .Pecdiv
br .IsEqu ;.EndPercentEqu
.Pecadd:
lda #0h
sta PP
call .Percent_Add
br .EndPercentEqu
.Pecdec:
lda #0h
sta PP
call .Percent_Dec
br .EndPercentEqu
.Pecmul:
lda #0h
sta PP
call .X_trans_B
call .Percent_Mul
call .B_trans_X
lda #>.SetFlag
sta PP
lda .SetFlag
anda #~80h
ora #80h
sta .SetFlag
br .EndPercentEqu
.Pecdiv:
lda #0h
sta PP
call .Percent_Div
br .EndPercentEqu
.EndPercentEqu:
br .MarkDP2
;-------------------------------------------
.ClearrMem::
lda #01h
sta PP
lda StateFlag
anda #88h ;;COMP && basen
brnz .CompClr
lda StateFlag
anda #47h
brz .EndClearMem
;call QR_Scl
;call .MCL
;br .EndClearMem
.CompClr:
call .MCL
call .ClrZ
call .Z_trans_I
;call QR_Scl
.EndClearMem:
ret
;-------------------------------------------
.MarkDP1:
lda #0h
sta0 .ErrorCnt
lda0 ErrorFlag
cmpe #0h
brnz .EndCalcVal
lda #02h
sta PP
lda0 .P2DP
sta DP
lda0 .P3DP
sta i
call .StoResult
lda0 .IndexDP
sta DP
lda #03h
sta PP
lda #0ffh
sta i
incdp
lda0 .P2DP
sta i
decdp
lda DP
sta0 .IndexDP
lda0 .P2DP
inca
sta0 .P2DP
lda #01h
sta0 .FinFlag
br .EndCalcVal
.MarkDP2:
lda #0h
sta0 .ErrorCnt
lda0 ErrorFlag
cmpe #0h
brnz .EndCalcVal
lda #02h
sta PP
lda0 .P2DP
sta DP
lda0 .P3DP
sta i
call .StoResult
lda0 .IndexDP
sta DP
lda #03h
sta PP
lda #0ffh
sta i
incdp
lda #0ffh
sta i
incdp
lda0 .P2DP
sta i
lda0 .P2DP
inca
sta0 .P2DP
lda #01h
sta0 .FinFlag
br .EndCalcVal
.EndCalcVal:
ret
;-------------------------------------------
.P3dataToZ:
lda0 .PsValDP
sta DP
lda #02h
sta PP
lda i
sta DP
.GetP3ToZ::
lda #03h
sta PP
lda i
sta0 SignZ
incdp
lda i
sta0 PointZ
lda #0h
sta i
incdp
lda i
sta0 OperandZ
lda #0h
sta i
incdp
lda i
sta0 OperandZ+1
lda #0h
sta i
incdp
lda i
sta0 OperandZ+2
lda #0h
sta i
incdp
lda i
sta0 OperandZ+3
lda #0h
sta i
incdp
lda i
sta0 OperandZ+4
lda #0h
sta i
incdp
lda i
sta0 OperandZ+5
lda #0h
sta i
incdp
lda i
sta0 OperandZ+6
lda #0h
sta i
lda #0h
sta0 OperandZ+7
call CheckOutData
ret
;-------------------------------------------
.StoResult:
lda0 .P3DP
cmpe #0a4h ;0dfh
brc .StackError
lda0 .P3DP
sta DP
lda #03h
sta PP
lda0 SignZ
sta i
incdp
lda0 PointZ
sta i
incdp
lda0 OperandZ
sta i
incdp
lda0 OperandZ+1
sta i
incdp
lda0 OperandZ+2
sta i
incdp
lda0 OperandZ+3
sta i
incdp
lda0 OperandZ+4
sta i
incdp
lda0 OperandZ+5
sta i
incdp
lda0 OperandZ+6
sta i
incdp
lda DP
sta0 .P3DP
br .EndStoResult
.StackError:
lda #03h
sta0 ErrorFlag
.EndStoResult:
ret
;-------------------------------------------
.PushSkData::
lda #03h
sta PP
lda #0h
sta DP
sta0 Temp2
lda #50h
sta i
incdp
lda DP
sta0 Temp2
lda #50h
sta0 Temp1
.SearchPS:
lda0 Temp1
sta DP
lda #02h
sta PP
lda i
cmpe #0eeh
brz .EndPushSkData
cmpe #0ffh
brz .StoDataDP
cmpe #0feh
brz .StoDataDP
incdp
lda DP
sta0 Temp1
br .SearchPS
.StoDataDP:
call .JumpOFF
lda #03h
sta PP
lda0 Temp2
sta DP
lda0 Temp1
sta i
lda0 Temp2
inca
sta0 Temp2
br .SearchPS
.EndPushSkData::
ret
;-------------------------------------------
.JumpOFF:
lda #02h
sta PP
lda0 Temp1
inca
sta0 Temp1
sta DP
lda i
cmpe #0eeh
brz .EndSetDP
cmpe #0ffh
brnz .EndSetDP
br .JumpOFF
.EndSetDP:
ret
;-------------------------------------------
.SaveToZ::
call .ClrZ
lda #0h
sta0 .PFlag
sta0 .Buf2
sta0 .NumCnt
sta0 .ZeroFlag
sta0 .PointFlag
lda #0h
sta PP
lda #OperandZ
sta0 .STDP
.Num2OPC:
lda #02h
sta PP
lda0 .PsValDP
sta DP
lda i
sta0 .DataBuf
cmpe #0ffh
brz .SetOPdata
cmpe #0c3h
brz .SetOPdata
cmpe #0eeh
brz .SetOPdata
cmpe #0a0h
brz .CntPoint
.StartSavenum:
lda0 .Buf2
cmpe #01h
brz .SaveInput
lda0 .DataBuf
cmpe #0h
brz .NextInput
lda #01h
sta0 .Buf2
.SaveInput:
lda0 .PFlag
anda #0fh
cmpe #0h
brz .NumIsL
.NumIsR:
lda0 .NumCnt
cmpe #0fh
brc .AddPSDP
lda #0h
sta PP
lda0 .STDP
sta DP
lda i
sta0 .DataBuf+1
ora .DataBuf
sta0 .DataBuf+1
cmpe #0h
brnz .NextDTr
lda0 .Buf2
cmpe #01h
brnz .NextInput
lda0 .ZeroFlag
cmpe #0h
brz .NextDPr
.NextDTr:
lda0 .DataBuf+1
sta i
lda #01h
sta0 .ZeroFlag
lda0 .NumCnt
inca
sta0 .NumCnt
lda0 .STDP
inca
sta0 .STDP
lda0 .PFlag
anda #0f0h
sta0 .PFlag
.NextDPr:
lda0 .PsValDP
inca
sta0 .PsValDP
lda0 .PointFlag
cmpe #01h
brnz .Num2OPC
lda0 PointZ
inca
sta0 PointZ
br .Num2OPC
.NumIsL:
lda0 .NumCnt
cmpe #0fh
brc .AddPSDP
lda0 .DataBuf
call .SftLeft
lda #0h
sta PP
lda0 .STDP
sta DP
lda i
sta0 .DataBuf+1
ora .DataBuf
sta0 .DataBuf+1
cmpe #0h
brnz .NextDTl
lda0 .Buf2
cmpe #01h
brnz .NextInput
lda0 .ZeroFlag
cmpe #0h
brz .NextDPl
.NextDTl:
lda0 .DataBuf+1
sta i
lda #01h
sta0 .ZeroFlag
lda0 .NumCnt
inca
sta0 .NumCnt
lda0 .PFlag
inca
sta0 .PFlag
.NextDPl:
lda0 .PsValDP
inca
sta0 .PsValDP
lda0 .PointFlag
cmpe #01h
brnz .Num2OPC
lda0 PointZ
inca
sta0 PointZ
br .Num2OPC
.NextInput:
lda0 .Buf2
cmpe #01h
brz .SaveInput
lda0 .PsValDP
inca
sta0 .PsValDP
br .Num2OPC
;-------------------------------------------
.CntPoint:
lda0 .PsValDP
inca
sta0 .PsValDP
lda0 .PointFlag
inca
sta0 .PointFlag
lda #01h
sta0 .Buf2
br .Num2OPC
.ChangSign:
lda #01h
sta0 SignZ
lda0 .PsValDP
inca
sta0 .PsValDP
br .Num2OPC
.AddPSDP:
lda0 .PsValDP
inca
sta0 .PsValDP
lda0 .NumCnt
inca
sta0 .NumCnt
lda0 .PointFlag
cmpe #01h
brnz .Num2OPC
lda0 PointZ
inca
sta0 PointZ
br .Num2OPC
;-------------------------------------------
.SetOPdata:
lda0 .PsValDP
inca
sta0 .PsValDP
lda #0h
sta PP
lda0 .NumCnt
suba PointZ
cmpe #0eh
brnc .NormalSus
lda #0h
sta PP
lda #0h
adda PointZ
suba .NumCnt
adda #0eh
sta0 PointZ ;PointZ = 0ff-allnum-PointZ-14
br .EndSaveToZ
.NormalSus:
lda #0h
sta PP
lda #0eh
suba .NumCnt
adda PointZ
sta0 PointZ
.EndSaveToZ:
lda #0h
sta0 OperandZ+5 ;get 10 bytes
sta0 OperandZ+6 ;
sta0 OperandZ+7
call CheckOutData
ret
.PointError:
lda #02h
sta0 ErrorFlag
br .EndSaveToZ
;-------------------------------------------
.ClrSK:
lda #02h
sta PP
lda #0f0h
sta DP
.ClrSKC:
lda DP
cmpe #0ffh
brz .ClrP3SK
lda #0h
sta i
incdp
br .ClrSKC
.ClrP3SK:
lda #03h
sta PP
lda #0h
sta DP
.ClrP3SKC:
lda DP
cmpe #4fh
brz .EndClrSKC
lda #0h
sta i
incdp
br .ClrP3SKC
.EndClrSKC:
ret
;===========================================
.MoveP3DP:
lda #03h
sta PP
lda #0h
sta0 .Buf2
sta0 .Buf1
.StartMove:
lda0 .Buf2
sta DP
lda i
sta0 .DataBuf
cmpe #0h
brz .EndMoveP3DP
cmpe #0ffh
brz .IncDP
.IncDP3:
lda #0h
sta i
lda0 .Buf1
sta DP
lda i
cmpe #0h
brz .AddrNull
lda0 .Buf1
inca
sta0 .Buf1
br .IncDP3
.AddrNull:
lda0 .DataBuf
sta i
lda0 .Buf2
inca
sta0 .Buf2
lda0 .Buf1
inca
sta0 .Buf1
br .StartMove
.IncDP:
lda #0h
sta i
lda0 .Buf2
inca
sta0 .Buf2
br .StartMove
.EndMoveP3DP:
ret
;===========================================
.ReSetP3ST:
lda #50h
sta0 .P3DP
lda #0h
sta0 .Buf2
lda #0f0h
sta0 .P2DP
.StartChang:
lda #03h
sta PP
lda0 .Buf2
sta DP
lda i
sta DP
cmpe #0h
brz .EndReSetP3STK
cmpe #0f0h
brnc .Nextcmpe
lda #02h
sta PP
lda i
sta DP
call .GetP3ToZ
lda #02h
sta PP
lda0 .P2DP
sta DP
lda0 .P3DP
sta i
incdp
lda DP
sta0 .P2DP
call .StoResult
lda #03h
sta PP
lda0 .Buf2
sta DP
lda0 .P2DP
deca
sta i
.Nextcmpe:
lda0 .Buf2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -