📄 test.asm
字号:
sta <T1M ;; and set to auto reload.
lda #256-3 ;; 6 * 976.6 = 5860uS.
sta <T1C ;; One times.
csc3: bbr3 <IREQ,csc3
rmb3 <IREQ ;; Clear Timer 1 over flag.
sed ;; Sed to decimal operation mode.
csc5:
bbs3 <IREQ,csc8 ;; '5 ------+
sec ;; '2 |
lda OSCFreq ;; '4 |
adc #0 ;; '2 +-- '27
sta <OSCFreq ;; '3 |
lda <OSCFreq+1 ;; '3 |
adc #0 ;; '2 |
sta <OSCFreq+1 ;; '3 |
;; bcc csc5 ;; '3 ------+
nop
sta <OSCFreq+1 ;;凑时间
bbs3 <IREQ,csc8 ;; '5 ------+
nop ;; '2 |
lda OSCFreq ;; '4 |
nop ;; '2 +-- '27
sta <OSCFreq ;; '3 |
lda <OSCFreq+1 ;; '3 |
nop ;; '2 |
sta <OSCFreq+1 ;; '3 |
bcc csc5 ;; '3 ------+
csc8: stz <T1M ;;
rmb3 <IREQ ;; Clear Timer 1 over flag.
rmb3 <IENAB ;; Disable timer 1 interrupt.
lda <IENAB
sta <IENA
;; sec ;; OSCFreq - 1%.
;; lda <OSCFreq
;; sbc <OSCFreq+1
;; sta <OSCFreq
;; lda <OSCFreq+1
;; sbc #0
;; sta <OSCFreq+1
cld ;; Clear decimal operation mode.
cli ;; Enable all interrupt.
rts
;;=====================================================
RomChkSum:
lprint rom_testing
jsr CALL_LUpdateScreen
cld
LSetScreen_to_ds0 1
LPrint RomTestMsg
;;=====================================================
jsr ljsr
dw biosbank
dw clear_flash_buffer-1
; lda #>flash_prg_bank
; sta <DRRh
; lda #<flash_prg_bank
; sta <DRRl
; lda #87h
; sta <drr_max_ram
; jsr sum_init_and_checksum
; ldx <CheckSum2
; la2xy
; stx TextBuffor+7+24
; sty TextBuffor+8+24
; ldx <CheckSum1
; la2xy
; stx TextBuffor+9+24
; sty TextBuffor+10+24
;;===============================================
;;===============================================
lda #>flash_prg_bank
sta <DRRh
lda #<flash_prg_bank
sta <DRRl
lda #90h
sta <drr_max_ram
jsr sum_init_and_checksum
ldx <CheckSum2
la2xy
stx TextBuffor+7+44
sty TextBuffor+8+44
ldx <CheckSum1
la2xy
stx TextBuffor+9+44
sty TextBuffor+10+44
;;===============================================
;;===============================================
stz <DRRh
stz <DRRl
lda #8
sta <drr_max_ram
jsr sum_init_and_checksum
ldx <CheckSum2
la2xy
stx TextBuffor+27+44
sty TextBuffor+28+44
ldx <CheckSum1
la2xy
stx TextBuffor+29+44
sty TextBuffor+30+44
jsr sum_init
?1:
lda #01h
sta <drrh
stz <drrl
;; lda #80h
;; bbr0 <sf1,?5000_rom
;; lda #0
?5000_rom:
;; sta <drr_max_ram
stz <drr_max_ram
jsr count_checksum
;; lda #01h
;; sta <drrh
;; lda #40h
;; sta <drr_max_ram
;; jsr count_checksum
ldx <CheckSum2
la2xy
stx TextBuffor+47+44
sty TextBuffor+48+44
ldx <CheckSum1
la2xy
stx TextBuffor+49+44
sty TextBuffor+50+44
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 GraphBank
dw Melody-1
jmp ExitWithU
RamTesting:
lda #2
sta <INDH
stz <INDL
RamTesting2:
lda #0ffh
sta (<IND)
lda (<IND)
cmp #0ffh
bne RamTesting0
lda #0
sta (<IND)
lda (<IND)
bne RamTesting0
inc <INDL
bne RamTesting2
inc <INDH
lda <INDH
cmp #10h
bcc RamTesting2
LCls
LSetCur 5,1
LPrint RamTestMsg
LSetCur 8,3
LPrint ramokmsg
bra EndRamTest
RamTesting0:
LCls
LSetCur 5,1
LPrint RamTestMsg
LSetCur 4,3
LPrint ramerrormsg
EndRamTest:
cli
rts
sum_init:
stz <CheckSum1
stz <CheckSum2
stz <CheckSum3
stz <CheckSum4
rts
sum_init_and_checksum:
jsr sum_init
count_checksum:
lda #80h
sta <INSH
stz <INSL
?VerFlashData:
lda (<INS)
clc
adc <CheckSum1
sta <CheckSum1
bcc ?xx
lda <CheckSum2
adc #0
sta <CheckSum2
; bcc ?xx
; lda <CheckSum3
; adc #0
; sta <CheckSum3
; bcc ?xx
; lda <CheckSum4
; adc #0
; sta <CheckSum4
?xx:
inc <INSL
bne ?VerFlashData
inc <INSH
bne ?VerFlashData
inc <DRR
lda #80h
sta <INSH
lda <DRR
cmp <drr_max_ram
bne ?VerFlashData
rts
half_sec_invert_screen:
lda #09h
sta <test_temp
?1: rmb1 <eflag
bbr1 <eflag,$
stz <OX
stz <OY
LBlockInvert 159,80
dec <test_temp
bpl ?1
rts
lcd_go_2_times:
lda #4
sta <test_temp
?3:
dec <test_temp
bpl ?4
rts
?4:
bbr0 <test_temp,?5
LSetScreen_to_ds0 1
lprint lcd_screen
jsr CALL_LUpdateScreen
?5:
stz <ox
stz <oy
?2:
bbr0 <test_temp,?off_dot
LoPrintImage block_1x1
bra ?ox_inc
?off_dot:
LoClrImage block_1x1
?ox_inc:
lda #0
?delay:
inc
nop
bne ?delay
inc <ox
lda <ox
cmp #160
bne ?2
stz <ox
inc <oy
lda <oy
cmp #80
bcs ?3
bra ?2
test_all_icon:
LSetScreen_to_ds0 1
lprint lcdtest_icon
jsr CALL_LUpdateScreen
lclear_all_icon
lda #01h
sta table_icon_ram_address
jsr display_icon_1_time
lclear_all_icon
lda #01h
sta table_icon_ram_address
jsr display_icon_1_time
rts
display_icon_1_time:
lupdate_all_icon_in_test
rmb1 <eflag
bbr1 <eflag,$
jsr icon_left_shift
bbs0 <sf1,?xxx
lda IconAlarm>>8
and #<IconAlarm
beq display_icon_1_time
rts
?xxx:
lda lcd_icona_0>>8
and #<lcd_icona_0
beq display_icon_1_time
rts
icon_left_shift:
?2:
ldx #1
asl table_icon_ram_address
?1:
rol table_icon_ram_address,x
php
inx
cpx #4
bcs ?3
plp
bra ?1
?3:
plp
rts
;=====================================================
prr_to_drr:
lda <image_addrh
clc
adc #40h
sta <image_addrh
lda <prrh
lsr
sta <drrh
lda <prrl
ror
sta <DRRl
bcs ?1111111_111111
lda <image_addrh
adc #40h
sta <image_addrh
?1111111_111111:
rts
;============================================================================
lowbat_test:
smb0 <sys
lda #10h
?1:
dec
bne ?1
sec
rmb3 <sysf
bbs0 <sys,$+3
bbs0 <sys,?normal_voltage
?low_voltage:
smb3 <sysf
clc
?normal_voltage:
rmb0 <sys
rts
LowBatDetect:
lread_key_again
;*********************************************************
lda <KeyNo
cmp #HelpKey
bne BatIsHight
;HelpKey is pressed
lda <HelpOffset
cmp #NullHelp-HelpTable
bne ?HaveHelp
?Is_In_Help:
rmb3 <EFlag
jmp jmp_LMAINU ;; Branch if null help.
?HaveHelp:
lda #HelpMode
cmp <Mode
beq ?Is_In_Help
ldx <Mode
stx <SaveHelp
sta <Mode ;; Set mode register。
lkeytone
bbs4 <soundflag,$
;lSoundOff ;; Turn off all sound.
lda #10000000b ;; Set mode entry event flag.
sta <EFlag ;; Clear all event flag.
lda #0ffh
sta event_kill
jmp jmp_LMAINU
;*********************************************************
;;; bbs4 <soundflag,$
;;; jsr lowbat_test
;;; bcs BatIsHight
;;;
;;; LSetScreen_to_ds0 1
;;; Lprint LowBatMs_inf
;;; jsr CALL_LUpdateScreen
;;;
;;; lda #3
;;; rmb3 <EFlag
;;;WaitKey:
;;; bbr1 <EFlag,?1
;;; rmb1 <eflag
;;; dec
;;; bne ?1
;;; rts
;;;?1:
;;; bbr3 <EFlag,WaitKey
;;; rmb3 <EFlag
;;;
BatIsHight:
rts
;;==================================
;;关机缺陷在这里修改:
EntPowOff_process:
sei
ldx #0ffh
txs
cli
LPOWEROFF_BUG
;;;;;;;; lSoundOff
;;;;;;;; lSetTimer 0 ;; Stop timer .
;;;;;;;;;; Random generation off.
;;;;;;;; lRandomOff
;;;;;;;;;; Stop scanf
;;;;;;;; LExitScanF ;;
;;;;;;;;;; Sound off.
;;;;;;;; sei ;; Disable all interrupt.
;;;;;;;; lda #0ffh
;;;;;;;; sta event_kill
;;;;;;;; rmb6 <SysF ;; Clear power off event flag.
;;;;;;;;
;;;;;;;; lda <EFlag ;; Remain HSEC , SEC , Minute event flag.
;;;;;;;; and #00000111b ;;
;;;;;;;; sta <EFlag ;;
;;;;;;;;
;;;;;;;; smb7 <SysF ;; Set Power off flag.
;;;;;;;;;; rmb7 <SysOpt ;; Set Power off flag.
;;;;;;;;
;;;;;;;;
;;;;;;;; lda #00110000b ;; Interrupt enable flag.
;;;;;;;; sta <IENAB
;;;;;;;; sta <IENA ;; (5) Enable Base timer interrupt.
;;;;;;;; ;; (4) Enable Port-A interrupt.
;;;;;;;; ;; (3) Disable Timer 1 interrupt.
;;;;;;;; ;; (2) Disable Timer 0 interrupt.
;;;;;;;; ;; (1) Disable DAC reload interrupt.
;;;;;;;; ;; (0) Disable INTX interrupt.
;;;;;;;;
;;;;;;;; smb7 <KeyNo ;; PreSet key off state.
;;;;;;;; jsr ljsr
;;;;;;;; dw biosbank
;;;;;;;; dw setio-1
;;;;;;;; smb7 <pd
;;;;;;;;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -