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

📄 bak.asm

📁 辞典 dict3.asm.grammar.asm,newword.asm 学习 learn.asm 名片 userinf.asm 备忘 userinf.asm 提醒 userinf
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;;==========================
D_textbuffor2dispbuffor:
	jsr	get_address1
	jsr	get_address2
	ldY	#0		;star_textbuffor
?00:	lda	(strinxl),Y	;textbuffor,y	;(strinxl),Y	;textbuffor,y
	cmp	#20h
	BEQ	?10
?03:	sta	(indxd),Y	;textbuffor,y	;(strinxl),Y	;dispbuffor,y

	lda	#20h
	sta	(strinxl),Y
	iny
	bra	?00
?10:	iny
	lda	(strinxl),Y
	cmp	#20h
	beq	?04
	dey
	lda	(strinxl),Y
	bra	?03
?04:	dey	;add	04-4-23	10:40
	dey	;add	04-4-23	10:40
	tya
	clc
	adc	dispbuffor_offset
	sta	dispbuffor_offset
	LDA	dispbuffor_offset
	STA	strinxl
?50:
	SEC
	LDA	strinxl
	SBC	#20
	BEQ	?51
	BCS	?52
	SEC
	LDA	#20
	SBC	strinxl
	STA	strinxl
	CLC
	ADC	dispbuffor_offset
	STA	dispbuffor_offset
	BRA	?51
?52:	STA	strinxl
	BRA	?50
?51:	rts

;;==========================
print_selectstring:	;[选项1,2,3]:
	jsr	get_address2
	lda	#5BH
	sta	(indxd)

	INC	DISPBUFFOR_OFFSET
	jsr	get_address2
	lda	#D1H
	sta	(indxd)

	INC	DISPBUFFOR_OFFSET
	jsr	get_address2
	lda	#A1H
	sta	(indxd)
	INC	DISPBUFFOR_OFFSET
	jsr	get_address2
	lda	#CFH
	sta	(indxd)
	INC	DISPBUFFOR_OFFSET
	jsr	get_address2
	lda	#EEH
	sta	(indxd)
	INC	DISPBUFFOR_OFFSET
	jsr	get_address2

	sec
	lda	DISPBUFFOR_OFFSET
	sbc	#05h
	sta	reverse_location

	lda	get_e2c_num
	beq	?00
	cmp	#1
	beq	?01
?02:
	lda	#33H
	bra	?04
?00:
	lda	#31H
	bra	?04
?01:
	lda	#32H
?04:
	sta	(indxd)
	INC	DISPBUFFOR_OFFSET
	jsr	get_address2
	lda	#5DH
	sta	(indxd)

	CLC
	LDA	#14
	ADC	DISPBUFFOR_OFFSET
	STA	DISPBUFFOR_OFFSET
	RTS

;;==========================
print_wrongstring1:
	ldy	#0ffh
?00:	iny
	lda	wrong_string1,y
	sta	textbuffor,y
	cpy	#100
	bne	?00

	lda	#1
	sta	screenmode
	lda	#0
	sta	<curx
	sta	<cury	
	rts
;;==========================
print_rightstring2:
	ldy	#0ffh
?00:	iny
	lda	right_string2,y
	sta	textbuffor,y
	cpy	#100
	bne	?00

	lda	#1
	sta	screenmode
	lda	#0
	sta	<curx
	sta	<cury	
	rts

;;==========================
print_rightstring1:
	ldy	#0ffh
?00:	iny
	lda	right_string1,y
	sta	textbuffor,y
	cpy	#100
	bne	?00

	lda	#1
	sta	screenmode
	lda	#0
	sta	<curx
	sta	<cury	
	rts			
;;==========================
print_rightstring:
	ldy	#0ffh
?00:	iny
	lda	right_string,y
	sta	textbuffor,y
	cpy	#100
	bne	?00
	
	lda	#1
	sta	screenmode
	lda	#0
	sta	<curx
	sta	<cury	
	jsr	sub_print_num
	rts
;;==========================
print_num_tab:
	db	30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
sub_print_num:
	lda	right_num
	jsr	hex2dec
	lda	print_num
	and	#0fh
	tax
	lda	print_num_tab,x
	sta	textbuffor+69
	lda	print_num
	and	#f0h
	beq	?00
	lsr
	lsr
	lsr
	lsr
	tax
	lda	print_num_tab,x
	sta	textbuffor+68
?00:
	lda	wrong_num
	jsr	hex2dec
	lda	print_num
	and	#0fh
	tax
	lda	print_num_tab,x
	sta	textbuffor+77
	lda	print_num
	and	#f0h
	beq	?01
	lsr
	lsr
	lsr
	lsr
	tax
	lda	print_num_tab,x
	sta	textbuffor+76
?01:	rts

;;==========================
hex2dec:
	sta	print_num
	stz	temp_0
?00:	sec
	lda	print_num
	sbc	#0ah
	bcc	?01
	sta	print_num
	inc	temp_0
	bra	?00
?01:	lda	temp_0
	asl
	asl
	asl
	asl
	ora	print_num
	sta	print_num
	rts
;;==========================
random_tab_a:
	db	4,0,8
random_tab_b:
	db	0ffh,0,0,1	;0
	db	0,0,0ffh,3	;8
	db	0,0ffh,0,2	;4
	
;;==========================
;get	chinese	order
random_getword:
	LRandomOn
	lnxseed
	LRandomOff

	lda	<seed
?next:	cmp	#2
	bcc	?end
	sbc	#2
	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	;标准答案代号
random_getword_00:
	stz	get_e2c_num		;选项的代号
	lda	getword_random0
	sta	getword_random_num	;选项位置所对应的中文解释为第几个单词的
	jsr	get_random_word

	LDA	#1
	STA	get_e2c_num
	lda	getword_random1
	sta	getword_random_num	;选项位置所对应的中文解释为第几个单词的
	jsr	get_random_word

	LDA	#2
	STA	get_e2c_num
	lda	getword_random2
	sta	getword_random_num	;选项位置所对应的中文解释为第几个单词的
	jsr	get_random_word

	lda	dispbuffor_offset
	cmp	#121
	bcc	?02
	cmp	#221
	bcc	?01
	bra	?02
?01:	lda	#1
	bra	?03
?02:	lda	#2
?03:	sta	page_num_max
	rts
;;==========================
get_random_word:
	lda	getword_random_num
	cmp	#0ffh
	beq	?01
	jsr	getrandom_49
	jsr	get_random_address_adc
	jsr	goc2etest_disp			;word_current
	rts
?01:
	jsr	unbak_currentwordaddress
	jsr	goc2etest_disp			;word_current
	rts


;;==========================
getrandom_49:
?first:
	LRandomOn
	lnxseed
	LRandomOff

	lda	<seed
?next:	cmp	#49
	bcc	?end
	sbc	#49
	bra	?next
?end:	sta	temp_0
	cmp	word_counter	;;????????
	beq	?first
	rts
;;==========================
get_random_address_adc:
	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
	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     MusicSong1,x
        sta     <Melodyl1
        lda     MusicSong1+1,x
        sta     <Melodyh1
        lda     MusicSong2,x
        sta     <Melodyl2
        lda     MusicSong2+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
;;==========================            

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -