OSDN Git Service

eeb0f8ffdfbe7f956a08af100fc9fe5a927bda92
[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 \r
31     ;;dma test data.\r
32     ldy #$00\r
33     ldx #$41\r
34     stx $00\r
35     ldx #$00\r
36 dma_set:\r
37     ;;y pos\r
38     txa\r
39     sta $0200, y\r
40     iny\r
41     ;;tile index\r
42     lda $00\r
43     cmp #$5b\r
44     bne inc_tile\r
45     lda #$41\r
46     sta $00\r
47 inc_tile:\r
48     inc $00\r
49     sta $0200, y\r
50     iny\r
51     ;;attribute\r
52     lda #$01\r
53     sta $0200, y\r
54     iny\r
55     ;;x pos\r
56     txa\r
57     adc #$03\r
58     tax\r
59     rol\r
60     sta $0200, y\r
61     iny\r
62     bne dma_set\r
63 \r
64     ;;dma start.\r
65     lda #$02\r
66     sta $4014\r
67 \r
68     ;;load palette.\r
69         ldx     #$00\r
70         ldy     #$20\r
71 copypal:\r
72         lda     palettes, x\r
73         sta     $2007\r
74         inx\r
75         dey\r
76         bne     copypal\r
77 \r
78         lda     #$20\r
79         sta     $2006\r
80         lda     #$ab\r
81         sta     $2006\r
82         ldx     #$00\r
83         ldy     #$0d\r
84 \r
85     ;;load name table.\r
86 copymap:\r
87         lda     string, x\r
88         sta     $2007\r
89         inx\r
90         dey\r
91         bne     copymap\r
92 \r
93         lda     #$00\r
94         sta     $2005\r
95         sta     $2005\r
96 \r
97     ;;show test msg.\r
98         lda     #$00\r
99         sta     $2000\r
100         lda     #$1e\r
101         sta     $2001\r
102 \r
103 ;;    jmp boundary_1\r
104 ;;    ;;fill dummy data to test page boundary instruction.\r
105 ;;    .byte      $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 ;;\r
116 ;;    ;;;single byte instruction page boundary test.\r
117 ;;boundary_1:\r
118 ;;    lda #$01\r
119 ;;    ror\r
120 ;;    ror\r
121 ;;    ror\r
122 ;;    ror\r
123 ;;    ror\r
124 ;;    ror\r
125 ;;    ror\r
126 ;;    ror\r
127 ;;    ror\r
128 ;;    ror\r
129 ;;    ror\r
130 ;;    ror\r
131 ;;    ror\r
132 ;;;;this is pch increment at T1 cycle. \r
133 ;;;;;@80ff\r
134 ;;    rol\r
135 ;;    lsr\r
136 ;;\r
137 ;;    jmp boundary_2_1\r
138 ;;\r
139 ;;    .byte      $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 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
149 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
150 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
151 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
152 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
153 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
154 ;;\r
155 ;;boundary_2_1:\r
156 ;;    ;;;two byte instruction page boundary test.\r
157 ;;      lda     #$01\r
158 ;;      lda     #$01\r
159 ;;      lda     #$01\r
160 ;;      lda     #$01\r
161 ;;      lda     #$01\r
162 ;;      lda     #$01\r
163 ;;;;this is pch increment at T1 cycle. \r
164 ;;    ;;;@81ff\r
165 ;;      ldx     #$08\r
166 ;;\r
167 ;;\r
168 ;;    jmp boundary_2_2\r
169 ;;\r
170 ;;    .byte      $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 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
179 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
180 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
181 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
182 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
183 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
184 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
185 ;;\r
186 ;;boundary_2_2:\r
187 ;;    ;;;two byte instruction page boundary test.\r
188 ;;      lda     #$01\r
189 ;;      lda     #$01\r
190 ;;      lda     #$01\r
191 ;;      lda     #$01\r
192 ;;      lda     #$01\r
193 ;;    ror\r
194 ;;;;this is pch increment at next T0 cycle. \r
195 ;;    ;;;@82fe\r
196 ;;      ldx     #$0a\r
197 ;;\r
198 ;;    jmp boundary_2_3\r
199 ;;\r
200 ;;    .byte      $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 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
214 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
215 ;;\r
216 ;;boundary_2_3:\r
217 ;;    ;;;two byte instruction w/ 3 exec cycle page boundary test.\r
218 ;;      lda     #$01\r
219 ;;      lda     #$01\r
220 ;;      lda     #$01\r
221 ;;\r
222 ;;      ror\r
223 ;;      lda     #$01\r
224 ;;      lda     #$de\r
225 ;;      sta     $13\r
226 ;;\r
227 ;;\r
228 ;;;;this is pch increment at T1 cycle. \r
229 ;;    ;;;@83ff\r
230 ;;      ldy $09, x\r
231 ;;\r
232 ;;\r
233 ;;    jmp boundary_2_4\r
234 ;;\r
235 ;;    .byte      $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 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
246 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
247 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
248 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
249 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
250 ;;\r
251 ;;boundary_2_4:\r
252 ;;    ;;;two byte instruction w/ 3 exec cycle page boundary test.\r
253 ;;      lda     #$01\r
254 ;;      lda     #$01\r
255 ;;      ldy     #$05\r
256 ;;\r
257 ;;      ror\r
258 ;;      lda     #$01\r
259 ;;      lda     #$de\r
260 ;;;;this is pch increment at T2 cycle. \r
261 ;;    ;;;@84fe\r
262 ;;      sta     $13\r
263 ;;\r
264 ;;\r
265 ;;    jmp boundary_3_1\r
266 ;;\r
267 ;;    .byte      $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 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
277 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
278 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
279 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
280 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
281 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
282 ;;\r
283 ;;boundary_3_1:\r
284 ;;    ;;;three byte instruction w/ page boundary test.\r
285 ;;      lda     #$01\r
286 ;;      lda     #$01\r
287 ;;      ldy     #$05\r
288 ;;\r
289 ;;      ror\r
290 ;;      lda     #$01\r
291 ;;      lda     #$dd\r
292 ;;;;this is pch increment at T3 cycle. \r
293 ;;    ;;;@85fd\r
294 ;;      sta     $06fc, x\r
295 ;;\r
296 ;;    jmp boundary_3_2\r
297 ;;\r
298 ;;    .byte      $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 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
308 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
309 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
310 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
311 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
312 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
313 ;;\r
314 ;;boundary_3_2:\r
315 ;;    ;;;three byte instruction w/ page boundary test.\r
316 ;;      lda     #$01\r
317 ;;      lda     #$01\r
318 ;;      lda     #$01\r
319 ;;      ldy     #$05\r
320 ;;\r
321 ;;      lda     #$01\r
322 ;;      lda     #$dd\r
323 ;;;;this is pch increment at T2 cycle. \r
324 ;;    ;;;@86fe\r
325 ;;      sta     $06fc, x\r
326 ;;\r
327 ;;    jmp boundary_3_3\r
328 ;;\r
329 ;;    .byte      $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 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
339 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
340 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
341 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
342 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
343 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
344 ;;\r
345 ;;boundary_3_3:\r
346 ;;    ;;;three byte instruction w/ page boundary test.\r
347 ;;      lda     #$01\r
348 ;;      lda     #$01\r
349 ;;      lda     #$01\r
350 ;;      ldy     #$05\r
351 ;;\r
352 ;;      ldy     #$08\r
353 ;;      lda     #$dd\r
354 ;;;;this is pch increment at T1 cycle. \r
355 ;;    ;;;@87ff\r
356 ;;      sta     $06fc, x\r
357 ;;\r
358 ;;    jmp boundary_3_4\r
359 ;;\r
360 ;;    .byte      $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
361 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
362 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
363 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
364 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
365 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
366 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
367 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
368 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
369 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
370 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
371 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
372 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
373 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
374 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
375 ;;\r
376 ;;boundary_3_4:\r
377 ;;    ;;;three byte instruction w/ page boundary test.\r
378 ;;      lda     #$01\r
379 ;;      lda     #$01\r
380 ;;    ror\r
381 ;;\r
382 ;;      ldy     #$08\r
383 ;;      lda     #$dd\r
384 ;;;;this is pch increment at T0 cycle. \r
385 ;;    ;;;@88fd\r
386 ;;      sta     $06fc, x\r
387 ;;\r
388 ;;    nop\r
389 ;;    nop\r
390 ;;    nop\r
391 ;;\r
392 ;;    ;;;instruction coverage test....\r
393 ;;    ;;adc abs, y\r
394 ;;    ldy #$10\r
395 ;;    ldx #$fa\r
396 ;;    stx $0790\r
397 ;;    lda #$b0\r
398 ;;    ;;fa+b0=aa\r
399 ;;    adc $0780, y\r
400 ;;\r
401 ;;    clc\r
402 ;;    ldy #$ab\r
403 ;;    ldx #$fa\r
404 ;;    stx $082b\r
405 ;;    lda #$dd\r
406 ;;    ;;fa+dd=d7\r
407 ;;    adc $0780, y\r
408 ;;\r
409 ;;    ;;bit zp\r
410 ;;    ldx #$15\r
411 ;;    stx $2b\r
412 ;;    bit $2b\r
413 ;;    lda #$8a\r
414 ;;    bit $2b\r
415 ;;\r
416 ;;    ;;sbc imm\r
417 ;;    ;;8a-5c=2e\r
418 ;;    sbc #$5c\r
419 ;;    ;;2e-3d=f1\r
420 ;;    sbc #$3d\r
421 ;;    ;;f1-e5=0c\r
422 ;;    sbc #$e5\r
423 ;;\r
424 ;;    ;;cli/clv\r
425 ;;    cli\r
426 ;;    ldx #$c0\r
427 ;;    stx $2b\r
428 ;;    bit $2b\r
429 ;;    clv\r
430 ;;\r
431 ;;    ;;adc zp, x/abs, x/indir, y\r
432 ;;    lda #$11\r
433 ;;    ldx #$e4\r
434 ;;    sta $a4\r
435 ;;    ;11+81=92\r
436 ;;    lda #$81\r
437 ;;    adc $c0, x\r
438 ;;\r
439 ;;    stx $0734\r
440 ;;    ;93+e4=177\r
441 ;;    adc $0650, x\r
442 ;;\r
443 ;;    ldx #$c9\r
444 ;;    stx $07e8\r
445 ;;    lda #$34\r
446 ;;    sta $07\r
447 ;;    lda #$07\r
448 ;;    sta $08\r
449 ;;    ldy #$b4\r
450 ;;    ;c9+07=d0\r
451 ;;    adc ($07), y\r
452 ;;\r
453 ;;    ;;and zp, x/abs/abs, x/indir, y\r
454 ;;    lda #$f5\r
455 ;;    ldx #$e4\r
456 ;;    sta $a4\r
457 ;;    ;f5&5e=54\r
458 ;;    lda #$5e\r
459 ;;    and $c0, x\r
460 ;;\r
461 ;;    stx $0734\r
462 ;;    ;e4&54=44\r
463 ;;    and $0650, x\r
464 ;;\r
465 ;;    ldx #$c9\r
466 ;;    stx $07e8\r
467 ;;    lda #$34\r
468 ;;    sta $07\r
469 ;;    lda #$07\r
470 ;;    sta $08\r
471 ;;    ldy #$b4\r
472 ;;    ;no page crossing\r
473 ;;    ;c9&07=01\r
474 ;;    and ($07), y\r
475 ;;\r
476 ;;    ldx #$c9\r
477 ;;    stx $0825\r
478 ;;    lda #$34\r
479 ;;    sta $07\r
480 ;;    lda #$07\r
481 ;;    sta $08\r
482 ;;    ldy #$f1\r
483 ;;    ;page crossing\r
484 ;;    ;c9&07=01\r
485 ;;    and ($07), y\r
486 ;;\r
487 ;;    ;;cmp zp, x/abs/abs, x/indir, y\r
488 ;;    lda #$de\r
489 ;;    ldx #$e4\r
490 ;;    sta $a4\r
491 ;;    ;c5-de=-19 > (e7)\r
492 ;;    lda #$c5\r
493 ;;    cmp $c0, x\r
494 ;;\r
495 ;;    sec\r
496 ;;    lda #$75\r
497 ;;    stx $0734\r
498 ;;    ;75-e4=-6f > 91\r
499 ;;    cmp $0650, x\r
500 ;;\r
501 ;;    ldx #$c9\r
502 ;;    stx $0825\r
503 ;;    lda #$34\r
504 ;;    sta $07\r
505 ;;    lda #$07\r
506 ;;    sta $08\r
507 ;;    ldy #$f1\r
508 ;;    lda #$c9\r
509 ;;    ;page crossing\r
510 ;;    ;c9-c9=0\r
511 ;;    cmp ($07), y\r
512 ;;\r
513 ;;    ;;rol zp/zp, x/abs/abs, x\r
514 ;;    lda #$de\r
515 ;;    ldx #$e4\r
516 ;;    sta $a4\r
517 ;;    ;de<1 =bc w/ carry\r
518 ;;    clc\r
519 ;;    rol $c0, x\r
520 ;;    ;bc<1 =78  w/ carry\r
521 ;;    rol $a4\r
522 ;;\r
523 ;;    ldx #$64\r
524 ;;    stx $0722\r
525 ;;    ;64<1 = c8 w/o carry\r
526 ;;    rol $06be, x\r
527 ;;\r
528 ;;    ldx #$80\r
529 ;;    stx $0734\r
530 ;;    ;80<1 = 00 w/ carry.\r
531 ;;    rol $0734\r
532 ;;\r
533 ;;    ;;cpx abs\r
534 ;;    ;;cpy zp/abs\r
535 ;;    lda #$de\r
536 ;;    sta $03a4\r
537 ;;    ;c5-de=-19 > (e7)\r
538 ;;    ldx #$c5\r
539 ;;    cpx $03a4\r
540 ;;\r
541 ;;    sec\r
542 ;;    ldy #$75\r
543 ;;    ldx #$e4\r
544 ;;    stx $34\r
545 ;;    ;75-e4=-6f > 91\r
546 ;;    cpy $34\r
547 ;;\r
548 ;;    ldx #$c9\r
549 ;;    stx $0825\r
550 ;;    ldy #$c9\r
551 ;;    ;c9-c9=0\r
552 ;;    cpy $0825\r
553 ;;\r
554 ;;    ;;lsr zp/zp, x/abs/abs, x\r
555 ;;    lda #$de\r
556 ;;    ldx #$e4\r
557 ;;    sta $a4\r
558 ;;    ;de>1 =6f w/o carry\r
559 ;;    clc\r
560 ;;    lsr $c0, x\r
561 ;;    ;6f>1 =37  w/ carry\r
562 ;;    lsr $a4\r
563 ;;\r
564 ;;    ldx #$64\r
565 ;;    stx $0722\r
566 ;;    ;64>1 = 32 w/o carry\r
567 ;;    lsr $06be, x\r
568 ;;\r
569 ;;    ldx #$01\r
570 ;;    stx $0734\r
571 ;;    ;01>1 = 00 w/ carry.\r
572 ;;    lsr $0734\r
573 ;;\r
574 ;;    ;;ldy abs, x\r
575 ;;    ;;ldx zp, y\r
576 ;;    ldx #$fa\r
577 ;;    stx $0820\r
578 ;;    ;;page cross\r
579 ;;    ldy $0726, x\r
580 ;;\r
581 ;;    ldx #$10\r
582 ;;    stx $0820\r
583 ;;    ;no page cross\r
584 ;;    ldy $0810, x\r
585 ;;\r
586 ;;    ldy #$10\r
587 ;;    sty $e0\r
588 ;;    ldx #$55\r
589 ;;    ldx $d0, y\r
590 ;;\r
591 ;;    ;;dec zp, x/abs, x\r
592 ;;    ;;inc zp, x/abs, x\r
593 ;;    lda #$00\r
594 ;;    ldx #$e4\r
595 ;;    sta $88\r
596 ;;    ldy #$00\r
597 ;;    dec $a4, x\r
598 ;;\r
599 ;;    ldx #$64\r
600 ;;    stx $0722\r
601 ;;    dec $06be, x\r
602 ;;\r
603 ;;    lda #$fe\r
604 ;;    ldx #$e4\r
605 ;;    sta $88\r
606 ;;    inc $a4, x\r
607 ;;    inc $a4, x\r
608 ;;    inc $a4, x\r
609 ;;\r
610 ;;    ldx #$64\r
611 ;;    stx $0722\r
612 ;;    inc $06be, x\r
613 ;;\r
614 ;;    ;;ror zp/zp,x/abs\r
615 ;;    lda #$02\r
616 ;;    ldx #$e4\r
617 ;;    sta $88\r
618 ;;    ror $a4, x\r
619 ;;    ror $a4, x\r
620 ;;    ror $a4, x\r
621 ;;\r
622 ;;    ldx #$64\r
623 ;;    stx $0722\r
624 ;;    ror $0722\r
625 ;;\r
626 ;;    ;;asl zp/zp,x/abs/abs,x\r
627 ;;    lda #$40\r
628 ;;    ldx #$e4\r
629 ;;    sta $88\r
630 ;;    asl $88\r
631 ;;    asl $a4, x\r
632 ;;    asl $a4, x\r
633 ;;\r
634 ;;    ldx #$64\r
635 ;;    stx $0722\r
636 ;;    asl $06be,x\r
637 ;;\r
638 ;;    ;;sta zp,x\r
639 ;;    ;;stx zp,y\r
640 ;;    ;;sty zp,x\r
641 ;;    lda #$40\r
642 ;;    ldx #$e4\r
643 ;;    ldy #$c5\r
644 ;;    sta $a4, x\r
645 ;;    stx $a4, y\r
646 ;;    sty $a4, x\r
647 ;;\r
648 ;;    ;;branch page cross test.\r
649 ;;    jmp bl_test0\r
650 ;;\r
651 ;;bl_test0:\r
652 ;;    ldx #5\r
653 ;;bl_test1:\r
654 ;;    dex\r
655 ;;    ;;forward branch\r
656 ;;    bpl bl_test2\r
657 ;;\r
658 ;;    jmp bl_test2\r
659 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
660 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
661 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
662 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
663 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
664 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
665 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
666 ;;\r
667 ;;bl_test2:\r
668 ;;    dex\r
669 ;;    ;;backward branch\r
670 ;;    bpl bl_test1\r
671 ;;\r
672 ;;    ;;test2\r
673 ;;    ldx #5\r
674 ;;bl_test3:\r
675 ;;    dex\r
676 ;;    bpl bl_test4\r
677 ;;\r
678 ;;    jmp bl_test4\r
679 ;;\r
680 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
681 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
682 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
683 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
684 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
685 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
686 ;;    .byte $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f\r
687 ;;\r
688 ;;bl_test4:\r
689 ;;    dex\r
690 ;;    bpl bl_test3\r
691 ;;\r
692 ;;    ;;ora zp, x/abs, x/indir, y\r
693 ;;    lda #$de\r
694 ;;    ldx #$e4\r
695 ;;    sta $a4\r
696 ;;    ;c5|de=df\r
697 ;;    lda #$c5\r
698 ;;    ora $c0, x\r
699 ;;\r
700 ;;    lda #$75\r
701 ;;    stx $0734\r
702 ;;    ;75|e4=f5\r
703 ;;    ora $0650, x\r
704 ;;\r
705 ;;    ldx #$c9\r
706 ;;    stx $0825\r
707 ;;    lda #$34\r
708 ;;    sta $07\r
709 ;;    lda #$07\r
710 ;;    sta $08\r
711 ;;    ldy #$f1\r
712 ;;    ;page crossing\r
713 ;;    ;07|c9=cf\r
714 ;;    ora ($07), y\r
715 ;;\r
716 ;;    ;;php/plp test\r
717 ;;    sec\r
718 ;;    sei\r
719 ;;    php\r
720 ;;\r
721 ;;    clc\r
722 ;;    cli\r
723 ;;    plp\r
724 ;;\r
725 ;;    ;;eor zp, x/abs, x/indir, y\r
726 ;;    lda #$de\r
727 ;;    ldx #$e4\r
728 ;;    sta $a4\r
729 ;;    ;c5^de=1b\r
730 ;;    lda #$c5\r
731 ;;    eor $c0, x\r
732 ;;\r
733 ;;    lda #$75\r
734 ;;    stx $0734\r
735 ;;    ;75^e4=91\r
736 ;;    eor $0650, x\r
737 ;;\r
738 ;;    ldx #$07\r
739 ;;    stx $0825\r
740 ;;    lda #$34\r
741 ;;    sta $07\r
742 ;;    lda #$07\r
743 ;;    sta $08\r
744 ;;    ldy #$f1\r
745 ;;    ;page crossing\r
746 ;;    ;07^07=00\r
747 ;;    eor ($07), y\r
748 ;;\r
749 ;;    ;;sbc zp, x/abs, x/indir, y\r
750 ;;    lda #$de\r
751 ;;    ldx #$e4\r
752 ;;    sta $a4\r
753 ;;    ;c5-de=-19 > e7\r
754 ;;    lda #$c5\r
755 ;;    sbc $c0, x\r
756 ;;\r
757 ;;    lda #$75\r
758 ;;    stx $0734\r
759 ;;    ;75-e4=-6f > 91\r
760 ;;    sbc $0650, x\r
761 ;;\r
762 ;;    ldx #$07\r
763 ;;    stx $07ef\r
764 ;;    lda #$34\r
765 ;;    sta $07\r
766 ;;    lda #$07\r
767 ;;    sta $08\r
768 ;;    ldy #$bb\r
769 ;;    ;07-07=00\r
770 ;;    sbc ($07), y\r
771 ;;\r
772 ;;    ;;bvs/bvc test\r
773 ;;    ;;-120=0x88\r
774 ;;    lda #$88\r
775 ;;bvs_test:\r
776 ;;    sbc #$10\r
777 ;;    bvs bvs_test\r
778 ;;    \r
779 ;;    lda #$5\r
780 ;;bvc_test:\r
781 ;;    sbc #$a\r
782 ;;    bvc bvc_test\r
783 ;;\r
784 ;;    ;;;;vram access test...\r
785 ;;      lda     #$00\r
786 ;;      sta     $2001       ;;disable bg\r
787 ;;\r
788 ;;    LDA   #$1e\r
789 ;;    STA   $2006\r
790 ;;    LDA   #$c0\r
791 ;;    STA   $2006       ;;;ppuaddr=1ec0\r
792 ;;    LDA   #$03\r
793 ;;    STA   $01\r
794 ;;    LDY   #$00\r
795 ;;    STY   $00\r
796 ;;    LDA   $2007       ;;;;from here acc broke...\r
797 ;;    LDA   $2007\r
798 \r
799     ;;show bg...\r
800         lda     #$1e\r
801         sta     $2001\r
802 \r
803     ;;;enable nmi\r
804         lda     #$80\r
805         sta     $2000\r
806 \r
807     ;;done...\r
808     ;;infinite loop.\r
809 mainloop:\r
810         jmp     mainloop\r
811 .endproc\r
812 \r
813 \r
814 nmi_test:\r
815     ;;;;test...\r
816     STY   $0720\r
817     LDY   #$80\r
818     STY   $0721\r
819     ASL   \r
820     ASL   \r
821     ASL   \r
822     ASL   \r
823     STA   $06a0\r
824     DEC   $0730\r
825     DEC   $0731\r
826     DEC   $0732\r
827     LDA   #$0b\r
828     STA   $071e\r
829     ;;JSR   $9c22\r
830     LDA   $0750\r
831     ;;JSR   $9c09\r
832     AND   #$60\r
833     ASL   \r
834     ROL   \r
835     ROL   \r
836     ROL   \r
837     STA   $074e\r
838     ;;RTS   \r
839     TAY   \r
840     LDA   $0750\r
841     AND   #$1f\r
842     STA   $074f\r
843     LDA   $9ce0, y\r
844     CLC   \r
845     ADC   $074f\r
846     TAY   \r
847     LDA   $9ce4, y\r
848     STA   $e9\r
849     LDA   $9d06, y\r
850     STA   $ea\r
851     LDY   $074e\r
852     LDA   $9d28, y\r
853     CLC   \r
854     ADC   $074f\r
855     TAY   \r
856     LDA   $9d2c, y\r
857     STA   $e7\r
858     LDA   $9d4e, y\r
859     STA   $e8\r
860     LDY   #$00\r
861     LDA   ($e7), y\r
862     PHA   \r
863     AND   #$07\r
864     CMP   #$04\r
865     ;;BCC   +5\r
866     STA   $0741\r
867     PLA   \r
868     PHA   \r
869     AND   #$38\r
870     LSR   \r
871     LSR   \r
872     LSR   \r
873     STA   $0710\r
874     PLA   \r
875     AND   #$c0\r
876     CLC   \r
877     ROL   \r
878     ROL   \r
879     ROL   \r
880     STA   $0715\r
881     INY   \r
882     LDA   ($e7), y\r
883     PHA   \r
884     AND   #$0f\r
885     STA   $0727\r
886     PLA   \r
887     PHA   \r
888     AND   #$30\r
889     LSR   \r
890     LSR   \r
891     LSR   \r
892     LSR   \r
893     STA   $0742\r
894     PLA   \r
895     AND   #$c0\r
896     CLC   \r
897     ROL   \r
898     ROL   \r
899     ROL   \r
900     CMP   #$03\r
901     ;;BNE   5\r
902     STA   $0733\r
903     LDA   $e7\r
904     CLC   \r
905     ADC   #$02\r
906     STA   $e7\r
907     LDA   $e8\r
908     ADC   #$00\r
909     STA   $e8\r
910     ;;RTS   \r
911     LDA   $076a\r
912     ;;BNE   16\r
913     LDA   $075f\r
914     CMP   #$04\r
915     ;BCC   12\r
916     LDA   $075b\r
917     ;;BEQ   5\r
918     LDA   #$80\r
919     STA   $fb\r
920     LDA   #$01\r
921     STA   $0774\r
922     INC   $0772\r
923     ;;RTS   \r
924     LDA   $2002\r
925     ;PLA   \r
926     ORA   #$80\r
927     STA   $2000\r
928     rti\r
929 \r
930 palettes:\r
931         .byte   $0f, $00, $10, $20\r
932         .byte   $0f, $06, $16, $26\r
933         .byte   $0f, $08, $18, $28\r
934         .byte   $0f, $0a, $1a, $2a\r
935         .byte   $0f, $00, $10, $20\r
936         .byte   $0f, $06, $16, $26\r
937         .byte   $0f, $08, $18, $28\r
938         .byte   $0f, $0a, $1a, $2a\r
939 \r
940 string:\r
941         .byte   "test2!"\r
942 \r
943 .segment "VECINFO"\r
944         .word   nmi_test\r
945         .word   Reset\r
946         .word   $0000\r
947 \r
948 ; character rom file.\r
949 .segment "CHARS"\r
950         .incbin "character.chr"\r