pinky/nes-testsuite/roms/branch_timing_tests/source/1.Branch_Basics.a
2016-10-23 19:50:32 +02:00

78 lines
1.3 KiB
Text

; Tests branch timing basics
.include "prefix.a"
test_name:
.db "BRANCH TIMING BASICS",0
.code
delay7 = $20
delay1:
jsr delay2
jsr delay2
delay2:
jsr delay3
jsr delay3
delay3:
jsr delay4
jsr delay4
delay4:
jsr delay5
jsr delay5
delay5:
jsr delay6
jsr delay6
delay6:
jsr delay7
jsr delay7
jmp delay7
.code
reset:
jsr init_tests
lda #$EA ; nop
sta delay7
lda #$60 ; rts
sta delay7 + 1
lda #2;) NMI period is too short/3)too long
jsr begin_test
jsr delay7
jsr delay7
jsr delay5
jsr delay4
jsr delay2
jsr delay2
jsr delay1
jsr delay1
jsr end_test
lda #$B0 ; bcs
sta delay7
lda #$60 ; rts
sta delay7 + 2
lda #4;) Branch not taken is too long/5)too short
jsr begin_test
clc
jsr delay7
jsr delay7
jsr delay5
jsr delay4
jsr delay2
jsr delay2
jsr delay1
jsr delay1
jsr end_test
lda #6;) Branch taken is too long/7)too short
jsr begin_test
ldy #24
ldx #39
: dex
bne -
dey
bne -
jsr end_test
jmp tests_passed