OSDN Git Service

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