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

📄 dicadd.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 5 页
字号:
; ***************************************************************************
; *     Project : Electronic Dictionary                                     *
; *        Date : 2003.9                                                    *
; *   File Name : DICADD.ASM                                                *
; ***************************************************************************

        pw      128
        case    off
        externs on

        include ST2202.def      ; Include ST2100 I/O define.
        include Data.def        ; Data RAM define.
        include Bios.h
        include Graphics.h
        include Keydef.def
        include Graph.def
        include	extract.h
        include	xyhaddr.h
        include	5000lib.ref
        include fulu.h

        INCLUDE ST2202.MAC

	INCLUDE CHCH.INC
        INCLUDE CNDICT.INC


;=====================================================
;       >>> 变量  public<<
	public	flashbuff
	public	Newwordstatus1
	public	NewwordDisplayNamestatus1
	public	NewwordNoNamestatus1
	public	NewwordInputNameStatus1
	public	NewwordAmendNamestatus1
	public	NewwordIfstorestatus1
	public	Newworddisplaywordstatus1
	public	Newwordjieshistatus1
	public	Newwordjieshilijustatus1
	public	jieshisavewordDefaultteam1
	public	NewwordjieshilijuEscKey
	public	FanchaselectRkey
	public	FanchaselectLkey

	public	Viewtongyi1
	public	viewtongyistatus1
	public	view5000Attributejieshistatus1
	public	Attribute5000lijustatus1
	public	Attribute5000lijuEscKey
	public	ViewFanYi1
	public	ViewBianXi1
	public	ViewGouCi1
	public	ViewGouCistatus1
	public	viewGouCijieshistatus1
	public	GouCijieshilijustatus1
	public	GouCijieshilijuEscKey
	public	ViewFenLei1
	public	viewFenLeistatus1
	public	PrepareFanCha1
	public	FanChaNewenchStatus1
	public	FanchaChenstatus1
	public	FanChaNewenchEscKey
	public	DuoJiChenIntoEnchStatus1
	public	FanChaNewenchDPkey
	public	FanChaNewenchUPkey
	public	viewFenLeiDKey
	public	viewFenLeiUKey


	PUBLIC	viewtongyienterkey
	PUBLIC	viewtongyidpkey
	PUBLIC	viewtongyiupkey
	PUBLIC	viewtongyidkey
	PUBLIC	viewtongyiukey
	PUBLIC	attribute5000jieshidpkey
        PUBLIC	attribute5000jieshiupkey

;;;===============常量定义===========================
xianshiguai	equ	1ah	;显示断句的符号
flashbuff	equ	0b000h	;flash缓冲区
Newwordnameaddr	equ	0d000h	;08000h	;生词库组名开始地址
Newwordstartaddr	equ	0d150h	;08150h ;开始存放生词的地址
flashbuffNewwordstartaddr	equ	0b150h ;开始存放生词的地址flash缓冲
NewwordNameEndaddr	equ	0d144h	;08144h ;生词组组名结束地址
NewwordTeamLen	equ	64h	;每组生词库的长度
NewwordteamMax	equ	36	;最大生词组数
PurityHanziQu	equ	0aeh;0afh;0aeh;真汉字开始的区码(包括自造字及字符)
PurityHanziWei	equ	0a1h;0a1h;0b7h;真汉字开始的位码(包括自造字及字符)
Newwordbank	equ	FlashBank	;87h	;生词库的bank值
;;===================>>>变量替换<<<============
Icondownpage	equ	icon_downpage
IconUPpage	equ	Icon_Uppage
UpPagekey	equ	pgUp
DownPagekey	equ	PgDown
ReviewKey	equ	AmendKey
NewwordKey	equ	Findkey ;生词组按键
SetdefaultKey	equ	SpaceKey;设置默认生词组键
InvertH		equ	image_hight_temp
InvertW		equ	image_width


;;==================================================
DS0     .SECTION                ; Data ROM location
NonewwordNametittle:
        db      0dh,'     无生词组,'
        db      0dh,'     是否新建?'
        db      0dh,'    是(Y) 否(N)',0
inputnametittle:
        db      '请输入新组名:',0

Nonewwordstoretittle:
        db      0dh,'      保存吗?'
        db      0dh,'    是(Y) 否(N)',0

defaulttittle:
	db	'(默认)',0
ThisteamFullTittle:
	db	0dh,0dh,'      本组已满',0

programertittle:
        DB      '  Art Soft Co. Ltd  '
        DB      '    F.E.: Hunter'
        DB      0DH,'    G.E.: Hunter'
        DB      0DH,'  Special thanks to       My babies.   ',0


newwordendtittle:
	db	' ( NO WORD SAVED )',0

havesavetodefaulttittle:
	db	0dh,0dh,'  已存入默认生词组',0
Pleasesetdefaulttittle:
	db	0dh,0dh,'    请先设默认组',0
Defaultfulltittle:
	db	0dh,'     默认组已满'
	db	0dh,'    请另设默认组',0
;=====================================================
PS5     .SECTION                ; Program ROM location
BANKNO        equ	DicaddBank

fanchaselectRkey:
	bbs0	<blackflag,?_haveinvertword
	rmb7	<Blackflag
	lda	<Screenmode
	dec
	beq	?_mode1
	lda	<Screenmode
	cmp	#14		;add by yl
	beq	?_mode1
	bbs5	<Newflag,?_mode15
	bbs4	<newflag,?_mode5
?_mode4:
	ldy	#39
	jsr	mode4R
	jmp	NNmainU

?_mode15:
	ldy	#119
	jsr	mode15R
	jmp	NNmainU

?_mode5:
	ldy	#79
	jsr	Mode5R
	jmp	NNmainU

?_mode1:
	ldy	#0ffh
	jsr	Mode1R
	jmp	NNmainU
?_haveinvertword:
	lda	IconShift>>8
	and	#IconShift&0ffh
	bne	?_startDuoXuan
	bbr1	<Blackflag,?_NotDuoxuan
	jsr	Clear_duoxuanfanxian
?_NotDuoxuan:
	lda	#0
	sta	my_flag

	lda	<Screenmode
	dec
	beq	?_hmode1
	lda	<Screenmode
	cmp	#14		;add by yl
	beq	?_hmode1

	bbs5	<Newflag,?_hmode15
	bbs4	<newflag,?_hmode5
?_hmode4:
	jsr	mode4secondR
	jmp	NNmainU
?_hmode15:
	jsr	mode15secondR
	jmp	NNmainU
?_hmode5:
	jsr	mode5secondR
	jmp	NNmainU
?_hmode1:
	jsr	mode1secondR
	jmp	NNmainU

?_startDuoXuan:
	lda	<ScreenMode
	dec
	beq	?_hhmode1
	lda	<Screenmode
	cmp	#14		;add by yl
	beq	?_hhmode1

	bbs5	<Newflag,?_hhmode15
	bbs4	<newflag,?_hhmode5
?_hhmode4:
	jsr	mode4DuoXuanR
	jmp	NNmainU
?_hhmode15:
	jsr	mode15DuoXuanR
	jmp	NNmainU
?_hhmode5:
	jsr	mode5DuoXuanR
	jmp	NNmainU
?_hhmode1:
	jsr	mode1DuoXuanR
	jmp	NNmainU



fanchaselectLkey:
	lda	#0
	sta	my_flag

	bbs0	<blackflag,?_haveinvertword
	lda	<Screenmode
	dec
	beq	?_mode1
	lda	<Screenmode
	cmp	#14		;add by yl
	beq	?_mode1

	bbs5	<Newflag,?_mode15
	bbs4	<newflag,?_mode5
?_mode4:
	ldy	#39
	ldx	#39
	jsr	mode4L
	jmp	NNmainU
?_mode15:
	ldy	#119
	ldx	#119
	jsr	Mode15L
	jmp	NNmainU
?_mode5:
	ldy	#79
	ldx	#79
	jsr	Mode5L
	jmp	NNmainU
?_mode1:
	ldy	#0ffh
	ldx	#0ffh
	jsr	Mode1L
	jmp	NNmainU

?_haveinvertword:
	lda	#IconShift&0ffh
	trb	Iconshift>>8
	bbs1	<Blackflag,?_haveduoxuan
	lda	<Screenmode
	dec
	beq	?_hmode1
	lda	<Screenmode
	cmp	#14		;add by yl
	beq	?_hmode1

	bbs5	<Newflag,?_hmode15
	bbs4	<newflag,?_hmode5
?_hmode4:
	jsr	mode4secondL
	jmp	NNmainU
?_hmode15:
	jsr	mode15secondL
	jmp	NNmainU
?_hmode5:
	jsr	mode5secondL
	jmp	NNmainU
?_hmode1:
	jsr	mode1secondL
	jmp	NNmainU

?_haveduoxuan:
	rmb1	<Blackflag	;清除多选标志
	rmb7	<blackflag	;清除跨两行标志
	jsr	CALL_LUpdateScreen

	lda	<Screenmode
	dec
	beq	?_hhmode1
	lda	<Screenmode
	cmp	#14		;add by yl
	beq	?_hhmode1

	LShow_jieshiyinbiao
	ldy	DuoxuanStartY
	dey
	bbs5	<Newflag,?_hhmode15
	bbs4	<newflag,?_hhmode5
?_hhmode4:
	jsr	mode4R
	jmp	NNmainU
?_hhmode15:
	jsr	mode15R
	jmp	NNmainU
?_hhmode5:
	jsr	mode5R
	jmp	NNmainU
?_hhmode1:
	ldy	DuoxuanStartY
	dey
	jsr	Mode1R
	jmp	NNmainU


;;========================================
;;function:
;;input:
;;output:
;;========================================
Clear_duoxuanfanxian:
	lda	<CharH
	pha
	lda	<CharL
	pha
	rmb1	<Blackflag	;清除多选标志
	rmb7	<blackflag	;清除跨两行标志
	jsr	CALL_LUpdateScreen
	LShow_jieshiyinbiao
	pla
	sta	<CharL
	pla
	sta	<CharH
	stz	<InvertH
	stz	<InvertW
	rts
;;==========================================
;;function:模式4有反显的Leftkey
;;input:
;;output:
;;=========================================
mode4secondL:
	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
	;sta	<OX

	LBlockinvert
	lda	GuaiwanSTOX
	sta	<OX
	lda	GuanWanSTLen
	sta	<InvertW
	sec
	lda	<OY
	sbc	#16
	sta	<OY

?_onlyOneline:
	LBlockinvert
	jsr	OXOYToYmode4
	dey
	sty	tmpcount
	lda	textbuffor,y
	cmp	#hanziqu
	bcs	?_2
	inc	tmpcount
?_2:
	ldy	#39
	ldx	#39
	lda	#0ffh
	sta	<INSL
?_loop:
	phy
	phx
	inc	<INSL
	jsr	CatchOneFromY
	bbs0	<INSH,?_5
	jsr	test
	beq	?_4
?_5:
	rmb0	<INSH
	cpy	tmpcount ;#120
	bcs	?_OK
	lda	textbuffor,x
	cmp	#hanziqu
	bcc	?_0
	iny
	pla
	pla
	bra	?_loop
?_4:
	cpy	#40
	bne	?_6
	dec	<INSL
?_6:
	smb0	<INSH
?_0:
	dey
	pla
	pla
	bra	?_loop
?_OK:
	lda	textbuffor,y
	cmp	#PurityHanziQu
	bcc	?_3
	pla
	pla
	bra	?_1
?_3:
	plx
	ply
?_1:
	lda	<INSL
	beq	?_end

	dex
	txa
	tay
	jsr	mode4R
	rts

?_end:
	rmb0	<Blackflag
	rts

;;==========================================
;;function:模式1有反显的Leftkey
;;input:
;;output:
;;=========================================
mode1secondL:
	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
	;sta	<OX
	LBlockinvert
	lda	GuaiwanSTOX
	sta	<OX
	lda	GuanWanSTLen
	sta	<InvertW
	sec
	lda	<OY
	sbc	#16
	sta	<OY

?_onlyOneline:
	LBlockinvert
	jsr	OXOYToYmode1
	dey
	sty	tmpcount
	lda	textbuffor,y
	cmp	#hanziqu
	bcs	?_2
	inc	tmpcount
?_2:
	ldy	#0ffh
	lda	#0ffh
	sta	<INSL
?_loop:
	phy
	phx
	inc	<INSL
	jsr	CatchOneFromY
	cpy	tmpcount ;#120
	bcs	?_OK
	lda	textbuffor,x
	cmp	#hanziqu
	bcc	?_0
	iny
	pla
	pla
	bra	?_loop
?_0:
	dey
	pla
	pla
	bra	?_loop
?_OK:
	lda	textbuffor,y
	cmp	#PurityHanziQu
	bcc	?_3
	pla
	pla
	bra	?_1
?_3:
	plx
	ply
?_1:
	lda	<INSL
	beq	?_end

	dex
	txa
	tay
	jsr	mode1R
	rts

?_end:
	rmb0	<Blackflag
	rts

;;==========================================
;;function:模式5 9 10有反显的Leftkey
;;input:
;;output:
;;=========================================
mode5secondL:
	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
	;sta	<OX
	LBlockinvert
	lda	GuaiwanSTOX
	sta	<OX
	lda	GuanWanSTLen
	sta	<InvertW
	sec
	lda	<OY
	sbc	#16
	sta	<OY

?_onlyOneline:
	LBlockinvert
	jsr	OXOYToYmode5
	dey
	sty	tmpcount
	lda	textbuffor,y
	cmp	#hanziqu
	bcs	?_2
	inc	tmpcount
?_2:
	ldy	#79
	ldx	#79
	lda	#0ffh
	sta	<INSL
?_loop:
	phy
	phx
	inc	<INSL
	jsr	CatchOneFromY
	bbs0	<INSH,?_5
	jsr	test
	beq	?_4
?_5:
	rmb0	<INSH
	cpy	tmpcount ;#140
	bcs	?_OK
	lda	textbuffor,x
	cmp	#hanziqu
	bcc	?_0
	iny
	pla
	pla
	bra	?_loop
?_4:
	cpy	#80
	bne	?_6
	dec	<INSL
?_6:
	smb0	<INSH
?_0:
	dey
	pla
	pla
	bra	?_loop
?_OK:
	lda	textbuffor,y
	cmp	#PurityHanziQu
	bcc	?_3
	pla
	pla
	bra	?_1
?_3:
	plx
	ply
?_1:
	lda	<INSL
	beq	?_end

	dex
	txa
	tay
	jsr	mode5R
	rts

?_end:
	rmb0	<Blackflag
	rts

;;==========================================
;;function:模式15 16 17有反显的Leftkey
;;input:
;;output:
;;=========================================
mode15secondL:
	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
	;sta	<OX
	LBlockinvert
	lda	GuaiwanSTOX
	sta	<OX
	lda	GuanWanSTLen
	sta	<InvertW
	sec
	lda	<OY
	sbc	#16
	sta	<OY

?_onlyOneline:
	LBlockinvert
	jsr	OXOYToYmode15
	sty	tmpcount
	lda	textbuffor,y
	cmp	#hanziqu
	bcs	?_2
	inc	tmpcount
?_2:
	ldy	#119
	lda	#0ffh
	sta	<INSL
?_loop:
	phy
	phx
	inc	<INSL
	jsr	CatchOneFromY
	cpy	tmpcount ;#140
	bcs	?_OK
	lda	textbuffor,x
	cmp	#hanziqu
	bcc	?_0
	iny
	pla
	pla
	bra	?_loop
?_0:
	dey
	pla
	pla
	bra	?_loop
?_OK:
	lda	textbuffor,y
	cmp	#PurityHanziQu
	bcc	?_3
	pla
	pla
	bra	?_1
?_3:
	plx
	ply
?_1:
	lda	<INSL
	beq	?_end

	dex
	txa
	tay
	jsr	mode15R
	rts

?_end:
	rmb0	<Blackflag
	rts

;;===================================
;;function:mode4第一次反显查找中文和英文Lkey
;;input:textbuffor
;;output:
;;===================================
mode4L:
?_loop:
	phy
	phx
	lda	#120
	sta	tmpcount
	jsr	CatchOneFromY
	cpy	#120
	bcs	?_OK
	lda	textbuffor,x
	cmp	#hanziqu
	bcc	?_0
	iny
	pla
	pla
	bra	?_loop
?_0:
	dey
	pla
	pla
	bra	?_loop
?_OK:
	lda	textbuffor+119
	cmp	#xianshiguai
	bne	?_2
	pla
	pla
	bra	?_1

?_2:
	plx
	ply
	lda	textbuffor,x
	cmp	#HanziQu
	bcc	?_1
?_1:
	dex
	txa
	tay
	jsr	mode4R
	rts

;;===================================
;;function:mode1第一次反显查找中文和英文Lkey
;;input:textbuffor
;;output:
;;===================================
mode1L:
?_loop:
	phy
	phx
	lda	#100
	sta	tmpcount
	jsr	CatchOneFromY
	cpy	#100
	bcs	?_OK
	lda	textbuffor,x
	cmp	#hanziqu
	bcc	?_0
	iny
	pla
	pla
	bra	?_loop
?_0:
	dey
	pla
	pla
	bra	?_loop
?_OK:
	lda	textbuffor+99
	cmp	#xianshiguai
	bne	?_2
	pla
	pla
	bra	?_1

?_2:
	plx
	ply
	lda	textbuffor,x
	cmp	#HanziQu
	bcc	?_1
?_1:
	dex
	txa
	tay
	jsr	mode1R
	rts

;;===================================
;;function:mode5 9 10第一次反显查找中文和英文Lkey
;;input:textbuffor
;;output:
;;===================================
mode5L:
?_loop:

⌨️ 快捷键说明

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