📄 test.asm
字号:
;;;;;;;; lda #80h
;;;;;;;; trb change_sound_flag
;;;;;;;; stz <drrh
;;;;;;;; stz <drrl
;;;;;;;; ldx #0ffh
;;;;;;;; txs
;;;;;;;; lda #>EntPowOff_xx-1
;;;;;;;; pha
;;;;;;;; lda #<EntPowOff_xx-1
;;;;;;;; pha
;;;;;;;; lda #>biosbank
;;;;;;;; pha
;;;;;;;; lda #<biosbank
;;;;;;;; stz <pb
;;;;;;;; smb7 <lctr
;;;;;;;; ldx #3
;;;;;;;;?1:
;;;;;;;; jsr delay_xxxx
;;;;;;;; bbr5 <pa,?1
;;;;;;;; dex
;;;;;;;; bpl ?1
;;;;;;;; ldx #0ffh
;;;;;;;; stx <pb
;;;;;;;; jmp longgo
;;==================================
;;开机缺陷在这里修改:
EntPowon_process:
STZ <LCTR
LInitIO_Bug
smb7 <pd
sei
ldx #0ffh
txs
cli
lda power_flag
ora #01h
sta power_flag
lda #>popc3x-1
pha
lda #<popc3x-1
pha
lda #>biosbank
pha
lda #<biosbank
jmp longgo
;;;;; jsr change_alarm_sound
;;;;; lda #80h
;;;;; and change_sound_flag
;;;;; bne ?to_set
;;;;; rts
;;;;;?to_set:
;;;;; sei
;;;;; jsr ljsr
;;;;; dw biosbank
;;;;; dw InitIO-1 ;; Initial I/O states.
;;;;; lda #04h
;;;;; ora <IENAB
;;;;; sta <IENAB
;;;;; sta <IENA ;; (5) Enable Base timer interrupt.
;;;;; rmb7 <SysF ;; Clear power off states flag.
;;;;;
;;;;; lda <PA ;; Reload last state of port A.
;;;;; rmb3 <EFlag ;; Clear Key down event flag.
;;;;;
;;;;; lda #clockmode ;; PreSet Clock mode.
;;;;; bbr5 <SF0,?pop7 ;;sf0.5=1 alarm ok
;;;;; rmb5 <SF0
;;;;; lda #alarmmode
;;;;;?pop7:
;;;;; sta <Mode
;;;;; stz <ExtraMode ;; Clear extra mode.
;;;;; jsr InitAll_in_test
;;;;; ldx #0ffh
;;;;; txs
;;;;; cli
;;;;; lda #>SetMode5-1
;;;;; pha
;;;;; lda #<SetMode5-1
;;;;; pha
;;;;; lda #>biosbank
;;;;; pha
;;;;; lda #<biosbank
;;;;; jmp longgo
;;;;;
;;;;;InitAll_in_test:
;;;;;;; PreClear ZData area.即清CData
;;;;; sei
;;;;; ldy <soundflag
;;;;; ldx #ZDataSize-1
;;;;;inia2: stz ZData,x
;;;;; dex
;;;;; bpl inia2
;;;;; sty <soundflag
;;;;; cli
;;;;;;; PreClear PData area.(100H ~ 18FH)
;;;;; ldx #0
;;;;;inia4: stz MenuBuff,x
;;;;; inx
;;;;; cpx #stack_last_ram-MenuBuff ;;清:帮助用RAM,lcd用的临时RAM
;;;;; bne inia4
;;;;; lSetScreen 1
;;;;;;; Random generation off.
;;;;; lRandomOff
;;;;;;; Set cursor to normal size.
;;;;; lSetCursorSize 1
;;;;;Inia5:
;;;;;;; Stop ScanF.
;;;;; stz <SCanFF
;;;;; lCursorOff ;; Set cursor off.
;;;;;
;;;;; rts
if_update_5000icon_or:
lupdate_all_icon
rts
invert_5000_or:
LBlockInvert
rts
updatescreen_5000_or:
jsr CALL_LUpdateScreen
rts
warm_up_start_last:
rts
test_Main_yh:
jsr change_alarm_sound
jsr LJSR
dw biosBank
dw Main_yh-1
test_Mainu_yh:
jsr change_alarm_sound
jsr LJSR
dw biosBank
dw Mainu_yh-1
;test_Main_5000:
; jsr change_alarm_sound
; jsr LJSR
; dw biosBank
; dw Main_5000-1
;test_Mainu_5000:
; jsr change_alarm_sound
; jsr LJSR
; dw biosBank
; dw Mainu_5000-1
change_alarm_sound:
rts
lda #00100000b
and AlarmFlag2
beq ?skip_change_sound
bbs4 <soundflag,?1
lda #80h
trb change_sound_flag
?1:
lda ToneCounter
beq ?skip_change_sound
lda #80h
and change_sound_flag
bne ?skip_change_sound
sei
lda #80h
ora change_sound_flag
sta change_sound_flag
;; lsoundoff
lda #00100000b ;;这里改变后只能按有效键停止.
trb AlarmFlag2
lda #<Susanna1
sta <Melodyl1
lda #>Susanna1
sta <Melodyh1
lda #<Susanna2
sta <Melodyl2
lda #>Susanna2
sta <Melodyh2
lda <melody_drrh
and #f8h
ora #>ps1_AtBank0Bank
sta <melody_drrh
lda #<ps1_AtBank0Bank
sta <melody_drrl
jsr ljsr
dw biosbank
dw melody-1
cli
?skip_change_sound:
rts
test_check_secret:
jsr ljsr
dw OTherBank
dw check_if_secret-1
jsr ljsr
dw cal_bank
dw system_init_cal-1
lda #12h
sta MALMHour1+0
sta MALMHour1+2
sta MALMHour1+4
sta MALMHour1+6
sta MALMHour1+8
rts
read_key_test:
ldy #3
?scanf_key_next:
jsr scanf_key_one_time_in_test
lda keyno_next
cmp <keyno
beq ?xx
bra scanf_key_no_key_in_test
?xx:
dey
bpl ?scanf_key_next
jsr delay_xxxx
rmb3 <eflag
rts
scanf_key_one_time_in_test:
sei
stz keyno_next
ldx #0ffh
?scanf_key_loop:
inx
cpx #9
bcs ?scanf_key_no_key
lda ScanKeyTalx,x
sta <pb
jsr delay_xxxx
lda <pa
cmp #0ffh
bne ?paintxxx
clc
lda keyno_next
adc #8
sta keyno_next
bra ?scanf_key_loop
?paintxxx:
bbr0 <PA,kinc0_in_test ;; Key press.
bbr1 <PA,kinc1_in_test
bbr2 <PA,kinc2_in_test
bbr3 <PA,kinc3_in_test
bbr4 <PA,kinc4_in_test
bbr5 <PA,kinc5_in_test
bbr6 <PA,kinc6_in_test
bbr7 <PA,kinc7_in_test
?scanf_key_no_key:
scanf_key_no_key_in_test:
stz <Pb ;; Scan all key。
lda #nullkey
sta keyno_next
sta <keyno
jsr delay_xxxx
lda <pa
rmb3 <EFlag ;; 设定Key up事件处理旗号.
rmb4 <ireql
ldx #0ffh
txs
cli
jmp WaitTestEvent
kinc7_in_test:
inc keyno_next
kinc6_in_test:
inc keyno_next
kinc5_in_test:
inc keyno_next
kinc4_in_test:
inc keyno_next
kinc3_in_test:
inc keyno_next
kinc2_in_test:
inc keyno_next
kinc1_in_test:
inc keyno_next
kinc0_in_test:
stz <pb ;; Scan all key。
jsr delay_xxxx
lda <pa
rmb4 <ireql
cli
rts
;;=========================================
read_key_again:
ldy #3
?scanf_key_next:
jsr scanf_key_one_time
lda keyno_next
cmp <keyno
beq ?xx
jmp scanf_key_no_key
?xx:
dey
bpl ?scanf_key_next
jsr delay_xxxx
rmb3 <eflag
;;==============================
;; 最后版本请删除这Debug程式
;; lda <drrh
;; pha
;; lda <drrl
;; pha
;; lda #>flash_prg_bank+6
;; sta <drrh
;; lda #<flash_prg_bank+6
;; sta <drrl
;; lda 8000h
;; cmp #85h
;; bne ?skip_call_flash_prg
;; lda 8004h
;; cmp #48h
;; bne ?skip_call_flash_prg
;?ookk:
;; pla
;; sta <drrl
;; pla
;; sta <drrh
rts
;?skip_call_flash_prg:
; lsetscreen_to_ds0 1
; lprint system_error
; jsr cdata_decide_updatescreen
; rmb3 <eflag
;?x:
; wai
; bbr3 <eflag,?x
; bra ?ookk
;;==============================
scanf_key_one_time:
sei
stz keyno_next
ldx #0ffh
?scanf_key_loop:
inx
cpx #9
bcs ?scanf_key_no_key
lda ScanKeyTalx,x
sta <pb
jsr delay_xxxx
lda <pa
cmp #0ffh
bne ?paintxxx
clc
lda keyno_next
adc #8
sta keyno_next
bra ?scanf_key_loop
?paintxxx:
bbr0 <PA,kinc0 ;; Key press.
bbr1 <PA,kinc1
bbr2 <PA,kinc2
bbr3 <PA,kinc3
bbr4 <PA,kinc4
bbr5 <PA,kinc5
bbr6 <PA,kinc6
bbr7 <PA,kinc7
?scanf_key_no_key:
scanf_key_no_key:
lda #nullkey
sta keyno_next
sta <keyno
stz <Pb ;; Scan all key。
rmb3 <EFlag ;; 设定Key up事件处理旗号.
jsr delay_xxxx
lda <pa
rmb4 <ireql
cli
jmp jmp_LMAINU
kinc7: inc keyno_next
kinc6: inc keyno_next
kinc5: inc keyno_next
kinc4: inc keyno_next
kinc3: inc keyno_next
kinc2: inc keyno_next
kinc1: inc keyno_next
kinc0:
stz <pb ;; Scan all key。
jsr delay_xxxx
lda <pa
rmb4 <ireql
cli
rts
delay_xxxx:
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
rts
ScanKeyTalx:
db 0ffh
db 11111110b
db 11111101b
db 11111011b
db 11110111b
db 11101111b
db 11011111b
db 10111111b
db 01111111b
JMP_lmainu:
lmainu
CALL_LUPDATESCREEN:
LUPDATESCREEN
RTS
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -