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