📄 scical.asm
字号:
?2:
ora #'0'
tax
?3:
lda <ox
pha
LDrawChar12
pla
sec
sbc #8
sta <ox
lda #72-8-8
sta <oy
?31:
plx
dex
bpl ?0
ldx #' '
bbr6 <MinusFlag,?1
ldx #'-'
?1: lda <ox
pha
LDrawChar12
pla
?4:
sec
sbc #16
bcc ?5
sta <ox
pha
ldx #' '
LDrawChar12
pla
bra ?4
?5:
rts
;[E]==============================================[E]
;===========================================
turnexp_hex_to_dec: ;先将DecExp 转换成dec形式放在:TextBuf,8 ~TextBuf,11. 如:1.23E+12
jsr ljsr
dw sci_addbank
dw turnexp_hex_to_dec_shift-1
rts
ShowDecExp:
lda #112+32-2 ;#112+32-6
sta <ox
lda #30+4 ;#30+4
sta <oy
lda DecExp
bpl ?1
eor #ffh
ina
?1: pha
lsr
lsr
lsr
lsr
tax ;将高半四位移出放 ---> x
pla
and #0fh ;低半字节处理.
cmp #0ah
bcc ?11
adc #5 ;a=a+6
?11:
sed
?2:
dex
bmi ?3
clc
adc #16h
bra ?2
?3:
cld
pha
and #0fh ;先显示低位
tax
LDrawNums ;J.A.
sec
lda <ox
sbc #6
sta <ox
pla ;再显示高位
lsr
lsr
lsr
lsr
tax
LDrawNums ;J.A.
sec
lda <ox
sbc #6
sta <ox
?4:
lda DecExp
bpl ?5
; bbs7 <DecExp,?5 ;指数符号显示
LoPrintImage FontMinuss
?5:
lda #80-38-3
sta <oy
lda #144-16
sta <ox
ldx #'0'
LDrawChar12
clc
lda <ox
sbc #8
sta <ox
ldx #'1' ;;*10
LDrawChar12
clc
lda #45
sta <oy
lda #104
sta <ox
LoPrintImage FontMul
rts
ShiftF:
lda <ShiftFlag
eor #00100000b
sta <ShiftFlag
jsr ShowShift5
jmp jmplmainu
ShowShift:
bbs5 <Shiftflag,?21
loff_lcd_icon IconShift
jmp ShowShift1
?21:
Llight_lcd_icon IconShift
ShowShift1:
lupdate_all_icon
lda <OX
BEQ ?22
sta <Ox
lda #0
sta <OY
LOPrintImage caclbmp
?22:
rts
ShowShift5:
bbs5 <Shiftflag,?21
loff_lcd_icon IconShift
jmp ShowShift6
?21:
Llight_lcd_icon IconShift
ShowShift6:
lupdate_all_icon
rts
new_digit_ClearNum:
ldx #11
lda #0ffh
?1: sta TextBuf+1,x
dex
bpl ?1
stz TextBuf
ldx #5
?2: stz Fac_Exp,x
dex
bpl ?2
stz CharNum
stz StatusFlag
stz DecExp
stz DecText
stz DecText+1
LCls
rts
ClearNum:
ldx #11
lda #0ffh
?1: sta TextBuf+1,x
dex
bpl ?1
stz TextBuf
ldx #5
?2: stz Fac_Exp,x
dex
bpl ?2
stz CharNum
stz StatusFlag
stz DecExp
stz DecText
stz DecText+1
LCls
jsr ListNum
; jsr List_input_digit
rts
ClearF:
jsr ClearNum
jmp jmplmainu
AClearF:
jmp SciLoadx
; jmp SciLoad1
; jmp SciLoad
; jsr ClearNum
; stz Text4Index
; jmp jmplmainu
;144 pow(x,1/y) -
AddF:
SubF:
Subf1:
bbr0 <Perflag,?0
rmb0 <PerFlag
lda PKeyCode
cmp #DivK
bcc ?0
lda KeyCode
sta TextBuf4+6
lda #EquK
sta keyCode
lda #7
sta NumStack
rmb4 <RefreshFlag
jmp EqualF
?0: ldx NumStack
bne ?111
rmb1 <KFlag
?1:
jsr pushFac
LCls
jsr copy_fac_to_data_bak
jsr TranBinDec
jsr DisPlayNum
jsr copy_data_bak_to_fac
jsr ShowKFlag
smb4 <RefreshFlag
rmb3 <FuncFlag
jmp jmplmainu
?111:
lda KeyCode
bbr4 <RefreshFlag,?01
rmb4 <RefreshFlag
bbs3 <FuncFlag,?02
pha
jsr PopArg
pla
cmp KeyCode
bne ?112
jsr MovFA
jsr PushKMem
; bra SubF
bra ?1
?112:
sta KeyCode
jsr MovFA
bra SubF1
?02:
rmb3 <FuncFlag
?01: rmb1 <KFlag
pha
jsr PopArg
lda KeyCode
cmp #AddK
beq ?addf
cmp #SubK
beq ?subf
cmp #MulK
beq ?mulf
cmp #DivK
beq ?divf
cmp #XeyK
beq ?XeyF
cmp #Xe1YK
beq ?Xe1YF
pla
LDrawText ErrorTitle
jmp jmplmainu
?addf:
jsr FAddt_S
bra ?ok
?subf: jsr FSubt_s
bra ?ok
?mulf: jsr FMultt_s
bra ?ok
?divf:
jsr FDivt_s
bra ?ok
?XeYf:
; jsr FPWRT_S
jsr XeyfF
bra ?ok
?Xe1YF:
jsr SQR_X_Y
?ok:
pla
sta KeyCode
lda Err_Flag
; beq SubF
beq ?Subf1
jmp ShowErr
?Subf1: jmp SubF1
PushFac:
ldx NumStack
lda Fac_Exp
sta TextBuf4,x
inx
lda Fac_Ho
sta TextBuf4,x
inx
lda Fac_Moh
sta TextBuf4,x
inx
lda Fac_Mo
sta TextBuf4,x
inx
lda Fac_Lo
sta Textbuf4,x
inx
lda Fac_Sgn
sta TextBuf4,x
inx
lda KeyCode
sta TextBuf4,x
inx
stx NumStack
smb4 <RefreshFlag
rts
PopArg:
ldx NumStack
dex
lda TextBuf4,x
sta KeyCode
dex
lda TextBuf4,x
sta Arg_Sgn
dex
lda TextBuf4,x
sta Arg_Lo
dex
lda TextBuf4,x
sta Arg_Mo
dex
lda TextBuf4,x
sta Arg_Moh
dex
lda Textbuf4,x
sta Arg_Ho
dex
lda TextBuf4,x
sta Arg_Exp
stx NumStack
rts
DivF:
MulF:
MulF1:
rmb0 <PerFlag
ldx NumStack
beq ?savefac
dex
bbr4 <RefreshFlag,?001
bbs3 <Funcflag,?001
lda KeyCode
cmp TextBuf4,x
bne ?Mu1
cpx #6
bne ?Mu1
jsr pushKmem
jsr ShowKFlag
jsr ShowFunction
jmp jmplmainu
?Mu1: rmb1 <KFlag
sta Textbuf4,x
jsr ShowKFlag
jsr Showfunction
jmp jmplmainu
?001: rmb1 <KFlag
rmb3 <FuncFlag
lda TextBuf4,x
cmp #DivK
bcs ?operate
?savefac:
rmb1 <KFlag
rmb3 <FuncFlag
jsr PushFac
LCls
jsr copy_fac_to_data_bak
jsr TranBinDec
jsr DisPlayNum
jsr copy_data_bak_to_fac
smb4 <RefreshFlag
jmp jmplmainu
?operate:
lda KeyCode
pha
jsr PopArg
lda KeyCode
cmp #MulK
beq ?mulf
cmp #DivK
beq ?divf
cmp #XeYK
beq ?Xeyf
cmp #Xe1YK
beq ?Xe1Yf
pla
LdrawText Errortitle
jmp jmplmainu
?mulf:
jsr FMultt_S
bra ?ok
?divf:
jsr FDivt_s
bra ?ok
?XeYf:
; jsr FPwrt_s
jsr XeyfF
bra ?ok
?Xe1yf: jsr sqr_X_Y
?ok: pla
sta KeyCode
lda Err_Flag
; beq MulF
beq ?MulF1
jmp ShowErr
?MulF1: jmp MulF1
atanhf:
jsr ATanh_S
jmp ShowPreAns
acoshf:
jsr ACosh_s
jmp ShowPreAns
asinhf:
jsr ASinh_s
jmp ShowPreAns
tanhf:
jsr Tanh_s
jmp ShowPreAns
coshf:
jsr Cosh_s
jmp ShowPreAns
sinhf:
jsr Sinh_s
jmp ShowPreAns
Xe2f: jsr Pwr_x_2
jmp ShowPreans
b10exf:
jsr Pwr_10_X
jmp ShowPreAns
exf:
jsr Exp_s
jmp ShowPreAns
sqrfotf:
lda fac_exp
bne ?fdsfd
stz fac_sgn
?fdsfd:
jsr Sqr_S
jmp ShowPreAns
xeyf:
jsr ShowXey
bra Xe1y1
xe1yf:
jsr ShowXe1y
Xe1y1:
rmb0 <PerFlag
ldx NumStack
beq ?savefac
dex
bbr4 <RefreshFlag,?001
bbs3 <Funcflag,?001
;===========================
lda KeyCode
cmp TextBuf4,x
bne ?XEY
cpx #6
bne ?XEY
jsr pushKmem
jsr ShowKFlag
jsr Showfunction
;===========================
jmp jmplmainu
?XEY: rmb1 <KFlag
sta Textbuf4,x
jsr ShowKFlag
jsr Showfunction
jmp jmplmainu
?001: rmb1 <KFlag
rmb3 <FuncFlag
lda TextBuf4,x
cmp #XeYK
bcs ?operate
?savefac:
rmb1 <KFlag
rmb3 <FuncFlag
jsr PushFac
LCls
jsr copy_fac_to_data_bak
jsr TranBinDec
jsr DisPlayNum
jsr copy_data_bak_to_fac
smb4 <RefreshFlag
jsr showfunction
jmp jmplmainu
?operate:
lda KeyCode
pha
jsr PopArg
lda KeyCode
cmp #XeYK
beq ?XeyF
cmp #Xe1YK
beq ?Xe1YF
pla
LdrawText Errortitle
jmp jmplmainu
?XeYF:
; jsr FPWRT_S
jsr XeyfF
bra ?ok
?Xe1YF:
jsr SQR_X_Y
?ok: pla
sta KeyCode
lda Err_Flag
; beq MulF
beq ?XEYF1
jmp ShowErr
?XEYF1: jmp Xeyf
hypf:
lda #ds0bank
sta <drr
lda #00100000b
eor <Hypflag
sta <HypFlag
jsr Showhyp
rmb5 <ShiftFlag
jsr ShowShift5
jmp jmplmainu
anglef:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -