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

📄 dicadd.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	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 + -