OSDN Git Service

51f8ce426f186db966f83cf414309bb25f490896
[motonesfpga/motonesfpga.git] / tools / test-image / sample1.asm
1 .setcpu         "6502"\r
2 .autoimport     on\r
3 \r
4 ; iNES header\r
5 .segment "HEADER"\r
6         .byte   $4E, $45, $53, $1A      ; "NES" Header\r
7         .byte   $02                     ; PRG-BANKS\r
8         .byte   $01                     ; CHR-BANKS\r
9         .byte   $01                     ; Vetrical Mirror\r
10         .byte   $00                     ; \r
11         .byte   $00, $00, $00, $00      ; \r
12         .byte   $00, $00, $00, $00      ; \r
13 \r
14 .segment "STARTUP"\r
15 .proc   Reset\r
16 ; interrupt off, initialize sp.\r
17         sei\r
18         ldx     #$ff\r
19         txs\r
20 \r
21     ;ppu register initialize.\r
22         lda     #$00\r
23         sta     $2000\r
24         sta     $2001\r
25 \r
26         lda     #$3f\r
27         sta     $2006\r
28         lda     #$00\r
29         sta     $2006\r
30         ldx     #$00\r
31         ldy     #$10\r
32 \r
33     ;;load palette.\r
34 copypal:\r
35         lda     palettes, x\r
36         sta     $2007\r
37         inx\r
38         dey\r
39         bne     copypal\r
40 \r
41         lda     #$21\r
42         sta     $2006\r
43         lda     #$c9\r
44         sta     $2006\r
45         ldx     #$00\r
46         ldy     #$0d\r
47 \r
48     ;;load name table.\r
49 copymap:\r
50         lda     string, x\r
51         sta     $2007\r
52         inx\r
53         dey\r
54         bne     copymap\r
55 \r
56         lda     #$00\r
57         sta     $2005\r
58         sta     $2005\r
59 \r
60     ;;show test msg.\r
61         lda     #$08\r
62         sta     $2000\r
63         lda     #$1e\r
64         sta     $2001\r
65 \r
66     jmp boundary_1\r
67     ;;fill dummy data to test page boundary instruction.\r
68     .byte      $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
69     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
70     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
71     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
72     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
73     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
74     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
75     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
76     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
77     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
78 \r
79     ;;;single byte instruction page boundary test.\r
80 boundary_1:\r
81     lda #$01\r
82     ror\r
83     ror\r
84     ror\r
85     ror\r
86     ror\r
87     ror\r
88     ror\r
89     ror\r
90     ror\r
91     ror\r
92     ror\r
93     ror\r
94     ror\r
95 ;;this is pch increment at T1 cycle. \r
96 ;;;@80ff\r
97     rol\r
98     lsr\r
99 \r
100     jmp boundary_2_1\r
101 \r
102     .byte      $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
103     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
104     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
105     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
106     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
107     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
108     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
109     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
110     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
111     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
112     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
113     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
114     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
115     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
116     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
117 \r
118 boundary_2_1:\r
119     ;;;two byte instruction page boundary test.\r
120         lda     #$01\r
121         lda     #$01\r
122         lda     #$01\r
123         lda     #$01\r
124         lda     #$01\r
125         lda     #$01\r
126 ;;this is pch increment at T1 cycle. \r
127     ;;;@81ff\r
128         ldx     #$08\r
129 \r
130 \r
131     jmp boundary_2_2\r
132 \r
133     .byte      $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
134     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
135     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
136     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
137     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
138     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
139     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
140     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
141     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
142     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
143     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
144     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
145     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
146     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
147     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
148 \r
149 boundary_2_2:\r
150     ;;;two byte instruction page boundary test.\r
151         lda     #$01\r
152         lda     #$01\r
153         lda     #$01\r
154         lda     #$01\r
155         lda     #$01\r
156     ror\r
157 ;;this is pch increment at next T0 cycle. \r
158     ;;;@82fe\r
159         ldx     #$0a\r
160 \r
161     jmp boundary_2_3\r
162 \r
163     .byte      $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
164     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
165     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
166     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
167     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
168     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
169     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
170     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
171     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
172     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
173     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
174     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
175     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
176     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
177     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
178 \r
179 boundary_2_3:\r
180     ;;;two byte instruction w/ 3 exec cycle page boundary test.\r
181         lda     #$01\r
182         lda     #$01\r
183         lda     #$01\r
184 \r
185         ror\r
186         lda     #$01\r
187         lda     #$de\r
188         sta     $13\r
189 \r
190 \r
191 ;;this is pch increment at T1 cycle. \r
192     ;;;@83ff\r
193         ldy $09, x\r
194 \r
195 \r
196     jmp boundary_2_4\r
197 \r
198     .byte      $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
199     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
200     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
201     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
202     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
203     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
204     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
205     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
206     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
207     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
208     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
209     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
210     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
211     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
212     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
213 \r
214 boundary_2_4:\r
215     ;;;two byte instruction w/ 3 exec cycle page boundary test.\r
216         lda     #$01\r
217         lda     #$01\r
218         ldy     #$05\r
219 \r
220         ror\r
221         lda     #$01\r
222         lda     #$de\r
223 ;;this is pch increment at T2 cycle. \r
224     ;;;@84fe\r
225         sta     $13\r
226 \r
227 \r
228     jmp boundary_3_1\r
229 \r
230     .byte      $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
231     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
232     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
233     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
234     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
235     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
236     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
237     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
238     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
239     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
240     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
241     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
242     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
243     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
244     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
245 \r
246 boundary_3_1:\r
247     ;;;three byte instruction w/ page boundary test.\r
248         lda     #$01\r
249         lda     #$01\r
250         ldy     #$05\r
251 \r
252         ror\r
253         lda     #$01\r
254         lda     #$dd\r
255 ;;this is pch increment at T3 cycle. \r
256     ;;;@85fd\r
257         sta     $06fc, x\r
258 \r
259     jmp boundary_3_2\r
260 \r
261     .byte      $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
262     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
263     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
264     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
265     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
266     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
267     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
268     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
269     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
270     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
271     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
272     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
273     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
274     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
275     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
276 \r
277 boundary_3_2:\r
278     ;;;three byte instruction w/ page boundary test.\r
279         lda     #$01\r
280         lda     #$01\r
281         lda     #$01\r
282         ldy     #$05\r
283 \r
284         lda     #$01\r
285         lda     #$dd\r
286 ;;this is pch increment at T2 cycle. \r
287     ;;;@86fe\r
288         sta     $06fc, x\r
289 \r
290     jmp boundary_3_3\r
291 \r
292     .byte      $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
293     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
294     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
295     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
296     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
297     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
298     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
299     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
300     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
301     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
302     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
303     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
304     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
305     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
306     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
307 \r
308 boundary_3_3:\r
309     ;;;three byte instruction w/ page boundary test.\r
310         lda     #$01\r
311         lda     #$01\r
312         lda     #$01\r
313         ldy     #$05\r
314 \r
315         ldy     #$08\r
316         lda     #$dd\r
317 ;;this is pch increment at T1 cycle. \r
318     ;;;@87ff\r
319         sta     $06fc, x\r
320 \r
321     jmp boundary_3_4\r
322 \r
323     .byte      $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
324     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
325     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
326     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
327     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
328     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
329     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
330     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
331     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
332     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
333     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
334     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
335     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
336     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
337     .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
338 \r
339 boundary_3_4:\r
340     ;;;three byte instruction w/ page boundary test.\r
341         lda     #$01\r
342         lda     #$01\r
343     ror\r
344 \r
345         ldy     #$08\r
346         lda     #$dd\r
347 ;;this is pch increment at T0 cycle. \r
348     ;;;@88fd\r
349         sta     $06fc, x\r
350 \r
351     nop\r
352     nop\r
353     nop\r
354 \r
355     ;;;instruction coverage test....\r
356     ;;adc abs, y\r
357     ldy #$10\r
358     ldx #$fa\r
359     stx $0790\r
360     lda #$b0\r
361     ;;fa+b0=aa\r
362     adc $0780, y\r
363 \r
364     clc\r
365     ldy #$ab\r
366     ldx #$fa\r
367     stx $082b\r
368     lda #$dd\r
369     ;;fa+dd=d7\r
370     adc $0780, y\r
371 \r
372     ;;bit zp\r
373     ldx #$15\r
374     stx $2b\r
375     bit $2b\r
376     lda #$8a\r
377     bit $2b\r
378 \r
379     ;;sbc imm\r
380     ;;8a-5c=2e\r
381     sbc #$5c\r
382     ;;2e-3d=f1\r
383     sbc #$3d\r
384     ;;f1-e5=0c\r
385     sbc #$e5\r
386 \r
387     ;;cli/clv\r
388     cli\r
389     ldx #$c0\r
390     stx $2b\r
391     bit $2b\r
392     clv\r
393 \r
394     ;;adc zp, x/abs, x/indir, y\r
395     lda #$11\r
396     ldx #$e4\r
397     sta $a4\r
398     ;11+81=92\r
399     lda #$81\r
400     adc $c0, x\r
401 \r
402     stx $0734\r
403     ;93+e4=177\r
404     adc $0650, x\r
405 \r
406     ldx #$c9\r
407     stx $07e8\r
408     lda #$34\r
409     sta $07\r
410     lda #$07\r
411     sta $08\r
412     ldy #$b4\r
413     ;c9+07=d0\r
414     adc ($07), y\r
415 \r
416     ;;and zp, x/abs/abs, x/indir, y\r
417     lda #$f5\r
418     ldx #$e4\r
419     sta $a4\r
420     ;f5&5e=54\r
421     lda #$5e\r
422     and $c0, x\r
423 \r
424     stx $0734\r
425     ;e4&54=44\r
426     and $0650, x\r
427 \r
428     ldx #$c9\r
429     stx $07e8\r
430     lda #$34\r
431     sta $07\r
432     lda #$07\r
433     sta $08\r
434     ldy #$b4\r
435     ;no page crossing\r
436     ;c9&07=01\r
437     and ($07), y\r
438 \r
439     ldx #$c9\r
440     stx $0825\r
441     lda #$34\r
442     sta $07\r
443     lda #$07\r
444     sta $08\r
445     ldy #$f1\r
446     ;page crossing\r
447     ;c9&07=01\r
448     and ($07), y\r
449 \r
450     ;;infinite loop.\r
451 mainloop:\r
452         jmp     mainloop\r
453 .endproc\r
454 \r
455 \r
456 nmi_test:\r
457     ;;;;test...\r
458     STY   $0720\r
459     LDY   #$80\r
460     STY   $0721\r
461     ASL   \r
462     ASL   \r
463     ASL   \r
464     ASL   \r
465     STA   $06a0\r
466     DEC   $0730\r
467     DEC   $0731\r
468     DEC   $0732\r
469     LDA   #$0b\r
470     STA   $071e\r
471     ;;JSR   $9c22\r
472     LDA   $0750\r
473     ;;JSR   $9c09\r
474     AND   #$60\r
475     ASL   \r
476     ROL   \r
477     ROL   \r
478     ROL   \r
479     STA   $074e\r
480     ;;RTS   \r
481     TAY   \r
482     LDA   $0750\r
483     AND   #$1f\r
484     STA   $074f\r
485     LDA   $9ce0, y\r
486     CLC   \r
487     ADC   $074f\r
488     TAY   \r
489     LDA   $9ce4, y\r
490     STA   $e9\r
491     LDA   $9d06, y\r
492     STA   $ea\r
493     LDY   $074e\r
494     LDA   $9d28, y\r
495     CLC   \r
496     ADC   $074f\r
497     TAY   \r
498     LDA   $9d2c, y\r
499     STA   $e7\r
500     LDA   $9d4e, y\r
501     STA   $e8\r
502     LDY   #$00\r
503     LDA   ($e7), y\r
504     PHA   \r
505     AND   #$07\r
506     CMP   #$04\r
507     ;;BCC   +5\r
508     STA   $0741\r
509     PLA   \r
510     PHA   \r
511     AND   #$38\r
512     LSR   \r
513     LSR   \r
514     LSR   \r
515     STA   $0710\r
516     PLA   \r
517     AND   #$c0\r
518     CLC   \r
519     ROL   \r
520     ROL   \r
521     ROL   \r
522     STA   $0715\r
523     INY   \r
524     LDA   ($e7), y\r
525     PHA   \r
526     AND   #$0f\r
527     STA   $0727\r
528     PLA   \r
529     PHA   \r
530     AND   #$30\r
531     LSR   \r
532     LSR   \r
533     LSR   \r
534     LSR   \r
535     STA   $0742\r
536     PLA   \r
537     AND   #$c0\r
538     CLC   \r
539     ROL   \r
540     ROL   \r
541     ROL   \r
542     CMP   #$03\r
543     ;;BNE   5\r
544     STA   $0733\r
545     LDA   $e7\r
546     CLC   \r
547     ADC   #$02\r
548     STA   $e7\r
549     LDA   $e8\r
550     ADC   #$00\r
551     STA   $e8\r
552     ;;RTS   \r
553     LDA   $076a\r
554     ;;BNE   16\r
555     LDA   $075f\r
556     CMP   #$04\r
557     ;BCC   12\r
558     LDA   $075b\r
559     ;;BEQ   5\r
560     LDA   #$80\r
561     STA   $fb\r
562     LDA   #$01\r
563     STA   $0774\r
564     INC   $0772\r
565     ;;RTS   \r
566     LDA   $2002\r
567     ;PLA   \r
568     ORA   #$80\r
569     STA   $2000\r
570     rti\r
571 \r
572 palettes:\r
573         .byte   $0f, $00, $10, $20\r
574         .byte   $0f, $06, $16, $26\r
575         .byte   $0f, $08, $18, $28\r
576         .byte   $0f, $0a, $1a, $2a\r
577 \r
578 string:\r
579         .byte   "test2!"\r
580 \r
581 .segment "VECINFO"\r
582         .word   nmi_test\r
583         .word   Reset\r
584         .word   $0000\r
585 \r
586 ; character rom file.\r
587 .segment "CHARS"\r
588         .incbin "character.chr"\r