1 2 3 4 5 seg code 6 org 0x1000 7 8reset: 9 10; test all of the inherent instructions 11; 12 aba ; 1B 13 abx ; 3A 14 aby ; 18 3A 15 asla ; 48 16 aslb ; 58 17 asld ; 05 18 asra ; 47 19 asrb ; 57 20 cba ; 11 21 clc ; 0C 22 cli ; 0E 23 clra ; 4F 24 clrb ; 5F 25 clv ; 0A 26 coma ; 43 27 comb ; 53 28 daa ; 19 29 deca ; 4A 30 decb ; 5A 31 des ; 34 32 dex ; 09 33 dey ; 18 09 34 fdiv ; 03 35 idiv ; 02 36 inca ; 4C 37 incb ; 5C 38 ins ; 31 39 inx ; 08 40 iny ; 18 08 41 lsla ; 48 42 lslb ; 58 43 lsld ; 05 44 lsra ; 44 45 lsrb ; 54 46 lsrd ; 04 47 mul ; 3D 48 nega ; 40 49 negb ; 50 50 nop ; 01 51 psha ; 36 52 pshb ; 37 53 pshx ; 3C 54 pshy ; 18 3C 55 pula ; 32 56 pulb ; 33 57 pulx ; 38 58 puly ; 18 38 59 rola ; 49 60 rolb ; 59 61 rora ; 46 62 rorb ; 56 63 rti ; 3B 64 rts ; 39 65 sba ; 10 66 sec ; 0D 67 sei ; 0F 68 sev ; 0B 69 stop ; CF 70 swi ; 3F 71 tab ; 16 72 tap ; 06 73 tba ; 17 74 test ; 00 75 tpa ; 07 76 tsta ; 4D 77 tstb ; 5D 78 tsx ; 30 79 tsy ; 18 30 80 txs ; 35 81 tys ; 18 35 82 wai ; 3E 83 xgdx ; 8F 84 xgdy ; 18 8F 85 86; test the 8 bit immediate instructions 87 88 adca #0xab ; 89 ii 89 adcb #0xab ; C9 ii 90 adda #0xab ; 8B ii 91 addb #0xab ; CB ii 92 anda #0xab ; 84 ii 93 andb #0xab ; C4 ii 94 bita #0xab ; 85 ii 95 bitb #0xab ; C5 ii 96 cmpa #0xab ; 81 ii 97 cmpb #0xab ; C1 ii 98 eora #0xab ; 88 ii 99 eorb #0xab ; C8 ii 100 ldaa #0xab ; 86 ii 101 ldab #0xab ; C6 ii 102 oraa #0xab ; 8A ii 103 orab #0xab ; CA ii 104 sbca #0xab ; 82 ii 105 sbcb #0xab ; C2 ii 106 suba #0xab ; 80 ii 107 subb #0xab ; C0 ii 108 109 110 111 112; test the 16 bit immediate instructions 113 114 addd #0xabcd ; C3 jj kk 115 cpd #0xabcd ; 1A 83 jj kk 116 cpx #0xabcd ; 8C jj kk 117 cpy #0xabcd ; 18 8C jj kk 118 ldd #0xabcd ; CC jj kk 119 lds #0xabcd ; 8E jj kk 120 ldx #0xabcd ; CE jj kk 121 ldy #0xabcd ; 18 CE jj kk 122 subd #0xabcd ; 83 jj kk 123 124 125; test the direct instructions 126 127 adca 0xab ; 99 dd 128 adcb 0xab ; D9 dd 129 adda 0xab ; 9B dd 130 addb 0xab ; DB dd 131 addd 0xab ; D3 dd 132 anda 0xab ; 94 dd 133 andb 0xab ; D4 dd 134 bita 0xab ; 95 dd 135 bitb 0xab ; D5 dd 136 cmpa 0xab ; 91 dd 137 cmpb 0xab ; D1 dd 138 cpd 0xab ; 1A 93 dd 139 cpx 0xab ; 9C dd 140 cpy 0xab ; 18 9C dd 141 eora 0xab ; 98 dd 142 eorb 0xab ; D8 dd 143 jsr 0xab ; 9D dd 144 ldaa 0xab ; 96 dd 145 ldab 0xab ; D6 dd 146 ldd 0xab ; DC dd 147 lds 0xab ; 9E dd 148 ldx 0xab ; DE dd 149 ldy 0xab ; 18 DE dd 150 oraa 0xab ; 9A dd 151 orab 0xab ; DA dd 152 sbca 0xab ; 92 dd 153 sbcb 0xab ; D2 dd 154 staa 0xab ; 97 dd 155 stab 0xab ; D7 dd 156 std 0xab ; DD dd 157 sts 0xab ; 9F dd 158 stx 0xab ; DF dd 159 sty 0xab ; 18 DF dd 160 suba 0xab ; 90 dd 161 subb 0xab ; D0 dd 162 subd 0xab ; 93 dd 163 164 165; test the extended instructions 166 167 adca 0xabcd ; B9 hh ll 168 adcb 0xabcd ; F9 hh ll 169 adda 0xabcd ; BB hh ll 170 addb 0xabcd ; FB hh ll 171 addd 0xabcd ; F3 hh ll 172 anda 0xabcd ; B4 hh ll 173 andb 0xabcd ; F4 hh ll 174 asl 0xabcd ; 78 hh ll 175 asr 0xabcd ; 77 hh ll 176 bita 0xabcd ; B5 hh ll 177 bitb 0xabcd ; F5 hh ll 178 clr 0xabcd ; 7F hh ll 179 cmpa 0xabcd ; B1 hh ll 180 cmpb 0xabcd ; F1 hh ll 181 com 0xabcd ; 73 hh ll 182 cpd 0xabcd ; 1A B3 hh ll 183 cpx 0xabcd ; BC hh ll 184 cpy 0xabcd ; 18 BC hh ll 185 dec 0xabcd ; 7A hh ll 186 eora 0xabcd ; B8 hh ll 187 eorb 0xabcd ; F8 hh ll 188 inc 0xabcd ; 7C hh ll 189 jmp 0xabcd ; 7E hh ll 190 jsr 0xabcd ; BD hh ll 191 ldaa 0xabcd ; B6 hh ll 192 ldab 0xabcd ; F6 hh ll 193 ldd 0xabcd ; FC hh ll 194 lds 0xabcd ; BE hh ll 195 ldx 0xabcd ; FE hh ll 196 ldy 0xabcd ; 18 FE hh ll 197 lsl 0xabcd ; 78 hh ll 198 lsr 0xabcd ; 74 hh ll 199 neg 0xabcd ; 70 hh ll 200 oraa 0xabcd ; BA hh ll 201 orab 0xabcd ; FA hh ll 202 rol 0xabcd ; 79 hh ll 203 ror 0xabcd ; 76 hh ll 204 sbca 0xabcd ; B2 hh ll 205 sbcb 0xabcd ; F2 hh ll 206 staa 0xabcd ; B7 hh ll 207 stab 0xabcd ; F7 hh ll 208 std 0xabcd ; FD hh ll 209 sts 0xabcd ; BF hh ll 210 stx 0xabcd ; FF hh ll 211 sty 0xabcd ; 18 FF hh ll 212 suba 0xabcd ; B0 hh ll 213 subb 0xabcd ; F0 hh ll 214 subd 0xabcd ; B3 hh ll 215 tst 0xabcd ; 7D hh ll 216 217 218 219; test the relative instructions 220label 221 bcc label2 ; 24 rr (24) 222 bcs label ; 25 rr (fc) 223 beq label ; 27 rr (fa) 224 bge label ; 2C rr (f8) 225 bgt label ; 2E rr (f6) 226 bhi label ; 22 rr (f4) 227 bhs label ; 24 rr (f2) 228 ble label ; 2F rr (f0) 229 blo label ; 25 rr (ee) 230 bls label ; 23 rr (ec) 231 blt label ; 2D rr (ea) 232 bmi label ; 2B rr (e8) 233 bne label ; 26 rr (e6) 234 bpl label ; 2A rr (e4) 235 bra label2 ; 20 rr (08) 236 brn label2 ; 21 rr (06) 237 bsr label2 ; 8D rr (04) 238 bvc label2 ; 28 rr (02) 239 bvs label2 ; 29 rr (00) 240 241label2 242 243 244; test indirect x instructions 245 246 addd x ; E3 00 test the various forms 247 addd ,x ; E3 00 (these three should all be the same) 248 addd 0,x ; E3 00 249 250 adca 0xab,x ; A9 ff 251 adcb 0xab,x ; E9 ff 252 adda 0xab,x ; AB ff 253 addb 0xab,x ; EB ff 254 addd 0xab,x ; E3 ff 255 anda 0xab,x ; A4 ff 256 andb 0xab,x ; E4 ff 257 asl 0xab,x ; 68 ff 258 asr 0xab,x ; 67 ff 259 bita 0xab,x ; A5 ff 260 bitb 0xab,x ; E5 ff 261 clr 0xab,x ; 6F ff 262 cmpa 0xab,x ; A1 ff 263 cmpb 0xab,x ; E1 ff 264 com 0xab,x ; 63 ff 265 cpd 0xab,x ; 1A A3 ff 266 cpx 0xab,x ; AC ff 267 cpy 0xab,x ; 1A AC ff 268 dec 0xab,x ; 6A ff 269 eora 0xab,x ; A8 ff 270 eorb 0xab,x ; E8 ff 271 inc 0xab,x ; 6C ff 272 jmp 0xab,x ; 6E ff 273 jsr 0xab,x ; AD ff 274 ldaa 0xab,x ; A6 ff 275 ldab 0xab,x ; E6 ff 276 ldd 0xab,x ; EC ff 277 lds 0xab,x ; AE ff 278 ldx 0xab,x ; EE ff 279 ldy 0xab,x ; 1A EE ff 280 lsl 0xab,x ; 68 ff 281 lsr 0xab,x ; 64 ff 282 neg 0xab,x ; 60 ff 283 oraa 0xab,x ; AA ff 284 orab 0xab,x ; EA ff 285 rol 0xab,x ; 69 ff 286 ror 0xab,x ; 66 ff 287 sbca 0xab,x ; A2 ff 288 sbcb 0xab,x ; E2 ff 289 staa 0xab,x ; A7 ff 290 stab 0xab,x ; E7 ff 291 std 0xab,x ; ED ff 292 sts 0xab,x ; AF ff 293 stx 0xab,x ; EF ff 294 sty 0xab,x ; 1A EF ff 295 suba 0xab,x ; A0 ff 296 subb 0xab,x ; E0 ff 297 subd 0xab,x ; A3 ff 298 tst 0xab,x ; 6D ff 299 300 301 302; test indirect y instructions 303 304 addd y ; 18 E3 00 test the various forms 305 addd ,y ; 18 E3 00 (these three should all be the same) 306 addd 0,y ; 18 E3 00 307 308 adca 0xab,y ; 18 A9 ff 309 adcb 0xab,y ; 18 E9 ff 310 adda 0xab,y ; 18 AB ff 311 addb 0xab,y ; 18 EB ff 312 addd 0xab,y ; 18 E3 ff 313 anda 0xab,y ; 18 A4 ff 314 andb 0xab,y ; 18 E4 ff 315 asl 0xab,y ; 18 68 ff 316 asr 0xab,y ; 18 67 ff 317 bita 0xab,y ; 18 A5 ff 318 bitb 0xab,y ; 18 E5 ff 319 clr 0xab,y ; 18 6F ff 320 cmpa 0xab,y ; 18 A1 ff 321 cmpb 0xab,y ; 18 E1 ff 322 com 0xab,y ; 18 63 ff 323 cpd 0xab,y ; CD A3 ff 324 cpx 0xab,y ; CD AC ff 325 cpy 0xab,y ; 18 AC ff 326 dec 0xab,y ; 18 6A ff 327 eora 0xab,y ; 18 A8 ff 328 eorb 0xab,y ; 18 E8 ff 329 inc 0xab,y ; 18 6C ff 330 jmp 0xab,y ; 18 6E ff 331 jsr 0xab,y ; 18 AD ff 332 ldaa 0xab,y ; 18 A6 ff 333 ldab 0xab,y ; 18 E6 ff 334 ldd 0xab,y ; 18 EC ff 335 lds 0xab,y ; 18 AE ff 336 ldx 0xab,y ; CD EE ff 337 ldy 0xab,y ; 18 EE ff 338 lsl 0xab,y ; 18 68 ff 339 lsr 0xab,y ; 18 64 ff 340 neg 0xab,y ; 18 60 ff 341 oraa 0xab,y ; 18 AA ff 342 orab 0xab,y ; 18 EA ff 343 rol 0xab,y ; 18 69 ff 344 ror 0xab,y ; 18 66 ff 345 sbca 0xab,y ; 18 A2 ff 346 sbcb 0xab,y ; 18 E2 ff 347 staa 0xab,y ; 18 A7 ff 348 stab 0xab,y ; 18 E7 ff 349 std 0xab,y ; 18 ED ff 350 sts 0xab,y ; 18 AF ff 351 stx 0xab,y ; CD EF ff 352 sty 0xab,y ; 18 EF ff 353 suba 0xab,y ; 18 A0 ff 354 subb 0xab,y ; 18 E0 ff 355 subd 0xab,y ; 18 A3 ff 356 tst 0xab,y ; 18 6D ff 357 358 359; test bit indexed x instructions 360 361 bclr 0xab,x,0xcd ; 1D ff mm (1D AB CD) 362 bset 0xab,x,0xcd ; 1C ff mm (1C AB CD) 363 364 365; test bit indexed y instructions 366 367 bclr 0xab,y,0xcd ; 18 1D ff mm (18 1D AB CD) 368 bset 0xab,y,0xcd ; 18 1C ff mm (18 1C AB CD) 369 370 371; test bit indexed x relative instructions 372 373 brclr 0xab,x,0xcd,label3 ; 1F ff mm rr (1F AB CD 0E) 374 brset 0xab,x,0xcd,label3 ; 1E ff mm rr (1E AB CD 0A) 375 376 377; test bit indexed y relative instructions 378 379 brclr 0xab,y,0xcd,label3 ; 18 1F ff mm rr (18 1F AB CD 05) 380 brset 0xab,y,0xcd,label3 ; 18 1E ff mm rr (18 1E AB CD 00) 381 382 383label3 384 385 386; test bit direct 387 388 bclr 0xab,0xcd ; 15 dd mm 389 bset 0xab,0xcd ; 14 dd mm 390 391 392; test bit direct relative 393 394 brclr 0xab,0xcd,label3 ; 13 dd mm rr (13 AB CD F6) 395 brset 0xab,0xcd,label3 ; 12 dd mm rr (12 AB CD F2) 396 397 398 399; check for proper size promotion 400 401 bita 0xff ; should fit in direct 402 bita 0x100 ; too big for direct, should bump up to extended 403 404 405; check for range errors -- these should generate fatal errors 406 407 addb #0x100 ; 8-bit immediate 408 addd #0x10000 ; 16 bit immediate 409 jsr 0x10000 ; extended 410 addd 0x100,x ; indirect x 411 addd 0x100,y ; indirect y 412