1; At power, A,X,Y=0 P=$34 S=$FD 2; At reset, I flag set, S decreased by 3, no other change 3 4CUSTOM_RESET=1 5.include "shell.inc" 6.include "run_at_reset.s" 7 8nv_res log,8 9 10reset: ; Save current registers and stack 11 php 12 sta log+0 13 stx log+1 14 sty log+2 15 pla 16 sta log+3 17 tsx 18 stx log+4 19 lda $112 20 sta log+5 21 lda $111 22 sta log+6 23 lda $110 24 sta log+7 25 26 jmp std_reset 27 28main: jsr num_resets 29 beq power 30 31 set_test 3,"Reset should set I flag, subtract 3 from S, nothing more" 32 jsr print_log 33 check_crc $717C409F 34 35 set_test 4,"Reset shouldn't write to stack" 36 lda log+5 37 cmp #$FB 38 jne test_failed 39 lda log+6 40 cmp #$9A 41 jne test_failed 42 lda log+7 43 cmp #$BC 44 jne test_failed 45 46 jmp tests_passed 47 48power: set_test 2,"At power A,X,Y=0 P=$34 S=$FD" 49 jsr print_log 50 check_crc $EAE4AAFA 51 52 jsr prompt_to_reset 53 54 ; Clear interrupt sources 55 setb SNDCHN,0 56 setb SNDMODE,$C0 57 setb PPUCTRL,0 58 bit SNDCHN 59 60 ; Set initial stack bytes and registers 61 setb $111,$9A 62 setb $110,$BC 63 ldx #$12 64 txs 65 lda #$FB 66 pha 67 lda #$34 68 ldx #$56 69 ldy #$78 70 plp 71 72 jmp wait_reset 73 74print_log: 75 print_str "A X Y P S",newline 76 ldx #0 77: lda log,x 78 jsr print_a 79 inx 80 cpx #5 81 bne :- 82 83 jsr print_newline 84 85 rts 86