📄 bak.asm
字号:
;;======== 测试---英译汉 初始化界面 ===========
public goc2etest
public goc2etest_disp
public goc2etest_first
;;goc2etest_key_table:
;; db EnterKey,esckey,pgdown,pgup,K1Key,K2Key,K3Key,nullkey
;;goc2etest_keyin_program:
;; dw goc2etest_enterkey-1
;; dw goe2c_esckey-1
;; dw goc2etest_pgdnkey-1
;; dw goc2etest_pgupkey-1
;; dw goc2etest_key1-1
;; dw goc2etest_key2-1
;; dw goc2etest_key3-1
;;study_goc2etest_help:
;; db '按[',0f8h,0ceh,']`[',0f8h,0cfh,']翻看选项内容.',0dh
;; db '按[1],[2],[3]键输入所选答案,若答案正确系统将自动进入下一单词;若答案错误则要求重来一次,再次错误将显示正确答案,且按[输入]方进入下一单词',0dh
;; db '按[返回]退出本次测试.',0
;;
MusicSong1:
dw Winsong
dw LostSong
dw GMRONDO
MusicSong2:
dw Winsong
dw LostSong
dw GMRONDO
right_string:
db ' '
db '本次测试总题数:50 '
db ' '
db ' 正确: ,错误: '
db ' '
right_string1:
db ' '
db ' '
db ' 请看正确答案! '
db ' '
db ' ',0
right_string2:
db ' '
db ' '
db ' 你答对了,再接再励! '
db ' '
db ' ',0
wrong_string1:
db ' '
db ' '
db ' 你答错了,再来一次! '
db ' '
db ' ',0
;============================================================================================
;============================================================================================
goc2etest:
; STARTUART
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
stz right_num
stz wrong_num
jsr get_first_word_address
jsr bak_currentwordaddress
jsr bak_firstwordaddress
goc2etest_first:
jsr cls_dispbuffor
lda #40
sta dispbuffor_offset
lda #0
sta dispbuffor_offset+1
sta get_e2c_num
sta page_num
sta getword_random0
sta getword_random1
sta getword_random2
sta getword_random3
sta getword_random_num
sta get_dispbuffor_num
sta answer_num
jsr random_getword
jsr cls_textbuffor
jsr page1_dispbuffor2textbuffor
lupdatescreen
jmp go_to_lmainu
;============================================================================================
goc2etest_disp:
jsr get_first_word_address_0 ;;查找第0-7个studyrage的首单词地址
lcls
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:保存每页的首地址
lda screenmode
cmp #4
bne ?_1
jsr tiao_chuji_mode4 ;;从第2行开始显示
bra ?_2
?_1: jsr tiao_chuji_mode5_9 ;;???可能是从第4行开始显示
?_2: jsr extract_and_show_all_00 ;;调用英汉程序解压中文
lda getword_random_num
cmp #0ffh
bne ?03
jsr E_textbuffor2dispbuffor
?03: JSR print_selectstring
JSR D_textbuffor2dispbuffor
rts
;;========================== key process ====================================================
;;========================== key process ====================================================
goc2etest_enterkey:
lsoundoff
lda right_num
cmp #88h
bne goc2etest_enterkey0
jmp have_finish
goc2etest_enterkey0:
stz <newflag
stz temp_goe2c_flag
clc
lda right_num ;(right_num+wrong_num)-1=word_counter ,then get next word
adc wrong_num
dec
cmp word_counter
beq ?next
jmp go_to_lmainu
?next:
lda word_counter
cmp #max_word
bne goc2etest_not_finish
goc2etest_have_finish:
jsr print_rightstring
lupdatescreen
lda #2
jsr music_on
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
lda #88h
sta right_num
lda #0ffh
sta page_num
jmp go_to_lmainu
goc2etest_not_finish:
inc word_counter
jsr unbak_currentwordaddress
jsr current_addr_addc_4 ;;<indxd++,由此程序决定下一个单词的地址
jsr bak_currentwordaddress
jmp goc2etest_first
;;==========================
goc2etest_pgdnkey:
lda page_num
cmp #0ffh
bne goc2etest_pgdnkeya
jmp go_to_lmainu
goc2etest_pgdnkeya:
lda page_num
cmp page_num_max
bne goc2etest_pgdnkeynext
jmp go_to_lmainu
goc2etest_pgdnkeynext:
inc page_num
goc2etest_pgdnkeycomm:
lda page_num
beq goc2etest_page1
cmp #1
beq goc2etest_page2
bra goc2etest_page3
goc2etest_page1:
jsr page1_dispbuffor2textbuffor
bra goc2etest_pageend
goc2etest_page2:
jsr page2_dispbuffor2textbuffor
bra goc2etest_pageend
goc2etest_page3:
jsr page3_dispbuffor2textbuffor
goc2etest_pageend:
lupdatescreen
jmp go_to_lmainu
;;==========================
goc2etest_pgupkey:
lda page_num
cmp #0ffh
bne goc2etest_pgupkeya
jmp go_to_lmainu
goc2etest_pgupkeya:
lda page_num
bne goc2etest_pgupkeynext
jmp go_to_lmainu
goc2etest_pgupkeynext:
dec page_num
jmp goc2etest_pgdnkeycomm
;;==========================
goc2etest_upkey:
nop
nop
nop
jmp go_to_lmainu
;;==========================
goc2etest_downkey:
nop
nop
nop
jmp go_to_lmainu
;;==========================
goc2etest_key1:
lda page_num
cmp #0ffh
bne goc2etest_key1a
jmp go_to_lmainu
goc2etest_key1a:
lda #1
jmp goc2etest_key123_comm
;;==========================
goc2etest_key2:
lda page_num
cmp #0ffh
bne goc2etest_key2a
jmp go_to_lmainu
goc2etest_key2a:
lda #2
jmp goc2etest_key123_comm
;;==========================
goc2etest_key3:
lda page_num
cmp #0ffh
bne goc2etest_key3a
jmp go_to_lmainu
goc2etest_key3a:
lda #3
goc2etest_key123_comm:
cmp getword_rightvalue
beq goc2etest_key123_right
goc2etest_key123_wrong:
inc answer_num
lda answer_num
cmp #1
beq xxxx
bra yyyy
xxxx:
jsr cls_textbuffor
jsr print_wrongstring1
lupdatescreen
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
stz page_num
jmp goc2etest_pgdnkeycomm
yyyy:
jsr cls_textbuffor
jsr print_rightstring1
lupdatescreen
lda #1
jsr music_on
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr print_rightanswer
lsoundoff
lupdatescreen
lda #0ffh
sta page_num
inc wrong_num
jmp go_to_lmainu
goc2etest_key123_right:
inc right_num
jsr print_rightstring2
lupdatescreen
lda #0
jsr music_on
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
lsoundoff
jmp goc2etest_enterkey
;;==========================sub prog================================================================
;;==========================sub prog================================================================
cls_dispbuffor:
ldy #0
?00: lda #20h
sta dispbuffor,y
sta dispbuffor+0ffh,y
iny
cpy #0ffh
bne ?00
rts
;;==========================
cls_textbuffor:
ldy #0
?00: lda #20h
sta textbuffor,y
iny
cpy #220
bne ?00
rts
;;==========================
page1_dispbuffor2textbuffor:
ldy #0
?00: lda dispbuffor,y
sta textbuffor,y
iny
cpy #120
bne ?00
lda #4
sta screenmode
jsr tiao_chuji_mode4 ;;从第2行开始显示
rts
;;==========================
page2_dispbuffor2textbuffor:
ldy #0
?00: lda dispbuffor+120,y
sta textbuffor,y
iny
cpy #100
bne ?00
lda #1
sta screenmode
lda #0
sta <curx
sta <cury
rts
;;==========================
page3_dispbuffor2textbuffor:
ldy #0
?00: lda dispbuffor+220,y
bne ?01
lda #20h
?01:
sta textbuffor,y
iny
cpy #100
bne ?00
lda #1
sta screenmode
lda #0
sta <curx
sta <cury
rts
;;==========================
E_textbuffor2dispbuffor:
ldy #0
?00: lda textbuffor,y
sta dispbuffor,y
iny
cpy #40 ;star_textbuffor
bne ?00
rts
;;==========================
get_address1: ;textbuffor+star_textbuffor
lda #0
sta star_textbuffor+1
lda #<textbuffor
sta strinxl
lda #>textbuffor
sta strinxl+1
clc
lda strinxl
adc star_textbuffor
sta strinxl
lda strinxl+1
adc star_textbuffor+1
sta strinxl+1
rts
;;==========================
get_address2: ;dispbuffor+dispbuffor_offset
lda #0
sta dispbuffor_offset+1
lda #<dispbuffor
sta indxd
lda #>dispbuffor
sta indxd+1
clc
lda indxd
adc dispbuffor_offset
sta indxd
lda indxd+1
adc dispbuffor_offset+1
sta indxd+1
rts
;;==========================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -