mirror of
https://github.com/daniel5151/ANESE.git
synced 2025-04-02 10:32:00 -04:00
82 lines
1.6 KiB
NASM
Executable file
Vendored
82 lines
1.6 KiB
NASM
Executable file
Vendored
; Tests basic operation of frame irq flag.
|
|
|
|
.include "prefix_apu.a"
|
|
|
|
reset:
|
|
jsr setup_apu
|
|
|
|
lda #2;) Flag shouldn't be set in $4017 mode $40
|
|
sta result
|
|
lda #$40
|
|
sta $4017
|
|
lda #20
|
|
jsr delay_msec
|
|
jsr should_be_clear
|
|
|
|
lda #3;) Flag shouldn't be set in $4017 mode $80
|
|
sta result
|
|
lda #$80
|
|
sta $4017
|
|
lda #20
|
|
jsr delay_msec
|
|
jsr should_be_clear
|
|
|
|
lda #4;) Flag should be set in $4017 mode $00
|
|
sta result
|
|
lda #$00
|
|
sta $4017
|
|
lda #20
|
|
jsr delay_msec
|
|
jsr should_be_set
|
|
|
|
lda #5;) Reading flag clears it
|
|
sta result
|
|
lda #$00
|
|
sta $4017
|
|
lda #20
|
|
jsr delay_msec
|
|
lda $4015
|
|
jsr should_be_clear
|
|
|
|
lda #6;) Writing $00 or $80 to $4017 doesn't affect flag
|
|
sta result
|
|
lda #$00
|
|
sta $4017
|
|
lda #20
|
|
jsr delay_msec
|
|
lda #$00
|
|
sta $4017
|
|
lda #$80
|
|
sta $4017
|
|
jsr should_be_set
|
|
|
|
lda #7;) Writing $40 or $c0 to $4017 clears flag
|
|
sta result
|
|
lda #$00
|
|
sta $4017
|
|
lda #20
|
|
jsr delay_msec
|
|
lda #$40
|
|
sta $4017
|
|
lda #$00
|
|
sta $4017
|
|
jsr should_be_clear
|
|
|
|
lda #1;) Tests passed
|
|
sta result
|
|
error:
|
|
jmp report_final_result
|
|
|
|
; Report error if flag isn't clear
|
|
should_be_clear:
|
|
lda $4015
|
|
and #$40
|
|
bne error
|
|
rts
|
|
|
|
; Report error if flag isn't set
|
|
should_be_set:
|
|
lda $4015
|
|
and #$40
|
|
beq error
|
|
rts
|