📄 sttest.asm
字号:
cmp random0
beq ?100
bra ?common
?00: lda temp_random
sta random0
?common:
jsr get_random_address_adc
jsr goe2ctest_disp ;word_current
rts
?21:
jsr unbak_currentwordaddress
jsr goe2ctest_disp ;word_current
rts
;;==========================
getrandom_49:
?first:
LRandomOn
lnxseed
LRandomOff
lda <seed
?next: cmp #49
bcc ?end
sbc #49
bra ?next
?end: cmp word_counter ;;????????
beq ?first
sta temp_0
sta temp_random
rts
;;==========================
get_random_address_adc:
; putsio #'c'
; putsio first_Addrh_bak
; putsio first_Addrp_bak
; putsio first_Addrm_bak
; putsio first_Addrl_bak
; putsio temp_0
;
stz temp_1
ldy temp_0
?00: clc
lda temp_1
adc #4
sta temp_1
dey
bne ?00
stz <newflag
clc
lda <first_Addrl_bak
adc temp_1
sta current_AddrL
sta <indxd
lda <first_addrm_bak
adc #0
sta current_Addrm
sta <indxd+1
lda <first_addrh_bak
adc #0
sta current_Addrh
sta <indxd+2
lda <first_addrp_bak
adc #0
sta current_Addrp
sta <indxd+3
smb7 <indxd+1
lda current_Addrm
ora #10000000b
sta current_Addrm
; putsio #'d'
; putsio current_Addrh
; putsio current_Addrp
; putsio current_Addrm
; putsio current_Addrl
;
rts
;;==========================
bak_currentwordaddress: ;将当前单词的地址bak
lda current_Addrl
sta <current_Addrl_bak
lda current_Addrm
sta <current_Addrm_bak
lda current_Addrh
sta <current_Addrh_bak
lda current_Addrp
sta <current_Addrp_bak
rts
;;==========================
unbak_currentwordaddress: ;将当前单词的地址还原
lda <current_Addrl_bak
sta current_Addrl
sta <indxd
lda <current_Addrm_bak
sta current_Addrm
sta <indxd+1
lda <current_Addrh_bak
sta current_Addrh
sta <indxd+2
lda <current_Addrp_bak
sta current_Addrp
sta <indxd+3
rts
;;==========================
bak_firstwordaddress: ;将first单词的地址bak
lda first_Addrl
sta <first_Addrl_bak
lda first_Addrm
sta <first_Addrm_bak
lda first_Addrh
sta <first_Addrh_bak
lda first_Addrp
sta <first_Addrp_bak
rts
;;==========================
print_rightanswer:
jsr cls_dispbuffor
jsr cls_textbuffor
jsr unbak_currentwordaddress
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:保存每页的首地址
jsr tiao_chuji_mode4 ;;从第2行开始显示
jsr extract_and_show_all_00 ;;调用英汉程序解压中文
rts
;;==========================
music_on:
asl
tax
lda MusicSong,x
sta <Melodyl1
lda MusicSong+1,x
sta <Melodyh1
lda MusicSong,x
sta <Melodyl2
lda MusicSong+1,x
sta <Melodyh2
lda <melody_drrh
and #f8h
ora #>ps1_AtBank0Bank
sta <melody_drrh
lda #<ps1_AtBank0Bank
sta <melody_drrl
rmb6 <SysOpt
jsr ljsr
dw onoff_bank
dw Melody_test-1
rts
;;==========================
;;======== 测试---汉译英 初始化界面 ===========
;;======== 测试---汉译英 初始化界面 ===========
goc2etest_key_table:
db EnterKey,esckey,downkey,upkey,K1Key,K2Key,K3Key,nullkey
goc2etest_keyin_prog:
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
;============================================================================================
goc2etest:
lda #7 ;#6
sta ItemNo
stz <newflag
lda #<goc2etest-1
sta HelpRtPrc
lda #>goc2etest-1
sta HelpRtPrc+1
jsr call_sttest_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:
lda #0
sta dispbuffor_offset
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 answer_num
jsr cls_dispbuffor
jsr cls_textbuffor
jsr goc2etest_disp_c
jsr goc2etest_random_getword
jsr goc2etest_page1_disp2textbuffor
jsr light_icon_up_or_down ;add
jmp go_to_lmain
;============================================================================================
goc2etest_disp_c: ;;只取中文
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:保存每页的首地址
jsr tiao_chuji_mode4
jsr extract_and_show_all_00 ;;调用英汉程序解压中文
ldy #0
?00: lda textbuffor+40,y
cmp #20h
beq ?01
?02: sta dispbuffor,y
iny
bra ?00
?01: ldx #0
?05: lda textbuffor+40,y
cmp #20h
bne ?02
iny
inx
cpx #20
bne ?05
?04: dey
sec
tya
sbc #20
sta dispbuffor_offset
sta strinxl
?11: sec
lda strinxl
sbc #20
bcc ?10
sta strinxl
bra ?11
?10: sec
lda #20
sbc strinxl
clc
adc dispbuffor_offset
sta dispbuffor_offset
rts
;============================================================================================
goc2etest_disp_e: ;;只取英文
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:保存每页的首地址
jsr tiao_chuji_mode4
jsr extract_and_show_all_00 ;;调用英汉程序解压中文
jsr get_address2
ldy #0
?00: lda textbuffor,y
sta (indxd),y
iny
CPY #20
BNE ?00
clc
LDA dispbuffor_offset
adc #20
sta dispbuffor_offset
rts
;;========================== key process ====================================================
goc2etest_keyin: ;;学习键控
ldy #0ffh
goc2etest_keyin_loop:
iny
lda goc2etest_key_table,y
bmi goc2etest_keyin_end
cmp <KeyNo
bne goc2etest_keyin_loop
tya
asl
tay
lda goc2etest_keyin_prog+1,y
pha
lda goc2etest_keyin_prog,y
pha
rts
goc2etest_keyin_end:
jmp go_to_lmainu
;;==========================
goc2etest_enterkey:
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 clr_icon
jsr print_rightstring
jsr music_8times_off
lda #88h
sta right_num
lda #0ffh
sta page_num
jmp studyload_0
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 #1
bne goc2etest_pgdnkeynext
jmp go_to_lmainu
goc2etest_pgdnkeynext:
inc page_num
jsr light_icon_up_or_down ;add
goc2etest_pgdnkeycomm:
lda page_num
beq goc2etest_page1
bra goc2etest_page2
goc2etest_page1:
jsr goc2etest_page1_disp2textbuffor
bra goc2etest_pageend
goc2etest_page2:
jsr goc2etest_page2_disp2textbuffor
goc2etest_pageend:
;lupdatescreen
jmp go_to_lmain
;;==========================
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
jsr light_icon_up_or_down ;add
jmp goc2etest_pgdnkeycomm
;;==========================
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
bne goc2etest_key123_wrong
jmp goc2etest_key123_right
goc2etest_key123_wrong:
inc answer_num
lda answer_num
cmp #1
beq oooo
bra pppp
oooo:
jsr lsetbmp_x21y13
LOPrintImage wrong1bmp
lda #1
jsr music_2times_off
stz page_num
jsr light_icon_up_or_down ;add
jmp goc2etest_pgdnkeycomm
pppp:
jsr lsetbmp_x21y13
LOPrintImage wrong2bmp
lda #1
jsr music_2times_off
jsr print_rightanswer
lda #0ffh
sta page_num
inc wrong_num
;lupdatescreen
jmp go_to_lmain
goc2etest_key123_right:
inc right_num
jsr lsetbmp_x21y13
LOPrintImage rightbmp
lda #0
jsr music_2times_off
jmp goc2etest_enterkey
;;==========================
goc2etest_page1_disp2textbuffor:
jsr tiao_chuji_mode4
ldy #0
?00: lda dispbuffor,y
sta textbuffor,y
iny
cpy #100
bne ?00
lda #1
sta screenmode
lda #0
sta <curx
sta <cury
rts
;;==========================
goc2etest_page2_disp2textbuffor:
ldy #0
?00: lda dispbuffor+100,y
sta textbuffor,y
iny
cpy #100
bne ?00
lda #1
sta screenmode
lda #0
sta <curx
sta <cury
rts
;;==========================
;get english order
goc2etest_random_getword:
jsr random_digit5
stz get_e2c_num ;选项的代号
lda getword_random0
sta getword_random_num ;选项位置所对应的中文解释为第几个单词的
jsr goc2etest_get_random_word
LDA #1
STA get_e2c_num
lda getword_random1
sta getword_random_num ;选项位置所对应的中文解释为第几个单词的
jsr goc2etest_get_random_word
LDA #2
STA get_e2c_num
lda getword_random2
sta getword_random_num ;选项位置所对应的中文解释为第几个单词的
jsr goc2etest_get_random_word
rts
;;==========================
goc2etest_get_random_word:
jsr print_selectstring
lda getword_random_num
cmp #0ffh
beq ?21
?100:
jsr getrandom_49
lda get_e2c_num
beq ?00
cmp #1
beq ?01
?02: lda temp_random
sta random2
cmp random0
beq ?100
cmp random1
beq ?100
bra ?common
?01: lda temp_random
sta random1
cmp random0
beq ?100
bra ?common
?00: lda temp_random
sta random0
?common:
jsr get_random_address_adc
bra ?22
?21: jsr unbak_currentwordaddress
?22: jsr goc2etest_disp_e ;word_current
rts
;;==========================
music_2times_off:
jsr music_on
jsr delay1s
jsr delay1s
lsoundoff
rts
music_8times_off:
lda #2
jsr music_on
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
jsr delay1s
lsoundoff
rts
;;==========================
lsetbmp_x21y13:
lsetscreen 0
lda #21
sta <Ox
lda #13
sta <OY
rts
;;==========================
random_digit5:
LRandomOn
lnxseed
LRandomOff
lda <seed
?next: cmp #5
bcc ?end
sbc #5
bra ?next
?end: tax
lda random_tab_a,x
tax
lda random_tab_b,x
sta getword_random0
lda random_tab_b+1,x
sta getword_random1
lda random_tab_b+2,x
sta getword_random2
lda random_tab_b+3,x
sta getword_rightvalue ;标准答案代号
; putsio #'b'
; putsio getword_random0
; putsio getword_random1
; putsio getword_random2
; putsio getword_rightvalue
;
rts
;;==========================
;;==========================
;;判断上下图标是否点亮
;;==========================
light_icon_up_or_down:
lda page_num
cmp page_num_max
bne light_icon_downok
Loff_Lcd_Icon Icondown
jmp light_icon_up
light_icon_downok:
Llight_Lcd_Icon Icondown
jmp light_icon_up
light_icon_up:
lda page_num
bne light_icon_upok
Loff_Lcd_Icon IconUp
rts
light_icon_upok:
Llight_Lcd_Icon IconUp
rts
;;==========================
clr_icon:
Loff_Lcd_Icon Icondown
Loff_Lcd_Icon IconUp
rts
;;==========================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -