📄 squ.asm
字号:
;/subrutine name : Squ.asm
;/user bady :
;/fast clock :
;/slow clock :
;/programer : Alton
;
;
;
;-------------------------------------------
.area Squ_code(code,rel)
.Squ::
Squ::
lda SignX
cmpe #01h
brz .Error
lda #OperandX
sta Addr1
call CheckData
lda PointX
suba DpCount
sta PointX
call .X_trans_I ;SourceX
lda DpCount
cmpe #0h
brz .EndSqu
sta PointX
call .X_trans_Buf ;Buf Store X
call .ClrY
lda #01h ;Y=1+X
sta OperandY+6
call Addition
call .YisPoint5
call .Z_trans_R
.CalcSqu:
call .R_trans_Y ;R store a
call .Buf_trans_X
call Division
call .Z_trans_X
call .R_trans_Y
call Addition
call .YisPoint5
call .Z_trans_B ;B store b
call .B_trans_X
call .R_trans_Y
call Subtration
lda #0h
sta SignZ
call .Z_trans_X
call .ClrY
lda #01h
sta OperandY+6
lda #0eh
sta PointY
call Subtration
lda #OperandZ
sta Addr1
call CheckData
lda DpCount
cmpe #0h
brz .AddExp
lda SignZ
cmpe #01h
brz .AddExp
call .B_trans_X ;a=b;
call .X_trans_R
br .CalcSqu
.AddExp:
call .R_trans_X
call .X_trans_Buf
call .I_trans_X
lda PointX
cmpe #80h
brc .Beyond0
call .GetQ
lda OperandX+6
cmpe #0h
brnz .2$
call .Put_1_to_OperandX
lda PointY
br .6$
.2$:
call .Squ10
call .Z_trans_X
.3$:
lda PointY
inca
.6$:
sta PointY
lda #01h
sta OperandY+6
call Multiplation
call .Z_trans_Y
call .Buf_trans_X
call Multiplation
.EndSqu:
ret
;-------------------------------------------
.Beyond0:
call .GetQ
lda OperandX+6
cmpe #0h
brnz .4$
call .Put_1_to_OperandX
br .5$
.4$:
call .Squ10
call .Z_trans_X
.5$:
lda #0h
suba PointY
br .6$
;-------------------------------------------
.GetQ:
call .ClrX
call .I_trans_Z
lda0 PointZ
cmpe #80h
brnc .9$
lda #0h
suba PointZ
sta0 PointZ
.9$:
lda #>.M_hexbuf
sta PP
lda0 PointZ
sta .M_hexbuf+1
call .Hex2Bcd
anda #01h
sta0 OperandX+6
call .ClrY
lda #>.M_hexbuf
sta PP
lda .M_bcdbuf+1
sta .M_bcdbuf
call .bcdtohex
rorc
sta0 PointY
lda #0h
sta PP
ret
;-------------------------------------------
.Squ10:
lda #@(Squ10)
sta TableC+1
lda #<(Squ10)
sta TableC
lda #0h
sta .M_Data_Offset
call .GetTabVal
ret
.YisPoint5:
call .ClrY
lda #05h
sta OperandY+6 ;Y=Y*0.5
lda #01h
sta PointY
call .Z_trans_X
call Multiplation
ret
.Error:
lda #01h
sta ErrorFlag
ret
Squ10::
DB 000h,00dh,031h,062h,027h,076h,060h,016h,083h,0ffh
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -