📄 dicadd.asm
字号:
; ***************************************************************************
; * 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 + -