⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scical.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 4 页
字号:
        lda     #00000001b
        eor     Float_Stat
        sta     Float_Stat
        jsr     Showangle
        jmp    jmplmainu
Exp10F:
        lda     exp_flag
        beq     ?skip_clr_fac_disp
        stz     DecText+1
        stz     DecText
        stz     decexp
        ldx     #6
?1:                            ;memory 7个字节 清除
        stz     Fac_Exp,x      ;Fac_Exp7个字节 清除
        dex
        bpl     ?1
    jsr  copy_fac_to_data_bak
        jsr     TranBinDec
        jsr     displaynum
    jsr  copy_data_bak_to_fac
        stz     exp_flag
?skip_clr_fac_disp:
        rmb3    <ExpMinFlag
        smb4    <ExpFlag
        jsr     ShowDecExp
        jmp    jmplmainu
pif:    jsr     Pi
        bra     ShowPreAns

LogF:
        jsr     Log_s
        bra     ShowPreAns

LnF:    jsr     Ln_s
        bra     ShowPreAns

ExpF:   jsr     Exp_s
        bra     ShowPreAns

XStepf: jsr     Xi_s
        lda     Err_Flag
        beq     ?1
        jmp     ShowErr
?1:
        stz     fac_exp+5   ;07/17/2002

        bra     ShowPreAns

InvF:
        jsr     X_Inv
        bra     ShowPreAns

RootF:  jsr     Sqr_s
        bra     ShowPreAns

SinF:
        jsr     Sin_S
        bra     ShowPreAns

CosF:   jsr     Cos_S
        bra     ShowPreAns

TanF:   jsr     Tan_S
        bra     ShowPreAns

ASinF:  jsr     ASin_S
        bra     ShowPreAns

ACosF:  jsr     ACos_S
        bra     ShowPreAns

ATanF:  jsr     ATn_S

ShowPreAns:
        LCls
        lda     Err_Flag
        bne     ?error
    jsr  copy_fac_to_data_bak
        jsr     TranBinDec
        jsr     DisPlayNum
    jsr  copy_data_bak_to_fac
        smb4    <RefreshFlag
        jmp    jmplmainu
?error:
ShowErr:
        jsr     ClearNum
        smb2    <ErrFlag
        LCls
        stz     <ox
        lda     #16    ;1
        sta     <oy
        lda     #ds0bank
        sta     <drr
        LDrawText ErrorTitle
        stz     <ox
        lda     #48    ;3
        sta     <oy
        lda     Err_Flag
        cmp     #35H
        beq     ?ListErr1
        cmp     #45H
        beq     ?ListErr2
        cmp     #85H
        beq     ?ListErr3
        bra     ?ListErr4
?ListErr1:
        LDrawText OutRangeTitle
        bra     ?ListErr4
?ListErr2:
        LDrawText OverFlowTitle
        bra     ?ListErr4
?ListErr3:
        LDrawText ZeroTitle
?ListErr4:
        smb4    <RefreshFlag
        jmp    jmplmainu
MCF:
        ldx     #6
?1:     stz     memory_bak,x
        dex
        bpl     ?1
;       rmb7    <MemFlag
        stz     MemFlag_bak
;       smb4    <RefreshFlag
        jsr     ShowMemFlag
        jmp    jmplmainu

ShowMemFlag:
        lda     #33
        sta     <ox
        lda     #1
        sta     <oy
;       bbr7    <MemFlag,?hideflag
        lda     MemFlag_bak
        and     #80h
        beq     ?hideflag
?showflag:
        LoPrintImage     FontM
        rts
?hideflag:
        LoClrImage       FontM
        rts

ShowKFlag:
        lda     #89
        sta     <ox
        lda     #1
        sta     <oy
        bbr1    <KFlag,?1
?hide:  LoPrintImage     FontK
        rts
?1:     LoClrImage       FontK
        rts
PushKMem:
        lda     KeyCode
        sta     KKeyCode
        jsr     call_data_if_ok
        ldy     #>KMem
        ldx     #<KMem
        stz     <state_buf1
        jsr     MovMF
        lda     #00000010b
        eor     <KFlag
        sta     <KFlag
        rts

;;*********************
;;   显示TextBuf内容:
;;*********************
DisplayNum:
;============================ add 2002-07-22
        lda     fac_exp+0
        cmp     #0ffh
        bcc     ?1
        lda     fac_exp+1
        cmp     #096h
        bcc     ?1
        lda     fac_exp+2
        cmp     #076h
        bcc     ?1
        lda     fac_exp+3
        cmp     #099h
        bcc     ?1
        lda     fac_exp+4
        cmp     #039h
        bcc     ?1
        jmp     memory_count_overflow
?1:
        LCls
        jsr      five_to_inc_1

        ldx     #11
?42:    lda     TextBuf,x
        bne     ShowDecNum
        dex
        bpl     ?42
        ldx     #11
        lda     #ffh
?43:    sta     TextBuf,x
        dex
        bne     ?43

        jsr     ListNum
        rts

ShowDecNum:
        jsr     CutTail

        lda     DecExp          ;读取十进位指数部分.
        cmp     #8              ;if > 9 则用浮点显示法.
        bcs     ?ShowFloat      ;否则用实数表示法.

        jsr     add_little_dot

        ldx     #8
?30200:
        lda     TextBuf,x
        cmp     #DotK
        bne     ?3020
        lda     #ffh
        sta     TextBuf,x
        dex
        bra     ?3021
?3020:  cmp     #ffh
        bne     ?30211
        dex
        bra     ?30200
?30211: cmp     #0              ;小数点右边若为 0 则填ff
        bne     ?3021           ;
        lda     #0ffh           ;
        sta     TextBuf,x       ;
        bra     ?30200          ;
?3021:  lda     TextBuf,x       ;小数点左边为若为ff 则填0
        cmp     #ffh            ;
        bne     ?3022           ;
        stz     TextBuf,x       ;
        dex                     ;
        bpl     ?3021           ;
?3022:
        jsr     ListNum
        rts

?ShowFloat:
        lda     DecExp
        cmp     #0f9h  ;fe
        bcc     ShowFloat

Realint:
        lda     DecExp
        eor     #ffh
        ina
        tay
?2:     ldx     #8
?1:     lda     TextBuf,x
        sta     TextBuf+1,x
        dex
        bpl     ?1
        stz     TextBuf
        dey
        bpl     ?2
?3:     lda     #DotK
        sta     TextBuf+1
        jsr     ListNum
        rts

ShowFloat:
        ldx     #7
?1:     lda     TextBuf,x
        sta     TextBuf+1,x
        dex
        bpl     ?1
        lda     #DotK
        sta     TextBuf+1
        jsr     ListNum
        jsr     ShowDecExp

        rts

;================================
TranBinDec:
        stz     DecExp
        jsr     JudgeZero
        bne     ?11
        ldx     #31
?12:    stz     TextBuf,x    ;若为零,全清textbuf
        dex
        bpl     ?12
        rmb6    <MinusFlag
        rts

?11:
        jsr     MovAF            ;copy fac to  arg
        ldx     #31
?1:     stz     TextBuf2,x       ;Textbuff 预设1
        stz     TextBuf,x        ;
        dex                      ;
        bne     ?1               ;

        lda     #1               ;
        sta     TextBuf2         ;
        stz     TextBuf

        ldy     #31             ; 32 bits[Fac_Lo,Mo,Moh,Ho] 四个字节!
?0:
        jsr     ShiftLFac       ;fac 左移 1bit[Fac_Lo,Mo,Moh,Ho]
        bcc     ?2

        clc                     ;
        sed                     ;  TextBuf=TextBuf+TextBuf2
        ldx     #31             ;
?3:     lda     TextBuf2,x      ;
        adc     TextBuf,x       ;
        adc     #90h            ;
        and     #0fh            ;
        sta     TextBuf,x       ;
        dex                     ;
        bpl     ?3              ;
        cld                     ;

?2:
        ldx     #0              ;
?21:    lda     TextBuf2,x      ; Textbuf2/2
        lsr                     ;
        sta     TextBuf2,x      ;
        bcc     ?4              ;
        lda     #10             ;
        clc                     ;
        adc     TextBuf2+1,x    ;
        sta     TextBuf2+1,x    ;
?4:     inx                     ;
        cpx     #31             ;
        bcc     ?21             ;

        lsr     TextBuf2+15
        bcc     ?41
        sed
        ldx     #31
?42:    lda     #0
        adc     TextBuf2,x
        adc     #90h
        and     #0fh
        sta     Textbuf2,x
        dex
        bpl     ?42
        cld
?41:
        dey
        bpl     ?0

GetSign:
        lda     #10000000b
        bit     Fac_Sgn
        beq     ?a1
        smb6    <MinusFlag
        bra     ExcExpBinDec
?a1:    rmb6    <MinusFlag
        stz     DecExp
ExcExpBinDec:
        lda     Fac_Exp
        cmp     #81h
        bcc     Div2Textbuf
        bne     Mul2TextBuf

;============================================
;=======jrd add:2002   由于四舍五入强制将如:123.5678 499.. ==> 123.5678 500..
;============================================
        lda     textbuf+8
        cmp     #04h
        bne     ?skip_499_to_500
        lda     textbuf+9
        cmp     #07h
        bcc     ?skip_499_to_500
        lda     #05h
        sta     textbuf+8
        stz     textbuf+9
        stz     textbuf+10
        stz     textbuf+11
;       stz     textbuf+12
?skip_499_to_500:
        lda     decexp
        bmi     _ok
        cmp     #26h
        bcc     _ok
memory_count_overflow:
        lda     #85h
        sta     Err_Flag
        jmp     showerr  ;出错处理
_ok:
;============================================
        jsr     MovFA

        rts

Mul2Textbuf:
        dec     Fac_Exp
        sed
        clc
        ldx     #12
?1:     lda     TextBuf,x
        adc     TextBuf,x
        adc     #90h
        and     #0fh
        sta     TextBuf,x
        dex
        bpl     ?1
        cld
        bcc     ExcExpBinDec
        ldx     #11
?2:     lda     TextBuf,x
        sta     TextBuf+1,x
        dex
        bpl     ?2
        lda     #1
        sta     TextBuf

        lda     TextBuf+12
        cmp     #5
        bcc     ?41
        sed
        ldx     #11
?42:    lda     #0
        adc     TextBuf,x
        adc     #90h
        and     #0fh
        sta     Textbuf,x
        dex
        bpl     ?42
        cld
?41:
        inc     DecExp
        jmp     ExcExpBinDec
Div2TextBuf:
        inc     Fac_Exp
        stz     Textbuf+12

        lsr     TextBuf
        php
        ldx     #1
?1:     bcc     ?2
        lda     TextBuf,x
        adc     #9
        sta     TextBuf,x
?2:     lsr     TextBuf,x
        php
        inx
        cpx     #12
        bcs     ?21
        plp
        bra     ?1
?21:    plp
        plp

;       bne     ExcExpBinDec
        bne     ExcExpBinDec111

        dec     DecExp
        ldx     #0
?3:     lda     Textbuf+1,x
        sta     TextBuf,x
        inx
        cpx     #12
        bcc     ?3
ExcExpBinDec111:
        jmp     ExcExpBinDec

ShowAngle:
        lda     #2
        sta     <ox
        stz     <oy
        bbs0    <Float_stat,?show
?hide:  LoPrintImage     FontRad
        rts
?show:  LoPrintImage     FontDeg
        rts
ShowHyp:
        lda     #56
        sta     <ox
        lda     #1  ;1
        sta     <oy
        bbs5    <HypFlag,?show
?hide:  LoClrImage       FontHyp
        rts
?show:
        LoPrintImage     FontHyp

        rts
ShowAdd:
        jsr     ClrFuncKey
        lda     #96
        sta     <ox
        lda     #2
        sta     <oy
        LoPrintImage     FontAdd
        rts
ShowSub:
        jsr     ClrFuncKey
        lda     #96
        sta     <ox
        lda     #2
        sta     <oy
        LoPrintImage     FontSub
        rts
ShowMul:
        jsr     ClrFuncKey
        lda     #96
        sta     <ox
        lda     #2
        sta     <oy
        LoPrintImage     FontMulK
        rts
ShowDiv:
        jsr     ClrFuncKey
        lda     #96
        sta     <ox
        lda     #2
        sta     <oy
        LoPrintImage     FontDiv
        rts
ShowXey:
        jsr     ClrFuncKey
        lda     #96
        sta     <ox
        lda     #2
        sta     <oy
        LoPrintImage     FontXey
        rts
ShowXe1y:
        lda     #96
        sta     <ox
        stz     <oy
        LoPrintImage     FontXey1
        rts
ClrFuncKey:
        lda     #96
        sta     <ox
        stz     <oy
        loclrimage       FontXey1
        rts
Shownofun:
        rts

;四舍五入:
five_to_inc_1:
        lda     float_bit
        bne     five_to_inc_1_two
normal_five:
        lda     DecExp
        bmi     DecExp_is_minus_in_five_to_inc_1
        lda     #<(TextBuf+8)
        bra     DecExp_is_plus_in_five_to_inc_1
DecExp_is_minus_in_five_to_inc_1:
        cmp     #0f9h  ;fe
        bcs     _ff_or_fe_in_five_to_inc_1
        lda     #<(TextBuf+7)      ; 保存8位数
        bra     DecExp_is_minuse_has_exp

_ff_or_fe_in_five_to_inc_1:
;       inc
        clc
        adc     #<(TextBuf+8)      ; 保存8位数
DecExp_is_minuse_has_exp:
DecExp_is_plus_in_five_to_inc_1:
        sta     INXMOV
        lda     #>(TextBuf+8)
        sta     INXMOV1
;=====================
five_to_inc_for_digit_8:
        ldy     #0
        lda     (INXMOV),y      ;目
        pha                     ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -