📄 dicadd.asm
字号:
phy
phx
lda #140
sta tmpcount
jsr CatchOneFromY
cpy #140
bcs ?_OK
lda textbuffor,x
cmp #hanziqu
bcc ?_0
iny
pla
pla
bra ?_loop
?_0:
dey
pla
pla
bra ?_loop
?_OK:
lda textbuffor+139
cmp #xianshiguai
bne ?_2
pla
pla
bra ?_1
?_2:
plx
ply
lda textbuffor,x
cmp #HanziQu
bcc ?_1
?_1:
dex
txa
tay
jsr mode5R
rts
;;===================================
;;function:mode15 16 17第一次反显查找中文和英文Lkey
;;input:textbuffor
;;output:
;;===================================
mode15L:
?_loop:
phy
phx
lda #160
sta tmpcount
jsr CatchOneFromY
cpy #160
bcs ?_OK
lda textbuffor,x
cmp #hanziqu
bcc ?_0
iny
pla
pla
bra ?_loop
?_0:
dey
pla
pla
bra ?_loop
?_OK:
lda textbuffor+159
cmp #xianshiguai
bne ?_2
pla
pla
bra ?_1
?_2:
plx
ply
lda textbuffor,x
cmp #HanziQu
bcc ?_1
?_1:
dex
txa
tay
jsr mode15R
rts
;;====================================
;;function:从Y开始往右找一个可以选中的单词
;;input:Y
;;output:X & Y
;;===================================
CatchOneFromY:
?_loop:
iny
cpy tmpcount ;#120
bcc ?_continue
?_exit:
rmb0 <blackflag
rts
?_continue:
lda textbuffor,y
cmp #HanziQu
bcs ?_ishanzi
; cmp #'~'
; bne ?_canbeselect
;?_dealBoLangXian:
; iny
; cpy tmpcount ;#120
; bcs ?_exit
; lda textbuffor,y
; jsr judgeaz
; bne ?_dealBoLangXian
; dey
; bra ?_loop
;?_canbeselect:
jsr judgepurityaz
beq ?_loop
tya
tax
?_loop1:
iny
jsr test
beq ?_0
lda textbuffor,y
jsr judgeaz
bne ?_loop1
?_0:
lda textbuffor,y ;处理'('
cmp #'('
bne ?_Notguohao
phy
?_loop2:
iny
cpy tmpcount ;#120
bcs ?_end
lda textbuffor,y
jsr judgepurityaz
bne ?_loop2
lda textbuffor,y
cmp #')'
bne ?_end
pla
bra ?_loop1
?_end:
ply
rts
?_Notguohao:
rts
?_ishanzi:
cmp #purityHanziQu
bcc ?_zizcohanzi
bne ?_purityhanzi
tya
inc
tax
lda textbuffor,x
cmp #purityHanziWei
bcs ?_purityhanzi
?_zizcohanzi:
iny
jmp ?_loop
?_purityhanzi:
tya
tax
rts
test:
tya
?_loop:
sec
sbc #20
beq ?_0
bpl ?_loop
?_1:
lda #0ffh
rts
?_0:
dey
lda textbuffor,y
cmp #xianshiguai
beq ?_2
iny
lda #0
rts
?_2:
iny
bra ?_1
;;================================
;;function:mode4第一次反显查找中文和英文Rkey
;;input:textbufffor
;;output:
;;=================================
mode4R:
?_loop:
iny
cpy #120
bcc ?_continue
?_exit:
rmb0 <blackflag
rts
?_continue:
lda textbuffor,y
cmp #HanziQu
bcs ?_ishanzi
; cmp #'~'
; bne ?_canbeselect
;?_dealBoLangXian:
; iny
; cpy #120
; bcs ?_exit
; lda textbuffor,y
; jsr judgeaz
; bne ?_dealBoLangXian
; dey
; bra ?_loop
;?_canbeselect:
jsr judgepurityaz
beq ?_loop
tya
tax
?_loop1:
iny
jsr test
beq ?_0
lda textbuffor,y
jsr judgeaz
bne ?_loop1
?_0:
lda textbuffor,y ;处理'('
cmp #'('
bne ?_Notguohao
phy
?_loop2:
iny
cpy #120
bcs ?_end
lda textbuffor,y
jsr judgepurityaz
bne ?_loop2
lda textbuffor,y
cmp #')'
bne ?_end
pla
bra ?_loop1
?_end:
ply
?_Notguohao:
jsr XToOXOYmode4 ;开始
jsr YToCharmode4 ;结束
lda <CharH
cmp <OY
beq ?_sameline
sec
lda #159
sbc <OX
sta <InvertW
jsr blockinvert1
lda <OX ;反显超过两行
sta GuaiwanSTOX
lda <InvertW
sta GuanWanSTLen
lda <CharH
sta <OY
stz <OX
smb7 <Blackflag
?_sameline:
sec
lda <CharL
sbc <OX
sta <InvertW
jsr blockinvert1
rts
?_ishanzi:
cmp #purityHanziQu
bcc ?_ZiZaoHanZi
bne ?_purityhanzi
tya
inc
tax
lda textbuffor,x
cmp #purityHanziWei
bcs ?_purityhanzi
?_ZiZaoHanZi:
iny
jmp ?_loop
?_purityhanzi:
pha
lda my_flag
bne xxx
lda #0ffh
sta my_flag
pla
sta tmp_buffor ;TEXTBUFFOR+EDIT_START
iny
lda textbuffor,y
sta tmp_buffor+1 ;TEXTBUFFOR+EDIT_START+1
dey
bra xxx1
xxx:
pla
xxx1:
jsr YToCharmode4
lda <CharL
sta <OX
lda <CharH
sta <OY
clc
lda <CharL
adc #16
sta <CharL
lda #16
sta <InvertW
jsr blockinvert1
rts
;;================================
;;function:mode1第一次反显查找中文和英文Rkey
;;input:textbufffor
;;output:
;;=================================
mode1R:
?_loop:
iny
cpy #100
bcc ?_continue
?_exit:
rmb0 <blackflag
rts
?_continue:
lda textbuffor,y
cmp #HanziQu
bcs ?_ishanzi
; cmp #'~'
; bne ?_canbeselect
;?_dealBoLangXian:
; iny
; cpy #120
; bcs ?_exit
; lda textbuffor,y
; jsr judgeaz
; bne ?_dealBoLangXian
; dey
; bra ?_loop
;?_canbeselect:
jsr judgepurityaz
beq ?_loop
tya
tax
?_loop1:
iny
lda textbuffor,y
jsr judgeaz
bne ?_loop1
lda textbuffor,y ;处理'('
cmp #'('
bne ?_Notguohao
phy
?_loop2:
iny
cpy #120
bcs ?_end
lda textbuffor,y
jsr judgepurityaz
bne ?_loop2
lda textbuffor,y
cmp #')'
bne ?_end
pla
bra ?_loop1
?_end:
ply
?_Notguohao:
jsr XToOXOYmode1 ;开始
jsr YToCharmode1 ;结束
lda <CharH
cmp <OY
beq ?_sameline
sec
lda #159
sbc <OX
sta <InvertW
jsr blockinvert1
lda <OX ;反显超过两行
sta GuaiwanSTOX
lda <InvertW
sta GuanWanSTLen
lda <CharH
sta <OY
stz <OX
smb7 <Blackflag
?_sameline:
sec
lda <CharL
sbc <OX
sta <InvertW
jsr blockinvert1
rts
?_ishanzi:
cmp #purityHanziQu
bcc ?_ZiZaoHanZi
bne ?_purityhanzi
tya
inc
tax
lda textbuffor,x
cmp #purityHanziWei
bcs ?_purityhanzi
?_ZiZaoHanZi:
iny
jmp ?_loop
?_purityhanzi:
pha
lda my_flag
bne xxx2
lda #0ffh
sta my_flag
pla
sta tmp_buffor ;TEXTBUFFOR+EDIT_START
iny
lda textbuffor,y
sta tmp_buffor+1 ;TEXTBUFFOR+EDIT_START+1
dey
bra xxx21
xxx2:
pla
xxx21:
jsr YToCharmode1
lda <CharL
sta <OX
lda <CharH
sta <OY
clc
lda <CharL
adc #16
sta <CharL
lda #16
sta <InvertW
jsr blockinvert1
rts
;;================================
;;function:mode5 9 10第一次反显查找中文和英文Rkey
;;input:textbufffor
;;output:
;;=================================
mode5R:
?_loop:
iny
cpy #140
bcc ?_continue
?_exit:
rmb0 <blackflag
rts
?_continue:
lda textbuffor,y
cmp #HanziQu
bcs ?_ishanzi
; cmp #'~'
; bne ?_canbeselect
;?_dealBoLangXian:
; iny
; cpy #140
; bcs ?_exit
; lda textbuffor,y
; jsr judgeaz
; bne ?_dealBoLangXian
; dey
; bra ?_loop
;?_canbeselect:
jsr judgepurityaz
beq ?_loop
tya
tax
?_loop1:
iny
lda textbuffor,y
jsr judgeaz
bne ?_loop1
lda textbuffor,y ;处理'('
cmp #'('
bne ?_Notguohao
phy
?_loop2:
iny
cpy #140
bcs ?_end
lda textbuffor,y
jsr judgepurityaz
bne ?_loop2
lda textbuffor,y
cmp #')'
bne ?_end
pla
bra ?_loop1
?_end:
ply
?_Notguohao:
jsr XToOXOYmode5 ;开始
jsr YToCharmode5 ;结束
lda <CharH
cmp <OY
beq ?_sameline
sec
lda #159
sbc <OX
sta <InvertW
jsr blockinvert1
lda <OX ;反显超过两行
sta GuaiwanSTOX
lda <InvertW
sta GuanWanSTLen
lda <CharH
sta <OY
stz <OX
smb7 <Blackflag
?_sameline:
sec
lda <CharL
sbc <OX
sta <InvertW
jsr blockinvert1
rts
?_ishanzi:
cmp #purityHanziQu
bcc ?_ZiZaoHanZi
bne ?_purityhanzi
tya
inc
tax
lda textbuffor,x
cmp #purityHanziWei
bcs ?_purityhanzi
?_ZiZaoHanZi:
iny
jmp ?_loop
?_purityhanzi:
pha
lda my_flag
bne xxx3
lda #0ffh
sta my_flag
pla
sta tmp_buffor ;TEXTBUFFOR+EDIT_START
iny
lda textbuffor,y
sta tmp_buffor+1 ;TEXTBUFFOR+EDIT_START+1
dey
bra xxx31
xxx3:
pla
xxx31:
jsr YToCharmode5
lda <CharL
sta <OX
lda <CharH
sta <OY
clc
lda <CharL
adc #16
sta <CharL
lda #16
sta <InvertW
jsr blockinvert1
rts
;;================================
;;function:mode15 16 17第一次反显查找中文和英文Rkey
;;input:textbufffor
;;output:
;;=================================
mode15R:
?_loop:
iny
cpy #160
bcc ?_continue
?_exit:
rmb0 <blackflag
rts
?_continue:
lda textbuffor,y
cmp #HanziQu
bcs ?_ishanzi
; cmp #'~'
; bne ?_canbeselect
;?_dealBoLangXian:
; iny
; cpy #160
; bcs ?_exit
; lda textbuffor,y
; jsr judgeaz
; bne ?_dealBoLangXian
; dey
; bra ?_loop
;?_canbeselect:
jsr judgepurityaz
beq ?_loop
tya
tax
?_loop1:
iny
lda textbuffor,y
jsr judgeaz
bne ?_loop1
lda textbuffor,y ;处理'('
cmp #'('
bne ?_Notguohao
phy
?_loop2:
iny
cpy #160
bcs ?_end
lda textbuffor,y
jsr judgepurityaz
bne ?_loop2
lda textbuffor,y
cmp #')'
bne ?_end
pla
bra ?_loop1
?_end:
ply
?_Notguohao:
jsr XToOXOYmode15 ;开始
jsr YToCharmode15 ;结束
lda <CharH
cmp <OY
beq ?_sameline
sec
lda #159
sbc <OX
sta <InvertW
jsr blockinvert1
lda <OX ;反显超过两行
sta GuaiwanSTOX
lda <InvertW
sta GuanWanSTLen
lda <CharH
sta <OY
stz <OX
smb7 <Blackflag
?_sameline:
sec
lda <CharL
sbc <OX
sta <InvertW
jsr blockinvert1
rts
?_ishanzi:
cmp #purityHanziQu
bcc ?_ZiZaoHanZi
bne ?_purityhanzi
tya
inc
tax
lda textbuffor,x
cmp #purityHanziWei
bcs ?_purityhanzi
?_ZiZaoHanZi:
iny
jmp ?_loop
?_purityhanzi:
pha
lda my_flag
bne xxx4
lda #0ffh
sta my_flag
pla
sta tmp_buffor ;TEXTBUFFOR+EDIT_START
iny
lda textbuffor,y
sta tmp_buffor+1 ;TEXTBUFFOR+EDIT_START+1
dey
bra xxx41
xxx4:
pla
xxx41:
jsr YToCharmode15
lda <CharL
sta <OX
lda <CharH
sta <OY
clc
lda <CharL
adc #16
sta <CharL
lda #16
sta <InvertW
jsr blockinvert1
rts
;;==================================
;;function:模式4
;;input:<blackflag <OX OY InvertW GuaiwanSTOX GuanWanSTLen
;;output:
;;==================================
mode4secondR:
lda #16
sta <InvertH
rmb0 <blackflag
bbr7 <Blackflag,?_onlyOneline
rmb7 <Blackflag
lda <OX
pha
lda <OY
pha
lda <InvertW
pha
lda GuaiwanSTOX ;单词未拐弯时的开始<OX
sta <OX
lda GuanWanSTLen;单词在前一行的宽度
sta <InvertW
sec
lda <OY
sbc #16
sta <OY
LBlockinvert
pla
sta <InvertW
pla
sta <OY
pla
sta <OX
?_onlyOneline:
LBlockinvert
jsr CharToYmode4
dey
jsr mode4R
rts
;;==================================
;;function:模式1
;;input:<blackflag <OX OY InvertW GuaiwanSTOX GuanWanSTLen
;;output:
;;==================================
mode1secondR:
lda #16
sta <InvertH
rmb0 <blackflag
bbr7 <Blackflag,?_onlyOneline
rmb7 <Blackflag
lda <OX
pha
lda <OY
pha
lda <InvertW
pha
lda GuaiwanSTOX ;单词未拐弯时的开始<OX
sta <OX
lda GuanWanSTLen;单词在前一行的宽度
sta <InvertW
sec
lda <OY
sbc #16
sta <OY
LBlockinvert
pla
sta <InvertW
pla
sta <OY
pla
sta <OX
?_onlyOneline:
LBlockinvert
jsr CharToYmode1
dey
jsr mode1R
rts
;;==================================
;;function:模式5 9 10
;;input:<blackflag <OX OY InvertW GuaiwanSTOX GuanWanSTLen
;;output:
;;==================================
mode5secondR:
lda #16
sta <InvertH
rmb0 <blackflag
bbr7 <Blackflag,?_onlyOneline
rmb7 <Blackflag
lda <OX
pha
lda <OY
pha
lda <InvertW
pha
lda GuaiwanSTOX
sta <OX
lda GuanWanSTLen
sta <InvertW
sec
lda <OY
sbc #16
sta <OY
LBlockinvert
pla
sta <InvertW
pla
sta <OY
pla
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -