📄 bak.asm
字号:
;;==========================
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 + -