⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sttest.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	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 + -