📄 goe2ctest.asm
字号:
;;======== 测试---英译汉 初始化界面 ===========
goe2ctest:
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
goe2ctest_first_1:
;jsr current_addr_addc_4_bak
lda #0
sta get_e2c_num
jsr goe2ctest_disp
;jsr current_addr_addc_4
jsr goe2ctest_disp
;jsr current_addr_addc_4
jsr goe2ctest_disp
;jsr current_addr_addc_4_unbak
stz end_1_page
jsr dispbuffor2textbuffor
lupdatescreen
jmp go_to_lmainu
goe2ctest_disp:
jsr get_first_word_address_0 ;;查找第0-7个studyrage的首单词地址
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 unpress_english ;;解压出英文放wordlocation中
jsr extract_and_show_all ;;调用英汉程序解压和显示英文音标
jsr showEnglishandphone ;;显示英文和音标
jsr store_pageXaddr_study ;;function:保存每页的首地址
;;input:<indxd & bitcount
;;output:存入PageXaddrbuff 6个字节一组
lda screenmode
cmp #4
bne ?01
jsr tiao_chuji_mode4 ;;从第2行开始显示
bra ?02
?01: jsr tiao_chuji_mode5_9 ;;???可能是从第4行开始显示
?02: jsr extract_and_show_all_00 ;;调用英汉程序解压中文
Lda get_e2c_num
bne ?03
jsr Etextbuffor2dispbuffor
?03: jsr Ctextbuffor2dispbuffor
rts
goe2ctest_enterkey:
stz <newflag
stz temp_goe2c_flag
lda word_counter
cmp #max_word
bne goe2ctest_not_finish
jmp have_finish
goe2ctest_not_finish:
inc word_counter
jsr current_addr_addc_4 ;;<indxd++,由此程序决定下一个单词的地址
jmp goe2ctest_first_1
;;====================================================================================
cls_english:
lda #0
tay
dd_loop1:
lda #20h
sta textbuffor,y
iny
cpy star_textbuffor ;#40
bne dd_loop1
rts
;;================
Ctextbuffor2dispbuffor:
lda #0
tay
?00: lda textbuffor+star_textbuffor,y
sta dispbuffor+get_e2c_num,y
iny
cpy End_textbuffor
bne ?00
clc
tya
adc get_e2c_num
sta get_e2c_num
rts
;;================
Etextbuffor2dispbuffor:
lda #0
tay
?00: lda textbuffor,y
sta dispbuffor,y
iny
cpy star_textbuffor
bne ?00
lda star_textbuffor
sta get_e2c_num
rts
;;================
dispbuffor2textbuffor:
lda end_1_page
tay
?00: Lda dispbuffor,y
sta textbuffor,y
iny
cpy end_1_page
bne ?00
clc
tya
adc end_1_page
sta end_1_page
rts
;;====================================================================================
;;======= 调用英汉程序解压和显示中文 =YL==========
;;入口curymax_bak,curx,cury star_textbuffor end_textbuffor
;;出口showwordlocation
cls_textbuffor:
stz <temp
lda #iconDown&0ffh
trb Icondown>>8
lda #iconUp&0ffh
trb IconUp>>8
lda #' ' ;;清除3~6行
ldy star_textbuffor
?1:
sta textbuffor,y
iny
cpy end_textbuffor
bcc ?1
stz yinbiaoinfbuff
stz yinbiaoinfbuff+3
stz yinbiaoinfbuff+6
stz yinbiaoinfbuff+9
;rts
;----------------------------------
XYZ:
lda textpagenum_study
beq ?_Offup
lda #IconUp&0ffh
tsb IconUp>>8
?_Offup:
lda #'1'
sta <CharL
sta <CharH
Ldx <CharL
Ldy <CharH
LputChar
lda #'.'
sta <CharL
sta <CharH
Ldx <CharL
Ldy <CharH
LputChar
?_loop:
jsr store_inf
jsr ljsr
dw newenchbank
dw extract_jieshi_oneByte-1
lda ItemNo
cmp #5
beq ?_is_tfill_mode
jsr ljsr
dw newenchbank
dw store_jieshiyinbiao-1 ;;调用英汉保存音标程序
bra ?_all_go_here
?_is_tfill_mode:
jsr ljsr
dw alarmbank
dw store_jieshiyinbiao_yiadd-1
?_all_go_here:
lda <CharL
sta <CharH
cmp #0bh ;;如果是有保存此例句地址
bne ?_notappearliju
jsr inc1_indxd
jsr inc1_indxd
jsr inc1_indxd
?_notappearliju:
jsr push_inf
jsr ljsr
dw newenchbank
dw extract_jieshi_oneByte-1
lda <CharH
cmp <CharL
bne ?_0 ;;不是结束
cmp #0ah
bne ?_0 ;;不是结束
jsr restore_inf
loff_lcd_icon icondown
?_jieshiend:
rts
?_0:
cmp #80h
bcc ?_enchar
jsr ljsr
dw newenchbank
dw changejieshich_onehanzi-1
lda <CharL
cmp #0aah
bne ?_usefulchar
lda <CharH
cmp #0a1h
bcc ?_specialenchar
?_usefulchar:
lda <CurX
cmp #19
bcs ?_3
?_4:
ldx <CharL
ldy <CharH
Lputchar
lda <CurY
cmp curymax_bak
bcs ?_yi_1029
jmp ?_loop
?_yi_1029:
jmp ?_exit
?_3:
lcheckcrlf
lda <CurY
cmp curymax_bak
bcc ?_4
jsr restore_inf
?_braexit:
jmp ?_exit
?_enchar:
jsr pop_inf
?_specialenchar:
lda <CharH
cmp #0ah
bne ?_compnext
?_checkscreenend:
lcheckcrlf
lda <CurY
cmp curymax_bak
bcs ?_braexit
jmp ?_loop
?_compnext:
cmp #0bh
bne ?_purityen
lda <CurX
cmp #19
bcs ?_1
?_2:
lda <CharL
cmp #0ah ;;[例]后有回车是结尾
bne ?_checkscreenend
jmp ?_jieshiend
?_1:
lcheckcrlf
lda <CurY
cmp curymax_bak
bcc ?_2
jsr restore_inf
bra ?_exit
?_purityen:
lda <CurX
cmp #18
bcs ?_01
?_02:
ldx <CharH
Lputchar
lda <CurY
cmp curymax_bak
bcs ?_exit
jmp ?_loop
?_01:
lda <CharH
jsr judgeaz
beq ?_02
lda <CharL
jsr judgeaz
beq ?_02
lda <CurX
cmp #19
beq ?_03
cmp #18
bne ?_04
jsr push_inf
jsr ljsr
dw newenchbank
dw extract_jieshi_oneByte-1
jsr ljsr
dw newenchbank
dw extract_jieshi_oneByte-1
jsr pop_inf
lda <CharL
jsr judgeaz
beq ?_02
?_04:
ldx <CharH
Lputchar
ldx #1ah ;'~'
Lputchar
lda <CurY
cmp curymax_bak
bcs ?_exit
jmp ?_loop
?_03:
lcheckcrlf
lda <CurY
cmp curymax_bak
bcc ?_02
jsr restore_inf
?_exit:
jsr pop_inf
rts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -