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

📄 main.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        tax
        lda     fu_hao_key_function+1,x
        pha
        lda     fu_hao_key_function,x
        pha
        rts
if_fu_hao_select:
        jsr     SINDChrInLoc    ;;80
        ldx     #0
is_fu_hao_first_screen_1:
        lda     SelKTab,x
        bpl     is_fu_hao_first_screen_2
        jmp     call_input_lmainu
is_fu_hao_first_screen_2:
        cmp     <KeyNo
        beq     is_fu_hao_first_screen_3
        inx
        bra     is_fu_hao_first_screen_1
is_fu_hao_first_screen_3:
        cmp     bkey_and_nkey+0
        beq     fu_hao_ban_if_no1
        cmp     bkey_and_nkey+1
        beq     fu_hao_ban_if_no1
        bra     fu_hao_not_equ2
fu_hao_ban_if_no1:
        lda     Iconleft>>8    ;;only right arrow
        and     #<Iconleft
        bne     fu_hao_not_equ2
        jmp     call_input_lmainu
fu_hao_not_equ2:
        txa
        asl
        tay
        iny
        lda     (<IND),y
        tax
        cpx     #' '
        bne     fu_hao_input_ok
        jmp     call_input_lmainu
fu_hao_input_ok:
        jmp     Dci8

;;[P]-----------------------------------------------[P]
;;       中文输入。
;;[P]-----------------------------------------------[P]
ChineseChrIn:
        lda     <ScanFF         ;; ScanF flag.
        and     #00000011b      ;; Get mode only.
        asl
        asl                     ;; mode *= 4.
        tax                     ;;
        tay

        lda     MdKpTab,y
        sta     <INSL
        lda     MdKpTab+1,y
        sta     <INSH

funi0:  ldy     #0
funi1:  lda     (<INS),y
        bmi     NorKPrc         ;; Branch if ned of key code table.

        cmp     <KeyNo          ;; Key code equal ?
        beq     funi2           ;; Yes !
        iny                     ;; Next key code table.
        bra     funi1

funi2:  tya
        asl
        tay
        lda     MdKpTab+2,x     ;; Get key process address table.
        sta     <INSL
        lda     MdKpTab+3,x
        sta     <INSH

        lda     (<INS),y
        tax
        iny
        lda     (<INS),y
        pha
        phx
        rts

;;[P]-----------------------------------------------[P]
;;       Normal key process.
;;[P]-----------------------------------------------[P]
NorKPrcTab:
        dw      CNKPrcTab       ;; 拼音输入法。
        dw      CNKPrcTab       ;; 五笔输入法。
        dw      SNKPrcTab       ;; 总笔划输入法。

;;SpecialKeyTab:
;;       db      pgup,UpKey,pgdown,LeftKey,DownKey,RightKey
;;AscSpecialTab:
;;       db      '#-:()@'
NorKPrc:
        lda     <IME
        and     #00000011b
normal_key:
        asl
        tax
        lda     NorKPrcTab,x
        sta     <INS
        lda     NorKPrcTab+1,x
        sta     <INS+1

        lda     <ScanFF
        and     #00000011b
        asl
        tay
        iny
        lda     (<INS),y
        pha
        dey
        lda     (<INS),y
        pha
        rts

;;[P]-----------------------------------------------[P]
;;       Mode 0 normal key process.
;;       for 总笔划输入法。
;;[P]-----------------------------------------------[P]
SNK0Prc:
        jsr     SetChinInBuf    ;; Set chinese input buffor location.
        ldx     #0ffh
sk0p1:  inx
        lda     DigKTab1,x
        bpl     sk0p2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        lda     (<IND)
        cmp     #' '
        bne     InvalidKeypress
        jmp     sk0p9           ;; End of table.
InvalidKeypress:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2001-11-19 11:47
        jmp     call_input_lmainu              ;;1-11-12 17:20

sk0p2:  cmp     <KeyNo
        bne     sk0p1

        ldy     #0
        lda     (<IND),y
        cmp     #' '
        beq     sk0p3
        iny
sk0p3:  lda     DigChrTab1,x
        sta     (<IND),y
        tya
        bne     StrPrc          ;; 两位数!

        ldy     #0
        lda     (<IND),y
sk0p4:  cmp     #(MaxSStrNo/10)+'0'+1   ;; 简体中文最多笔划。
sk0p5:  bcc     sk0p8                   ;; 第一位数未超过。
;;[P]-----------------------------------------------[P]
;;       按'Enter' or
;;       已经两位数或第一位数超过最大笔划。
;;[P]-----------------------------------------------[P]
StrPrc:
        jsr     SetChinInBuf    ;; Set chinese input buffor location.
        ldy     #1
        lda     (<IND),y
        cmp     #' '
        bne     sk0p7
        ldy     #0
        lda     (<IND),y
        iny
        sta     (<IND),y
        lda     #'0'
        ldy     #0
        sta     (<IND),y

sk0p7:
        lda     <DRRh
        pha
        lda     <DRRl
        pha
        lda     #<AtBank0Bank
        sta     <DRRl
        lda     #>AtBank0Bank
        sta     <DRRh

        ldy     #1
        lda     (<IND),y
        sec
        sbc     #'0'
        sta     (<IND),y
        dey
        lda     (<IND),y
        sec
        sbc     #'0'
        asl
        ldy     #0              ;; *=2.
        sta     (<IND),y
        asl                     ;; *=4.
        asl                     ;; *=8.
        clc
        adc     (<IND),y
        ldy     #1
        adc     (<IND),y
        beq     StrErr          ;; 笔划 0。
        cmp     #MaxSStrNo+1    ;; 简体中文最多笔划。
        bcs     StrErr
        cmp     #NullStr1
        beq     StrErr
        cmp     #NullStr2
        beq     StrErr
        cmp     #NullStr3
        beq     StrErr

        dea
        asl
        tax

        lda     ZBH_INDEX,x
        sta     PhonStr
        sta     PhonNo
        lda     ZBH_INDEX+1,x
        sta     PhonStr+1
        sta     PhonNo+1

        lda     ZBH_INDEX+2,x
        sta     PhonEnd
        lda     ZBH_INDEX+3,x
        sta     PhonEnd+1

        jmp     Pcca

sk0p8:  jmp     call_input_lmain

Sk0p9:  ;;smb6    <EFlag          ;; Set key press even flag.
        jmp     Dci9

StrErr: jmp     PhonErr

SNK2Prc:
        jmp   call_input_lmain

;;[P]-----------------------------------------------[P]
;;       Mode 0 normal key process.
;;       for 罗马拼音 or 五笔型输入法。
;;[P]-----------------------------------------------[P]
CMd0NKPrc:
        jsr     SetChinInBuf    ;; Set chinese input buffor location.
        ldx     #0
        lda     <IME
        cmp     #IME5Code
        bne     cmd02
cmd01:  inx
cmd02:  lda     EngKTab,x
        bpl     cmd025          ;;
        lda     (<IND)
        cmp     #' '
        beq     ForBigBug
        jmp     call_input_lmainu
ForBigBug:
        smb6    <EFlag          ;; Set key press even fla
        jmp     call_input_lmainu
cmd025: cmp     <KeyNo
        bne     cmd01

        ldy     #0ffh
cmd03:  iny
        cpy     #5+1
        bcc     cmd04
        ldy     #5
        bra     cmd05

cmd04:  lda     (<IND),y
        cmp     #' '
        bne     cmd03

cmd05:  lda     EngChrTab,x
        sta     (<IND),y
        lda     <IME
        cmp     #IME5Code       ;; 五笔型输入法?
        beq     cmd07

        cpy     #6-1
        bne     cmd08
cmd06:  jmp     EnterPrc

cmd07:  cpy     #4-1
        beq     cmd06

cmd08:
        tya                     ;;
        bne     cmd08_0         ;;
cmd08_0:                        ;;
        jmp     call_input_lmain

;;[P]-----------------------------------------------[P]
;;       Mode 1 normal key process : select word .
;;       for 汉音输入。
;;[P]-----------------------------------------------[P]
Md1NKPrc:
        jsr     SINDChrInLoc    ;; Set IND to Char input loction.
md1kp0: ldx     #0
md1kp1: lda     SelKTab,x
        ;;bmi     Sk0p9           ;; End of table.
        bpl     Sk0p9_xx
        jmp     call_input_lmainu
Sk0p9_xx:
        cmp     <KeyNo
        beq     md1kp3
        inx
        bra     md1kp1

md1kp3: txa
        asl
        tay
        lda     (<IND),y
        tax
        iny
        lda     (<IND),y
        tay
        cpx     #' '
        beq     md1kpend        ;; Null word.

Md1NkPOK:
        bbs2    <InputFlag,md1kp7       ;;2001-5-17 10:16
        stx     <CharL          ;;2001-4-25 20:29
        sty     <CharH
        smb0    <InputFlag
Md1NkPOK_0:
md1kp6:
        smb6    <EFlag          ;; Set key press even flag.
        jsr     MyInitScanF

Md2NKPrc:
md1kpend:
        jmp     call_input_lmainu

md1kp7:                         ;;2001-5-17 10:16

        lda     <keyno
        cmp     DgFKTab+2
        bne     ?my_md1kp6

        lda     #80h
        sta     <KeyNo
?my_md1kp6:
        bra    md1kp6
;;[P]-----------------------------------------------[P]
;;       Mode 3 normal key process.
;;       for 拼音输入。
;;[P]-----------------------------------------------[P]
Md3NKPrc:
        jsr     MyInitScanF       ;; Set to input step 0.
        jmp     ChineseChrIn

;;[P]-----------------------------------------------[P]
;;       Next phonetic word group.
;;[P]-----------------------------------------------[P]
NextGrp:
        jsr     SINDChrInLoc    ;; Set IND to Char input loction.
        ;lda     IconRight>>8
        ;and     #10h            ;;Right arrow
        lda     IconRight>>8
        and     #<IconRight
        bne     nxg3
        jmp     call_input_lmainu
nxg3:   lda     <IME
        cmp     #IMEStroke
        beq     nxg5
        clc
        lda     PhonLoc
        adc     #20
        bra     Lsg5
nxg5:   lda     PhonNo
        clc
        adc     #20
        sta     PhonNo
        lda     PhonNo+1
        adc     #0
        sta     PhonNo+1

nxg6:
        bra     Lsg6

;;[P]-----------------------------------------------[P]
;;       Last phonetic word group.
;;[P]-----------------------------------------------[P]
LastGrp:
        jsr     SINDChrInLoc    ;; Set IND to Char input loction.

        lda     Iconleft>>8    ;;left arrow
        ;and     #1
        and     #<Iconleft
        bne     lsg3
        jmp   call_input_lmainu

lsg3:   lda     <IME
        cmp     #IMEStroke
        beq     lsg8

        sec
        lda     PhonLoc
        sbc     #20
Lsg5:   sta     PhonLoc
Lsg6:   jsr     ShowPhonWord            ;; Show phonetic word.
        jmp     call_input_lmain

lsg8:   lda     PhonNo
        sec
        sbc     #20
        sta     PhonNo
        lda     PhonNo+1
        sbc     #0
        sta     PhonNo+1

lsg9:
        bra     Lsg6

;;[P]-----------------------------------------------[P]
;;       Symbole input.
;;[P]-----------------------------------------------[P]
Up_Char:
        ldx     #'-'
        bra     PointIn_0
Down_Char:
        ldx     #'+'
        bra     PointIn_0
SpaceIn:
        ldx     #' '
        bra     symin
QuesIn:
StarIn:
        lda     <ime
        and     #3
        cmp     #2
        bne     ?StarInxxx
        bbs4    <ScanFF,?StarInxxx      ;yiadd 2-8-19 14:15
        jmp     normal_key
?StarInxxx:
        ldx     #'?'    ;;#'*'
        lda     #IconShift&0ffh
        trb     IconShift>>8
        beq     StarIn_0
        ldx     #'*'
StarIn_0:
        bra     PointIn_0
PointIn:
        ldx     #'.'
symIn:  bbs3    <ScanFF,endsym  ;; Branch if fix chinese input mode.
        lda     #IconShift&0ffh
        trb     IconShift>>8
        beq     PointIn_0
        cpx     #' '
        beq     PointIn_1
        ldx     #','
        bra     PointIn_0
PointIn_1:
        ldx     #';'
PointIn_0:
        txa
        jmp     Dci8

endsym: jmp   call_input_lmainu

;;[P]-----------------------------------------------[P]
;;       中/英切换
;;[P]-----------------------------------------------[P]
ExEnCh: lda     <ScanFF
        and     #00110000b
        beq     ExIme           ;; 中文 mode.
;;[P]-----------------------------------------------[P]
;;       英->'数字'切换
;;[P]-----------------------------------------------[P]
En2Dig: lda     <ScanFF
        and     #00001100b

⌨️ 快捷键说明

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