📄 main.asm
字号:
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 + -