📄 yyzd.asm
字号:
; ***************************************************************************
; * Project : Electronic Dictionary *
; * Date : 2003.9 *
; * File Name : YYZD.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 xyhaddr.h
include ST2202.mac ; Include ST2100 I/O define.
include eedict.inc
;=============== Ram define ===============
InputLen equ _EE_CODE_SIZE+1
YYZDState equ InputLen+1
InvertItem equ InputLen+2
ItemNum EQU FData
;==========================================
;=============== CONSTANT DEFINE ==========
VIEWEXPLAINE EQU 2
;==========================================
ds0 .section
include bookbmp.asm
dicenen_inputtittle:
DB ' 英英词典',0dh
db '请输入英文:'
DB 0dh,0dh,0dh
DB '[英]',0
EE_HELP_0:
DB "输入要查的英文",0DH
DB "[返回]返回",0
EE_HELP_1:
DB '上下键浏览.',0dh
DB '左右键浏览超过一行的单词.',0dh
DB '[确认]查看解释.',0dh
DB '[返回]返回.',0
EE_HELP_2:
DB '上下键浏览内容.',0dh
DB '翻页键浏览相邻词条.',0dh
DB '[返回]返回.',0
ps0d .section
bankno equ yy_zd_bank
public yy_zd_bank
public yy_zd_HSec
public yy_zd_Sec
public yy_zd_Min
public yy_zd_KeyDown
public yy_zd_KeyUp
public yy_zd_Timer
public yy_zd_KeyPress
public yy_zd_Load
public yy_zd_help
; include en_en.asm
;=============== Load Function ==============
yy_zd_Load:
jsr KillEE_IN_BUFFER
;startuart
lda #Ds0Help
sta <HelpOffset
lda #<EE_HELP_0
sta HelptextpL
lda #>EE_HELP_0
sta HelptextpH
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; LSetScreen 1
; Lprint dicenen_inputtittle
; lSetCur 0,2
;
; stz <InputLen
; stz <YYZDState
;LoadInit:
; LscanF 10010100B
;
; lda <InputLen
; sta <CurX
;ExitWithUpDate:
; jmp jmp_LMAIN
;;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LSetScreen 1
Lprint dicenen_inputtittle
jsr CALL_LUpdateScreen
lda #45
sta <Ox
lda #0
sta <OY
LOPrintImage bookbmp
stz <InputLen
stz <YYZDState
LscanF 10010100B
lSetCur 0,2
lda <InputLen
sta <CurX
jmp jmp_LMAINU
LoadInit:
LscanF 10010100B
lda <InputLen
sta <CurX
ExitWithUpDate:
jmp jmp_LMAIN
;;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;================================================
yy_zd_KeyUp:
yy_zd_HSec:
yy_zd_Sec:
yy_zd_Min:
yy_zd_Timer:
yy_zd_help:
ExitWithoutUpDate:
jmp jmp_LMAINU
;================Key press ====================
PRESSFUNCKEY:
LDA <KEYNO
CMP #DOWNKEY
BEQ ?downkey
cmp #LeftKey
beq ?0
cmp #EscKey
bne ExitWithoutUpDate
jsr LJSR
dw fu_lu_bank
dw fu_lu_esckey_program-1
?0:
lda <CurX
beq ExitWithoutUpDate
dec <CurX
dec <InputLen
bNE ?1
JMP yy_zd_Load
?1:
ldx <CurX
stz EE_IN_BUFFER,x
LSETSCREEN 3
bra YYZDFirstStep
?downkey:
lda <InputLen
beq ExitWithoutUpDate
LEXITSCANF
stz <InvertItem
lda #1
sta <YYZDState
InvertWord:
jsr CALL_LUpdateScreen
STZ <OX
lda <InvertItem
asl
asl
asl
adc #16
sta <OY
LBlockInvert 159,8
BRA ExitWithoutUpDate
yy_zd_KeyPress:
bbr0 <inputflag,PRESSFUNCKEY
rmb0 <inputflag
lda <InputLen
cmp #19
bcs ExitWithoutUpDate
lda #<EE_HELP_1
sta HelptextpL
lda #>EE_HELP_1
sta HelptextpH
LSETSCREEN 3
LDY <InputLen
LDA <CHARL
STA EE_IN_BUFFER,Y
inc <InputLen
YYZDFirstStep:
LPRINT EE_IN_BUFFER
STZ ItemNum
jsr EE_LOCATE_ADDR
LSETCUR 0,1
LPRINT EE_LEMMA_BUFFER
;PUTSIO #077H
;PUTSIO <_EE_FAR_PTRB_3
;PUTSIO <_EE_FAR_PTRB_2
;PUTSIO <_EE_FAR_PTRB_1
;PUTSIO <_EE_FAR_PTRB_0
LDA <_EE_FAR_PTRB_3
CMP #(END_WORD_ADDR_A>>24)
BNE ?GOAHEAD
LDA <_EE_FAR_PTRB_2
CMP #(END_WORD_ADDR_A>>16)
BNE ?GOAHEAD
LDA <_EE_FAR_PTRB_1
CMP #(END_WORD_ADDR_A>>8)
BNE ?GOAHEAD
LDA <_EE_FAR_PTRB_0
CMP #END_WORD_ADDR_A
BNE ?GOAHEAD
JMP ?EXIT
?GOAHEAD:
jsr EE_NEXT_WORD
CLC
ADC ItemNum
STA ItemNum
LSETCUR 0,2
LPRINT EE_LEMMA_BUFFER
jsr EE_NEXT_WORD
CLC
ADC ItemNum
STA ItemNum
LSETCUR 0,3
LPRINT EE_LEMMA_BUFFER
jsr EE_NEXT_WORD
CLC
ADC ItemNum
STA ItemNum
LSETCUR 0,4
LPRINT EE_LEMMA_BUFFER
jsr EE_NEXT_WORD
CLC
ADC ItemNum
STA ItemNum
LSETCUR 0,5
LPRINT EE_LEMMA_BUFFER
jsr EE_NEXT_WORD
CLC
ADC ItemNum
STA ItemNum
LSETCUR 0,6
LPRINT EE_LEMMA_BUFFER
jsr EE_NEXT_WORD
CLC
ADC ItemNum
STA ItemNum
LSETCUR 0,7
LPRINT EE_LEMMA_BUFFER
jsr EE_NEXT_WORD
CLC
ADC ItemNum
STA ItemNum
LSETCUR 0,8
LPRINT EE_LEMMA_BUFFER
?EXIT:
stz <CurY
lda <InputLen
sta <CurX
jmp jmp_LMAIN
;
;
KeyDownStateFunc:
dw OnlyEnterKey
dw ViewWordState
dw ViewExplainState
ViewWordState:
lda <KeyNo
cmp #UpKey
beq ViewWordUpKey
cmp #DownKey
beq ViewWordDownKey
cmp #EscKey
;beq ViewWordEscKey
bne dfadfs
jmp ViewWordEscKey
dfadfs:
cmp #EnterKey
beq ?EnterKey
jmp ExitWithoutUpDate
?EnterKey:
lda #<EE_HELP_2
sta HelptextpL
lda #>EE_HELP_2
sta HelptextpH
jsr CopyDataToEEINBUFFER
jmp EnterToViewExp
ViewWordUpKey:
jsr set_icondown
lda <InvertItem
bne ?0
INC ItemNum
jsr EE_LOCATE_ADDR
jsr EE_PGUP_WORD
cmp #0
beq ?2
jsr EEScreenDown
?1:
jsr set_iconup
jmp ViewWordUpKeyend
?2:
jsr clr_iconup
jmp ViewWordUpKeyend
?0: dec <InvertItem
jsr set_iconup
ViewWordUpKeyend:
jmp InvertWord
ViewWordDownKey:
jsr set_iconup
;putsio <InvertItem
;putsio ItemNum
lda <InvertItem
CMP ItemNum
BCC ?goahead
jsr is_have_nextpage
bne ?goahead
?clrdownicon:
jsr clr_icondown
jmp refresh_icon
?goahead:
lda <InvertItem
cmp #7
bne ?0
JSR EE_NEXT_WORD
beq ?clrdownicon
?VIEWIT0:
jsr EEScreenUp
LSETCUR 0,8
LPRINT EE_LEMMA_BUFFER
jsr CopyTextLine1ToEEINBUFFER
jsr set_icondown
jmp ViewWordDownKeyend
?0: inc <InvertItem
jsr set_icondown
ViewWordDownKeyend:
jmp InvertWord
ViewWordEscKey:
jsr CopyTextLine0ToEEINBUFFER
stz <CurY
stz <YYZDState
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -