📄 oppotriangle_0225.asm
字号:
.Condition1: ;x<=0.5
call .DoT1
call .DoP1
call .Z_trans_S
call .DoQ1
call .DoW1
call .Result1
ret
;------------------------------------------------------
.Condition2: ;x>0.5 =<1
call .DoW2
call .DoT2
call .DoP1
call .DoQ1
call .DoW1
call .ClrX
call .Put_1_to_OperandX
call .Z_trans_Y
call Addition
call .Z_trans_B
call .DoS
call .Result2
ret
;------------------------------------------------------
.Result1:
call .ClrX
call .Put_1_to_OperandX
call .Z_trans_Y
call Addition
call .Buf_trans_X
call .Z_trans_Y
call Multiplation
ret
;------------------------------------------------------
.Result2:
call .Z_trans_Y
call .B_trans_X
call Multiplation
call .ClrX
lda #Int2
sta .M_Data_Offset
call .InpData
call .Z_trans_Y
call Multiplation
lda #H_PI
sta .M_Data_Offset
call .InpData
call .Z_trans_Y
call Subtration
ret
;------------------------------------------------------
.AsinPs:
call .DoZMulPs5
call .DoPs4AddZ
call .DoXMulZ
call .DoPs3AddZ
call .DoXMulZ
call .DoPs2AddZ
call .DoXMulZ
call .DoPs1AddZ
call .DoXMulZ
call .DoPs0AddZ
call .DoXMulZ
ret
;------------------------------------------------------
.AsinQs:
call .DoZMulQs4
call .DoQs3AddZ
call .DoXMulZ
call .DoQs2AddZ
call .DoXMulZ
call .DoQs1AddZ
call .DoXMulZ
ret
;------------------------------------------------------
.DoW1:
call .Z_trans_Y
call .S_trans_X
call Division
ret
;------------------------------------------------------
.DoP1:
call .AsinPs
call .Z_trans_S
ret
;------------------------------------------------------
.DoQ1:
call .AsinQs
call .ClrX
call .Put_1_to_OperandX
call .Z_trans_Y
call Addition
ret
;-------------------------------------------------------
.DoInpX::
lda #X
sta .M_Data_Offset
call .InpData
ret
;-------------------------------------------------------
.DoT1:
call .X_trans_Buf
call .X_Squ
call Multiplation
call .Z_trans_B
ret
;-------------------------------------------------------
.DoZMulPs5:
lda #pS5
sta .M_Data_Offset
call .InpData
call .B_trans_Y
call Multiplation
ret
;-------------------------------------------------------
.DoPs4AddZ:
lda #pS4
sta .M_Data_Offset
call .InpData
call .Z_trans_Y
call Addition
ret
;-------------------------------------------------------
.DoPs3AddZ:
lda #pS3
sta .M_Data_Offset
call .InpData
call .Z_trans_Y
call Addition
ret
;-------------------------------------------------------
.DoPs2AddZ:
lda #pS2
sta .M_Data_Offset
call .InpData
call .Z_trans_Y
call Addition
ret
;-------------------------------------------------------
.DoPs1AddZ:
lda #pS1
sta .M_Data_Offset
call .InpData
call .Z_trans_Y
call Addition
ret
;-------------------------------------------------------
.DoPs0AddZ:
lda #pS0
sta .M_Data_Offset
call .InpData
call .Z_trans_Y
call Addition
ret
;-------------------------------------------------------
.DoXMulZ:
call .B_trans_Y
call .Z_trans_X
call Multiplation
ret
;-----------------------------------------------------
.InpData::
;lda OP1
;anda #~10h
;sta OP1
call .ClrX
lda #0h
sta TPP
lda #@(SinCos)
sta TableC+1
lda #<(SinCos)
adda .M_Data_Offset
sta TableC
brnc .Tpl_No_Carry
lda TableC+1
inca
sta TableC+1
.Tpl_No_Carry:
lda #0h
sta TPP
lda TableC+1
sta TPH
lda TableC
sta TPL
ldv
sta SignX
ldv
sta PointX
lda #OperandX
sta DP
.Inp:
ldv
cmpe #0ffh
brz .End_Inp
sta i
incdp
br .Inp
.End_Inp:
;lda OP1
;ora #10h
;sta OP1
ret
;------------------------------------------------
.InpDataToY::
;lda OP1
;anda #~10h
;sta OP1
call .ClrY
lda #0h
sta TPP
lda #@(SinCos)
sta TableC+1
lda #<(SinCos)
adda .M_Data_Offset
sta TableC
brnc .TplNoCarry
lda TableC+1
inca
sta TableC+1
.TplNoCarry:
lda #0h
sta TPP
lda TableC+1
sta TPH
lda TableC
sta TPL
ldv
sta SignY
ldv
sta PointY
lda #OperandY
sta DP
.InpY:
ldv
cmpe #0ffh
brz .End_InpY
sta i
incdp
br .InpY
.End_InpY:
;lda OP1
;ora #10h
;sta OP1
ret
;-------------------------------------------------
.InpDataToT::
;lda OP1
;anda #~10h
;sta OP1
call .ClrY
lda #0h
sta TPP
lda #@(Atan)
sta TableC+1
lda #<(Atan)
adda .M_Data_Offset
sta TableC
brnc .TplNoCarryTan
lda TableC+1
inca
sta TableC+1
.TplNoCarryTan:
lda #0h
sta TPP
lda TableC+1
sta TPH
lda TableC
sta TPL
ldv
sta SignY
ldv
sta PointY
lda #OperandY
sta DP
.InpYTan:
ldv
cmpe #0ffh
brz .End_InpYTan
sta i
incdp
br .InpYTan
.End_InpYTan:
;lda OP1
;ora #10h
;sta OP1
ret
;------------------------------------------------------
.DoW2:
call .X_trans_Buf
call .Buf_trans_Y
call .ClrX
call .Put_1_to_OperandX
call Subtration
ret
;------------------------------------------------------
.DoT2:
call .Z_trans_Y
lda #Point5
sta .M_Data_Offset
call .InpData
call Multiplation
call .Z_trans_B
ret
;------------------------------------------------------
.DoS:
call .ClrX
call .Put_1_to_OperandX
call .Buf_trans_Y
call Subtration
call .Z_trans_X
call Squ
lda #c_hsqrt2
sta .M_Data_Offset
call .InpData
call .Z_trans_Y
call Multiplation
ret
;-------------------------------------------------------
.DoZMulQs4:
lda #qS4
sta .M_Data_Offset
call .InpData
call .B_trans_Y
call Multiplation
ret
;-------------------------------------------------------
.DoQs3AddZ:
lda #qS3
sta .M_Data_Offset
call .InpData
call .Z_trans_Y
call Addition
ret
;-------------------------------------------------------
.DoQs2AddZ:
lda #qS2
sta .M_Data_Offset
call .InpData
call .Z_trans_Y
call Addition
ret
;-------------------------------------------------------
.DoQs1AddZ:
lda #qS1
sta .M_Data_Offset
call .InpData
call .Z_trans_Y
call Addition
ret
;------------------------------------------------------
;Atan
;------------------------------------------------------
.ChoiceX:
call .Buf_trans_X ;2002 7/12
lda #Num1
sta .M_Data_Offset
call .InpDataToT
call LineUp
lda #OperandX
sta Addr1
lda #OperandY
sta Addr2
lda #.CmpLen ;2002.02.21 06
sta DpCount
call CompareData
call .Buf_trans_X ;2002 7/12
lda Temp1
cmpe #02h
brz .Id4
lda #Num2 ;x<1.1875
sta .M_Data_Offset
call .InpDataToT
call LineUp
lda #OperandX
sta Addr1
lda #OperandY
sta Addr2
lda #.CmpLen ;06 2002.02.21
sta DpCount
call CompareData
call .Buf_trans_X ;2002 7/12
lda Temp1
cmpe #02h
brz .Compare06875
lda #Num4 ;x<2.4375
sta .M_Data_Offset
call .InpDataToT
call LineUp
lda #OperandX
sta Addr1
lda #OperandY
sta Addr2
lda #.CmpLen ;2002.02.21
sta DpCount
call CompareData
call .Buf_trans_X ;2002 7/12
lda Temp1
cmpe #02h
brz .Id2
br .Id3
.Compare06875:
lda #Num3
sta .M_Data_Offset
call .InpDataToT
call LineUp
lda #OperandX
sta Addr1
lda #OperandY
sta Addr2
lda #.CmpLen ;06 2002.02.21
sta DpCount
call CompareData
call .Buf_trans_X ;2002 7/12
lda Temp1
cmpe #02h
brz .Id0
br .Id1
.Id0: ;((2*x)-1)/(2+x)
;call .Buf_trans_X
lda #Int2T
sta .M_Data_Offset
call .InpDataToT
call Multiplation
lda #Int1T
sta .M_Data_Offset
call .InpDataToT
call .Z_trans_X
call Subtration
call .Z_trans_B
call .Buf_trans_X
lda #Int2T
sta .M_Data_Offset
call .InpDataToT
call Addition
call .B_trans_X
call .Z_trans_Y
call Division
call .Z_trans_Buf
lda #00h
sta .IdFlag
br .EndChoiceX
.Id1:
lda #Int1T
sta .M_Data_Offset
call .InpDataToT
call .Buf_trans_X
call Subtration
call .Z_trans_B
call .Buf_trans_X
lda #Int1T
sta .M_Data_Offset
call .InpDataToT
call Addition
call .B_trans_X
call .Z_trans_Y
call Division
call .Z_trans_Buf
lda #01h
sta .IdFlag
br .EndChoiceX
.Id2:
lda #Int1p5
sta .M_Data_Offset
call .InpDataToT
call .Buf_trans_X
call Subtration
call .Z_trans_B
lda #Int1p5
sta .M_Data_Offset
call .InpDataToT
call .Buf_trans_X
call Multiplation
lda #Int1T
sta .M_Data_Offset
call .InpDataToT
call .Z_trans_X
call Addition
call .B_trans_X
call .Z_trans_Y
call Division
call .Z_trans_Buf
lda #02h
sta .IdFlag
br .EndChoiceX
.Id3:
lda #Int1
sta .M_Data_Offset
call .InpData
call .Buf_trans_Y
call Division
lda #01h
sta SignZ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -