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

📄 bak.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;;========	测试---英译汉	初始化界面	===========

	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 + -