📄 wordtest.asm
字号:
;;======== 复习---英译汉 初始化界面 ===========
fenlei_total_word_tab:
db 12,7,30,31,30,53,24,25,23,36,13,15,24,32,25,26,22
db 26,30,33,16,21,37,19,23,22,15,35,22,25,13,27,24,21
db 24,20,22,21,24,26,18,14,17,21,18,15,7,14,15,17,16
db 48,14,23,16,32,19,35,31,40,19,32,28,35,21,34,28,21
db 28,24,18,16,24,27,26,25,96,13,14,12,19,29,30,13,8
db 28,28,30,26,15,16,26,25,31,43,28,29,15,27,14,19,15
db 23,28,29,37,96,86,104,52,26,28,109
goe2cstar:
lda #3
sta ItemNo
stz <newflag
lda #<goe2cstar-1
sta HelpRtPrc
lda #>goe2cstar-1
sta HelpRtPrc+1
jsr call_goe2c_c2e_help
stz word_counter
stz temp_goe2c_flag
stz <textscreenno1
jsr get_first_word_address ;;查找第8个studyrage首单词的地址
lda studyrage ;;当前学习内容
cmp #studyragemax ;;学习内容的最大数
beq goe2c_star_not_fen_Next
cmp #fenlei_study
bcc goe2c_star_not_fen ;;studyrage>8为分类库,<=8非分类库
jsr count_fenlei_word ;;计算每组单词个数
jsr fenlei_address ;;找到分类库地址并显示
llight_lcd_icon icon_downpage
jmp go_to_lmain
goe2c_star_not_fen:
jsr get_first_word_address_0 ;;查找第0-7个studyrage的首单词地址
lda <temp ;; putsio/temp=01
bne goe2c_star_not_fen_Next
jmp have_finish
goe2c_star_not_fen_Next:
lcls
stz temp_goe2c_flag ;;第一次进入复习填空中
stz temp_study4 ;;置有无下屏标志=1无
lda #>PageXaddrbuff_study ;;初始化存放屏数的buffer
sta <insh
lda #<PageXaddrbuff_study ;;保存6字节单词地址,长度未知=256?
sta <insl
ldy #255
jsr clearram ;;入口insh,insl,y
stz textpagenum_study ;;初始化存放屏数的变量
|----- jsr push_inf_bak ;;保存解压前的信息
| jsr unpress_english ;;
| ;;该子程序先调用getchainLen
| ;;function:得到链长chainlen,并把地址指向词条
| ;;input:此单词的首地址<indxd &<bitcount
| ;;output:<ChainLenL & ChainLenH <indxd &<bitcount
| ;;再使用Lextract_word
| ;;function:extract one word
;注:此段程序似乎无实际作用(但不知对分类库及生词库有无影响,未测试)
| ;;input:大库的地址<indxd &<Drr &开始字节数bitcount
| ;;output:结果存入cdict_result ;<bitcount ;<bitcmp
|
|
| jsr extract_and_show_all ;;调用英汉程序解压,解压出英文放wordlocation中
| jsr showEnglishandphone ;;显示英文和音标(完整)
| lda <temp ;;putsio/temp=00
| beq ?1
| jmp second_into_goe2c
|
|?1: jsr extract_and_show_all_00 ;;调用英汉程序解压中文
| lda <temp ;;putsio/temp=01
| bne ?2
| jmp second_into_goe2c
|
|?2: jsr pop_inf_bak ;;复原解压前的信息
|-----
jsr unpress_english ;;解压出英文放wordlocation中
jsr extract_and_show_all ;;调用英汉程序解压和显示英文音标
jsr showEnglishandphone ;;显示英文和音标
jmp go_to_lmain
goe2ckeyin: ;;复习---英译汉 键控
ldy #0ffh
goe2ckeyin_loop:
iny
lda goe2c_key_table,y
bmi end_goe2ckeyin
cmp <KeyNo
bne goe2ckeyin_loop
tya
asl
tay
lda goe2ckeyin_program+1,y
pha
lda goe2ckeyin_program,y
pha
rts
end_goe2ckeyin:
jmp go_to_lmainu
goe2c_enterkey:
stz <newflag
lda temp_goe2c_flag
beq first_into_goe2c ;;第一次,没显示中文
jmp second_into_goe2c
first_into_goe2c:
lda #1
sta temp_goe2c_flag ;;此标志=1时,才会进入下一个单词
lda studyrage
cmp #studyragemax
beq ?1
cmp #fenlei_study
bcs goe2c_fen_lei_enter
?1: jsr store_pageXaddr_study ;;function:保存每页的首地址
;;input:<indxd & bitcount
;;output:存入PageXaddrbuff 6个字节一组
lda screenmode
cmp #4
beq ?_4
bra ?_5
?_4: jsr tiao_chuji_mode4 ;;从第2行开始显示
bra ?_go_to_extract
?_5: jsr tiao_chuji_mode5_9 ;;???可能是从第4行开始显示
?_go_to_extract:
jsr extract_and_show_all_00 ;;调用英汉程序解压中文
;;入口curymax_bak,curx,cury star_textbuffor end_textbuffor
;;出口showwordlocation
llight_lcd_icon icon_downpage
jsr updatejieshiyinbiao ;;该子程序先调用lupdatescreen,再调用Show_jieshiyinbiao
;;function:显示解释的音标里出现的汉字(适用各种模式)
;;input: yinbiaoinfbuff & jieshiyinbiaobuff
;;output:显示在<OX OY的位置上
jmp go_to_lmainu
goe2c_fen_lei_enter:
lda #<showwordlocation
sta <indl
lda #>showwordlocation
sta <indh
jsr restore_inf_fenlei ;;复原解压前的信息
ldy #2
ldx #0
goe2c_fen_lei_enter_0:
jsr indxd_to_drrhl ;;将<indxd+3,<indxd+2分别放入<drrh,<drrl
lda (<indxd)
sta (<ind)
cmp #0dh
beq goe2c_fen_lei_enter_end
jsr inc1_ind
jsr inc1_indxd
inx ;;用来记录次数
bra goe2c_fen_lei_enter_0
goe2c_fen_lei_enter_end:
cpx #20
beq ?1112
dey
cpy #0
beq goe2c_fen_lei_enter_end_1
jsr inc1_ind
jsr inc1_indxd ;;<indxd++ include Drr
bra goe2c_fen_lei_enter_0
?1112: dey
cpy #0
beq goe2c_fen_lei_enter_end_1
jsr inc1_indxd
bra goe2c_fen_lei_enter_0
goe2c_fen_lei_enter_end_1:
lda #0
sta (<ind)
jsr call_lsetscreen ;;lsetscreen 1
lprint showwordlocation ;;显示解释
llight_lcd_icon icon_downpage
jmp go_to_lmain
goe2c_esckey:
jmp studyload_0
goe2c_pgdownkey_new_word:
jsr current_addr_addc5
jsr get_new_word_address_again ;;???
inc word_counter
jmp goe2c_star_not_fen_Next
second_into_goe2c: ;;
stz <newflag
stz temp_goe2c_flag
lda studyrage
cmp #studyragemax
bne ?1
bra goe2c_pgdownkey_new_word
?1: cmp #fenlei_study
bcs is_fen_lei_goe2c
lda word_counter
cmp #max_word
bne goe2c_not_finish
goe2c_have_finish:
jmp have_finish
goe2c_not_finish:
inc word_counter
jsr current_addr_addc_4 ;;<indxd++,由此程序决定下一个单词的地址
jmp goe2c_star_not_fen
is_fen_lei_goe2c:
lda word_counter
cmp fenlei_total_word
bne ?_not_end
jmp have_finish
?_not_end:
inc word_counter
lda #>showwordlocation
sta <indh
lda #<showwordlocation
sta <indl
jsr restore_inf_fenlei
ldy #2
?33: jsr indxd_to_drrhl ;;将<indxd+3,<indxd+2分别放入<drrh,<drrl
lda (<indxd)
cmp #0dh
beq ?44
jsr inc1_indxd
bra ?33
?44: dey
cpy #0
beq ?55
jsr inc1_indxd
bra ?33
?55: stz wordlength
jsr inc1_indxd
jsr store_inf_fenlei ;;保存解压前的信息
?66: jsr indxd_to_drrhl ;;将<indxd+3,<indxd+2分别放入<drrh,<drrl
lda (<indxd)
sta (<ind)
cmp #0dh
beq endend
jsr inc1_ind
inc wordlength
jsr inc1_indxd
bra ?66
endend:
lda #0
sta (<ind)
jsr call_lsetscreen ;;lsetscreen 1
lprint showwordlocation
llight_lcd_icon icon_downpage
jmp go_to_lmain
go_to_lmain:
lmain
have_finish:
lda <gamestate_study
cmp #4
bne have_finish_00
jmp fill_have_finish
have_finish_00:
jsr call_lsetscreen
lda #>ds0bank
sta <drrh
lda #<ds0bank
sta <drrl
lda ItemNo
cmp #3
beq ?_e2c
cmp #4
beq ?_c2e
lprint not_next_word
bra ?all_to_here
?_e2c:
lprint e2c_not_next_word
bra ?all_to_here
?_c2e:
lprint c2e_not_next_word
?all_to_here:
jsr call_lupdatescreen
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jmp studyload_0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -