struct / union in initializer, RFE #901.
[sdcc.git] / sdcc / sdas / asz80 / tz80.asm
bloba33edc212c51d66d28ec24347c5034c059bb0ff9
1 .title Test of Z80 / HD64180 assembler
3 offset = 0x55 ;arbitrary constants
4 n = 0x20
5 nn = 0x0584
7 ; notes:
8 ; Leading 'a' operand is optional.
9 ; If offset is ommitted 0 is assumed.
11 ;***********************************************************
12 ; add with carry to 'a'
13 adc a,(hl) ;8E
14 adc a,offset(ix) ;DD 8E 55
15 adc a,offset(iy) ;FD 8E 55
16 adc a,a ;8F
17 adc a,b ;88
18 adc a,c ;89
19 adc a,d ;8A
20 adc a,e ;8B
21 adc a,h ;8C
22 adc a,l ;8D
23 adc a,#n ;CE 20
24 ;***********************************************************
25 adc (hl) ;8E
26 adc offset(ix) ;DD 8E 55
27 adc offset(iy) ;FD 8E 55
28 adc a ;8F
29 adc b ;88
30 adc c ;89
31 adc d ;8A
32 adc e ;8B
33 adc h ;8C
34 adc l ;8D
35 adc #n ;CE 20
36 ;***********************************************************
37 ; add with carry register pair to 'hl'
38 adc hl,bc ;ED 4A
39 adc hl,de ;ED 5A
40 adc hl,hl ;ED 6A
41 adc hl,sp ;ED 7A
42 ;***********************************************************
43 ; add operand to 'a'
44 add a,(hl) ;86
45 add a,offset(ix) ;DD 86 55
46 add a,offset(iy) ;FD 86 55
47 add a,a ;87
48 add a,b ;80
49 add a,c ;81
50 add a,d ;82
51 add a,e ;83
52 add a,h ;84
53 add a,l ;85
54 add a,#n ;C6 20
55 ;***********************************************************
56 ; add register pair to 'hl'
57 add hl,bc ;09
58 add hl,de ;19
59 add hl,hl ;29
60 add hl,sp ;39
61 ;***********************************************************
62 ; add register pair to 'ix'
63 add ix,bc ;DD 09
64 add ix,de ;DD 19
65 add ix,ix ;DD 29
66 add ix,sp ;DD 39
67 ;***********************************************************
68 ; add register pair to 'iy'
69 add iy,bc ;FD 09
70 add iy,de ;FD 19
71 add iy,iy ;FD 29
72 add iy,sp ;FD 39
73 ;***********************************************************
74 ; logical 'and' operand with 'a'
75 and a,(hl) ;A6
76 and a,offset(ix) ;DD A6 55
77 and a,offset(iy) ;FD A6 55
78 and a,a ;A7
79 and a,b ;A0
80 and a,c ;A1
81 and a,d ;A2
82 and a,e ;A3
83 and a,h ;A4
84 and a,l ;A5
85 and a,#n ;E6 20
86 ;***********************************************************
87 ; test bit of location or register
88 bit 0,(hl) ;CB 46
89 bit 0,offset(ix) ;DD CB 55 46
90 bit 0,offset(iy) ;FD CB 55 46
91 bit 0,a ;CB 47
92 bit 0,b ;CB 40
93 bit 0,c ;CB 41
94 bit 0,d ;CB 42
95 bit 0,e ;CB 43
96 bit 0,h ;CB 44
97 bit 0,l ;CB 45
98 bit 1,(hl) ;CB 4E
99 bit 1,offset(ix) ;DD CB 55 4E
100 bit 1,offset(iy) ;FD CB 55 4E
101 bit 1,a ;CB 4F
102 bit 1,b ;CB 48
103 bit 1,c ;CB 49
104 bit 1,d ;CB 4A
105 bit 1,e ;CB 4B
106 bit 1,h ;CB 4C
107 bit 1,l ;CB 4D
108 bit 2,(hl) ;CB 56
109 bit 2,offset(ix) ;DD CB 55 56
110 bit 2,offset(iy) ;FD CB 55 56
111 bit 2,a ;CB 57
112 bit 2,b ;CB 50
113 bit 2,c ;CB 51
114 bit 2,d ;CB 52
115 bit 2,e ;CB 53
116 bit 2,h ;CB 54
117 bit 2,l ;CB 55
118 bit 3,(hl) ;CB 5E
119 bit 3,offset(ix) ;DD CB 55 5E
120 bit 3,offset(iy) ;FD CB 55 5E
121 bit 3,a ;CB 5F
122 bit 3,b ;CB 58
123 bit 3,c ;CB 59
124 bit 3,d ;CB 5A
125 bit 3,e ;CB 5B
126 bit 3,h ;CB 5C
127 bit 3,l ;CB 5D
128 bit 4,(hl) ;CB 66
129 bit 4,offset(ix) ;DD CB 55 66
130 bit 4,offset(iy) ;FD CB 55 66
131 bit 4,a ;CB 67
132 bit 4,b ;CB 60
133 bit 4,c ;CB 61
134 bit 4,d ;CB 62
135 bit 4,e ;CB 63
136 bit 4,h ;CB 64
137 bit 4,l ;CB 65
138 bit 5,(hl) ;CB 6E
139 bit 5,offset(ix) ;DD CB 55 6E
140 bit 5,offset(iy) ;FD CB 55 6E
141 bit 5,a ;CB 6F
142 bit 5,b ;CB 68
143 bit 5,c ;CB 69
144 bit 5,d ;CB 6A
145 bit 5,e ;CB 6B
146 bit 5,h ;CB 6C
147 bit 5,l ;CB 6D
148 bit 6,(hl) ;CB 76
149 bit 6,offset(ix) ;DD CB 55 76
150 bit 6,offset(iy) ;FD CB 55 76
151 bit 6,a ;CB 77
152 bit 6,b ;CB 70
153 bit 6,c ;CB 71
154 bit 6,d ;CB 72
155 bit 6,e ;CB 73
156 bit 6,h ;CB 74
157 bit 6,l ;CB 75
158 bit 7,(hl) ;CB 7E
159 bit 7,offset(ix) ;DD CB 55 7E
160 bit 7,offset(iy) ;FD CB 55 7E
161 bit 7,a ;CB 7F
162 bit 7,b ;CB 78
163 bit 7,c ;CB 79
164 bit 7,d ;CB 7A
165 bit 7,e ;CB 7B
166 bit 7,h ;CB 7C
167 bit 7,l ;CB 7D
168 ;***********************************************************
169 ; call subroutine at nn if condition is true
170 call C,nn ;DC 84 05
171 call M,nn ;FC 84 05
172 call NC,nn ;D4 84 05
173 call NZ,nn ;C4 84 05
174 call P,nn ;F4 84 05
175 call PE,nn ;EC 84 05
176 call PO,nn ;E4 84 05
177 call Z,nn ;CC 84 05
178 ;***********************************************************
179 ; unconditional call to subroutine at nn
180 call nn ;CD 84 05
181 ;***********************************************************
182 ; complement carry flag
183 ccf ;3F
184 ;***********************************************************
185 ; compare operand with 'a'
186 cp a,(hl) ;BE
187 cp a,offset(ix) ;DD BE 55
188 cp a,offset(iy) ;FD BE 55
189 cp a,a ;BF
190 cp a,b ;B8
191 cp a,c ;B9
192 cp a,d ;BA
193 cp a,e ;BB
194 cp a,h ;BC
195 cp a,l ;BD
196 cp a,#n ;FE 20
197 ;***********************************************************
198 ; compare location (hl) and 'a'
199 ; decrement 'hl' and 'bc'
200 cpd ;ED A9
201 ;***********************************************************
202 ; compare location (hl) and 'a'
203 ; decrement 'hl' and 'bc'
204 ; repeat until 'bc' = 0
205 cpdr ;ED B9
206 ;***********************************************************
207 ; compare location (hl) and 'a'
208 ; increment 'hl' and decrement 'bc'
209 cpi ;ED A1
210 ;***********************************************************
211 ; compare location (hl) and 'a'
212 ; increment 'hl' and decrement 'bc'
213 ; repeat until 'bc' = 0
214 cpir ;ED B1
215 ;***********************************************************
216 ; 1's complement of 'a'
217 cpl ;2F
218 ;***********************************************************
219 ; decimal adjust 'a'
220 daa ;27
221 ;***********************************************************
222 ; decrement operand
223 dec (hl) ;35
224 dec offset(ix) ;DD 35 55
225 dec offset(iy) ;FD 35 55
226 dec a ;3D
227 dec b ;05
228 dec bc ;0B
229 dec c ;0D
230 dec d ;15
231 dec de ;1B
232 dec e ;1D
233 dec h ;25
234 dec hl ;2B
235 dec ix ;DD 2B
236 dec iy ;FD 2B
237 dec l ;2D
238 dec sp ;3B
239 ;***********************************************************
240 ; disable interrupts
241 di ;F3
242 ;***********************************************************
243 ; decrement b and jump relative if b # 0
244 djnz .+0x12 ;10 10
245 ;***********************************************************
246 ; enable interrupts
247 ei ;FB
248 ;***********************************************************
249 ; exchange location and (sp)
250 ex (sp),hl ;E3
251 ex (sp),ix ;DD E3
252 ex (sp),iy ;FD E3
253 ;***********************************************************
254 ; exchange af and af'
255 ex af,af' ;08
256 ;***********************************************************
257 ; exchange de and hl
258 ex de,hl ;EB
259 ;***********************************************************
260 ; exchange:
261 ; bc <-> bc'
262 ; de <-> de'
263 ; hl <-> hl'
264 exx ;D9
265 ;***********************************************************
266 ; halt (wait for interrupt or reset)
267 halt ;76
268 ;***********************************************************
269 ; set interrupt mode
270 im 0 ;ED 46
271 im 1 ;ED 56
272 im 2 ;ED 5E
273 ;***********************************************************
274 ; load 'a' with input from device n
275 in a,(n) ;DB 20
276 ;***********************************************************
277 ; load register with input from (c)
278 in a,(c) ;ED 78
279 in b,(c) ;ED 40
280 in c,(c) ;ED 48
281 in d,(c) ;ED 50
282 in e,(c) ;ED 58
283 in h,(c) ;ED 60
284 in l,(c) ;ED 68
285 ;***********************************************************
286 ; increment operand
287 inc (hl) ;34
288 inc offset(ix) ;DD 34 55
289 inc offset(iy) ;FD 34 55
290 inc a ;3C
291 inc b ;04
292 inc bc ;03
293 inc c ;0C
294 inc d ;14
295 inc de ;13
296 inc e ;1C
297 inc h ;24
298 inc hl ;23
299 inc ix ;DD 23
300 inc iy ;FD 23
301 inc l ;2C
302 inc sp ;33
303 ;***********************************************************
304 ; load location (hl) with input
305 ; from port (c)
306 ; decrement 'hl' and 'b'
307 ind ;ED AA
308 ;***********************************************************
309 ; load location (hl) with input
310 ; from port (c)
311 ; decrement 'hl' and 'b'
312 ; repeat until 'b' = 0
313 indr ;ED BA
314 ;***********************************************************
315 ; load location (hl) with input
316 ; from port (c)
317 ; increment 'hl' and decrement 'b'
318 ini ;ED A2
319 ;***********************************************************
320 ; load location (hl) with input
321 ; from port (c)
322 ; increment 'hl' and decrement 'b'
323 ; repeat until 'b' = 0
324 inir ;ED B2
325 ;***********************************************************
326 ; unconditional jump to location nn
327 jp nn ;C3 84 05
328 jp (hl) ;E9
329 jp (ix) ;DD E9
330 jp (iy) ;FD E9
331 ;***********************************************************
332 ; jump to location if condition is true
333 jp C,nn ;DA 84 05
334 jp M,nn ;FA 84 05
335 jp NC,nn ;D2 84 05
336 jp NZ,nn ;C2 84 05
337 jp P,nn ;F2 84 05
338 jp PE,nn ;EA 84 05
339 jp PO,nn ;E2 84 05
340 jp Z,nn ;CA 84 05
341 ;***********************************************************
342 ; unconditional jump relative to PC+e
343 jr jr1+0x10 ;18 10
344 ;***********************************************************
345 ; jump relative to PC+e if condition is true
346 jr1: jr C,jr2+0x10 ;38 10
347 jr2: jr NC,jr3+0x10 ;30 10
348 jr3: jr NZ,jr4+0x10 ;20 10
349 jr4: jr Z,jr5+0x10 ;28 10
350 jr5:
351 ;***********************************************************
352 ; load source to destination
353 ld a,(hl) ;7E
354 ld a,offset(ix) ;DD 7E 55
355 ld a,offset(iy) ;FD 7E 55
356 ld a,a ;7F
357 ld a,b ;78
358 ld a,c ;79
359 ld a,d ;7A
360 ld a,e ;7B
361 ld a,h ;7C
362 ld a,l ;7D
363 ld a,#n ;3E 20
364 ld b,(hl) ;46
365 ld b,offset(ix) ;DD 46 55
366 ld b,offset(iy) ;FD 46 55
367 ld b,a ;47
368 ld b,b ;40
369 ld b,c ;41
370 ld b,d ;42
371 ld b,e ;43
372 ld b,h ;44
373 ld b,l ;45
374 ld b,#n ;06 20
375 ld c,(hl) ;4E
376 ld c,offset(ix) ;DD 4E 55
377 ld c,offset(iy) ;FD 4E 55
378 ld c,a ;4F
379 ld c,b ;48
380 ld c,c ;49
381 ld c,d ;4A
382 ld c,e ;4B
383 ld c,h ;4C
384 ld c,l ;4D
385 ld c,#n ;0E 20
386 ld d,(hl) ;56
387 ld d,offset(ix) ;DD 56 55
388 ld d,offset(iy) ;FD 56 55
389 ld d,a ;57
390 ld d,b ;50
391 ld d,c ;51
392 ld d,d ;52
393 ld d,e ;53
394 ld d,h ;54
395 ld d,l ;55
396 ld d,#n ;16 20
397 ld e,(hl) ;5E
398 ld e,offset(ix) ;DD 5E 55
399 ld e,offset(iy) ;FD 5E 55
400 ld e,a ;5F
401 ld e,b ;58
402 ld e,c ;59
403 ld e,d ;5A
404 ld e,e ;5B
405 ld e,h ;5C
406 ld e,l ;5D
407 ld e,#n ;1E 20
408 ld h,(hl) ;66
409 ld h,offset(ix) ;DD 66 55
410 ld h,offset(iy) ;FD 66 55
411 ld h,a ;67
412 ld h,b ;60
413 ld h,c ;61
414 ld h,d ;62
415 ld h,e ;63
416 ld h,h ;64
417 ld h,l ;65
418 ld h,#n ;26 20
419 ld l,(hl) ;6E
420 ld l,offset(ix) ;DD 6E 55
421 ld l,offset(iy) ;FD 6E 55
422 ld l,a ;6F
423 ld l,b ;68
424 ld l,c ;69
425 ld l,d ;6A
426 ld l,e ;6B
427 ld l,h ;6C
428 ld l,l ;6D
429 ld l,#n ;2E 20
430 ;***********************************************************
431 ld i,a ;ED 47
432 ld r,a ;ED 4F
433 ld a,i ;ED 57
434 ld a,r ;ED 5F
435 ;***********************************************************
436 ld (bc),a ;02
437 ld (de),a ;12
438 ld a,(bc) ;0A
439 ld a,(de) ;1A
440 ;***********************************************************
441 ld (hl),a ;77
442 ld (hl),b ;70
443 ld (hl),c ;71
444 ld (hl),d ;72
445 ld (hl),e ;73
446 ld (hl),h ;74
447 ld (hl),l ;75
448 ld (hl),#n ;36 20
449 ;***********************************************************
450 ld offset(ix),a ;DD 77 55
451 ld offset(ix),b ;DD 70 55
452 ld offset(ix),c ;DD 71 55
453 ld offset(ix),d ;DD 72 55
454 ld offset(ix),e ;DD 73 55
455 ld offset(ix),h ;DD 74 55
456 ld offset(ix),l ;DD 75 55
457 ld offset(ix),#n ;DD 36 55 20
458 ;***********************************************************
459 ld offset(iy),a ;FD 77 55
460 ld offset(iy),b ;FD 70 55
461 ld offset(iy),c ;FD 71 55
462 ld offset(iy),d ;FD 72 55
463 ld offset(iy),e ;FD 73 55
464 ld offset(iy),h ;FD 74 55
465 ld offset(iy),l ;FD 75 55
466 ld offset(iy),#n ;FD 36 55 20
467 ;***********************************************************
468 ld (nn),a ;32 84 05
469 ld (nn),bc ;ED 43 84 05
470 ld (nn),de ;ED 53 84 05
471 ld (nn),hl ;22 84 05
472 ld (nn),sp ;ED 73 84 05
473 ld (nn),ix ;DD 22 84 05
474 ld (nn),iy ;FD 22 84 05
475 ;***********************************************************
476 ld a,(nn) ;3A 84 05
477 ld bc,(nn) ;ED 4B 84 05
478 ld de,(nn) ;ED 5B 84 05
479 ld hl,(nn) ;2A 84 05
480 ld sp,(nn) ;ED 7B 84 05
481 ld ix,(nn) ;DD 2A 84 05
482 ld iy,(nn) ;FD 2A 84 05
483 ;***********************************************************
484 ld bc,#nn ;01 84 05
485 ld de,#nn ;11 84 05
486 ld hl,#nn ;21 84 05
487 ld sp,#nn ;31 84 05
488 ld ix,#nn ;DD 21 84 05
489 ld iy,#nn ;FD 21 84 05
490 ;***********************************************************
491 ld sp,hl ;F9
492 ld sp,ix ;DD F9
493 ld sp,iy ;FD F9
494 ;***********************************************************
495 ; load location (hl)
496 ; with location (de)
497 ; decrement de, hl
498 ; decrement bc
499 ldd ;ED A8
500 ;***********************************************************
501 ; load location (hl)
502 ; with location (de)
503 ; decrement de, hl
504 ; decrement bc
505 ; repeat until bc = 0
506 lddr ;ED B8
507 ;***********************************************************
508 ; load location (hl)
509 ; with location (de)
510 ; increment de, hl
511 ; decrement bc
512 ldi ;ED A0
513 ;***********************************************************
514 ; load location (hl)
515 ; with location (de)
516 ; increment de, hl
517 ; decrement bc
518 ; repeat until bc = 0
519 ldir ;ED B0
520 ;***********************************************************
521 ; 2's complement of 'a'
522 neg ;ED 44
523 ;***********************************************************
524 ; no operation
525 nop ;00
526 ;***********************************************************
527 ; logical 'or' operand with 'a'
528 or a,(hl) ;B6
529 or a,offset(ix) ;DD B6 55
530 or a,offset(iy) ;FD B6 55
531 or a,a ;B7
532 or a,b ;B0
533 or a,c ;B1
534 or a,d ;B2
535 or a,e ;B3
536 or a,h ;B4
537 or a,l ;B5
538 or a,#n ;F6 20
539 ;***********************************************************
540 ; load output port (c)
541 ; with location (hl)
542 ; decrement hl and decrement b
543 ; repeat until b = 0
544 otdr ;ED BB
545 ;***********************************************************
546 ; load output port (c)
547 ; with location (hl)
548 ; increment hl and decrement b
549 ; repeat until b = 0
550 otir ;ED B3
551 ;***********************************************************
552 ; load output port (c) with reg
553 out (c),a ;ED 79
554 out (c),b ;ED 41
555 out (c),c ;ED 49
556 out (c),d ;ED 51
557 out (c),e ;ED 59
558 out (c),h ;ED 61
559 out (c),l ;ED 69
560 ;***********************************************************
561 ; load output port (n) with 'a'
562 out (n),a ;D3 20
563 ;***********************************************************
564 ; load output port (c)
565 ; with location (hl)
566 ; decrement hl and decrement b
567 outd ;ED AB
568 ;***********************************************************
569 ; load output port (c)
570 ; with location (hl)
571 ; increment hl and decrement b
572 outi ;ED A3
573 ;***********************************************************
574 ; load destination with top of stack
575 pop af ;F1
576 pop bc ;C1
577 pop de ;D1
578 pop hl ;E1
579 pop ix ;DD E1
580 pop iy ;FD E1
581 ;***********************************************************
582 ; put source on stack
583 push af ;F5
584 push bc ;C5
585 push de ;D5
586 push hl ;E5
587 push ix ;DD E5
588 push iy ;FD E5
589 ;***********************************************************
590 ; reset bit of location or register
591 res 0,(hl) ;CB 86
592 res 0,offset(ix) ;DD CB 55 86
593 res 0,offset(iy) ;FD CB 55 86
594 res 0,a ;CB 87
595 res 0,b ;CB 80
596 res 0,c ;CB 81
597 res 0,d ;CB 82
598 res 0,e ;CB 83
599 res 0,h ;CB 84
600 res 0,l ;CB 85
601 res 1,(hl) ;CB 8E
602 res 1,offset(ix) ;DD CB 55 8E
603 res 1,offset(iy) ;FD CB 55 8E
604 res 1,a ;CB 8F
605 res 1,b ;CB 88
606 res 1,c ;CB 89
607 res 1,d ;CB 8A
608 res 1,e ;CB 8B
609 res 1,h ;CB 8C
610 res 1,l ;CB 8D
611 res 2,(hl) ;CB 96
612 res 2,offset(ix) ;DD CB 55 96
613 res 2,offset(iy) ;FD CB 55 96
614 res 2,a ;CB 97
615 res 2,b ;CB 90
616 res 2,c ;CB 91
617 res 2,d ;CB 92
618 res 2,e ;CB 93
619 res 2,h ;CB 94
620 res 2,l ;CB 95
621 res 3,(hl) ;CB 9E
622 res 3,offset(ix) ;DD CB 55 9E
623 res 3,offset(iy) ;FD CB 55 9E
624 res 3,a ;CB 9F
625 res 3,b ;CB 98
626 res 3,c ;CB 99
627 res 3,d ;CB 9A
628 res 3,e ;CB 9B
629 res 3,h ;CB 9C
630 res 3,l ;CB 9D
631 res 4,(hl) ;CB A6
632 res 4,offset(ix) ;DD CB 55 A6
633 res 4,offset(iy) ;FD CB 55 A6
634 res 4,a ;CB A7
635 res 4,b ;CB A0
636 res 4,c ;CB A1
637 res 4,d ;CB A2
638 res 4,e ;CB A3
639 res 4,h ;CB A4
640 res 4,l ;CB A5
641 res 5,(hl) ;CB AE
642 res 5,offset(ix) ;DD CB 55 AE
643 res 5,offset(iy) ;FD CB 55 AE
644 res 5,a ;CB AF
645 res 5,b ;CB A8
646 res 5,c ;CB A9
647 res 5,d ;CB AA
648 res 5,e ;CB AB
649 res 5,h ;CB AC
650 res 5,l ;CB AD
651 res 6,(hl) ;CB B6
652 res 6,offset(ix) ;DD CB 55 B6
653 res 6,offset(iy) ;FD CB 55 B6
654 res 6,a ;CB B7
655 res 6,b ;CB B0
656 res 6,c ;CB B1
657 res 6,d ;CB B2
658 res 6,e ;CB B3
659 res 6,h ;CB B4
660 res 6,l ;CB B5
661 res 7,(hl) ;CB BE
662 res 7,offset(ix) ;DD CB 55 BE
663 res 7,offset(iy) ;FD CB 55 BE
664 res 7,a ;CB BF
665 res 7,b ;CB B8
666 res 7,c ;CB B9
667 res 7,d ;CB BA
668 res 7,e ;CB BB
669 res 7,h ;CB BC
670 res 7,l ;CB BD
671 ;***********************************************************
672 ; return from subroutine
673 ret ;C9
674 ;***********************************************************
675 ; return from subroutine if condition is true
676 ret C ;D8
677 ret M ;F8
678 ret NC ;D0
679 ret NZ ;C0
680 ret P ;F0
681 ret PE ;E8
682 ret PO ;E0
683 ret Z ;C8
684 ;***********************************************************
685 ; return from interrupt
686 reti ;ED 4D
687 ;***********************************************************
688 ; return from non-maskable interrupt
689 retn ;ED 45
690 ;***********************************************************
691 ; rotate left through carry
692 rl a,(hl) ;CB 16
693 rl a,offset(ix) ;DD CB 55 16
694 rl a,offset(iy) ;FD CB 55 16
695 rl a,a ;CB 17
696 rl a,b ;CB 10
697 rl a,c ;CB 11
698 rl a,d ;CB 12
699 rl a,e ;CB 13
700 rl a,h ;CB 14
701 rl a,l ;CB 15
702 ;***********************************************************
703 ; rotate left 'a' with carry
704 rla ;17
705 ;***********************************************************
706 ; rotate left circular
707 rlc a,(hl) ;CB 06
708 rlc a,offset(ix) ;DD CB 55 06
709 rlc a,offset(iy) ;FD CB 55 06
710 rlc a,a ;CB 07
711 rlc a,b ;CB 00
712 rlc a,c ;CB 01
713 rlc a,d ;CB 02
714 rlc a,e ;CB 03
715 rlc a,h ;CB 04
716 rlc a,l ;CB 05
717 ;***********************************************************
718 ; rotate left 'a' circular
719 rlca ;07
720 ;***********************************************************
721 ; rotate digit left and right
722 ; between 'a' and location (hl)
723 rld ;ED 6F
724 ;***********************************************************
725 ; rotate right through carry
726 rr a,(hl) ;CB 1E
727 rr a,offset(ix) ;DD CB 55 1E
728 rr a,offset(iy) ;FD CB 55 1E
729 rr a,a ;CB 1F
730 rr a,b ;CB 18
731 rr a,c ;CB 19
732 rr a,d ;CB 1A
733 rr a,e ;CB 1B
734 rr a,h ;CB 1C
735 rr a,l ;CB 1D
736 ;***********************************************************
737 ; rotate 'a' right with carry
738 rra ;1F
739 ;***********************************************************
740 ; rotate right circular
741 rrc a,(hl) ;CB 0E
742 rrc a,offset(ix) ;DD CB 55 0E
743 rrc a,offset(iy) ;FD CB 55 0E
744 rrc a,a ;CB 0F
745 rrc a,b ;CB 08
746 rrc a,c ;CB 09
747 rrc a,d ;CB 0A
748 rrc a,e ;CB 0B
749 rrc a,h ;CB 0C
750 rrc a,l ;CB 0D
751 ;***********************************************************
752 ; rotate 'a' right circular
753 rrca ;0F
754 ;***********************************************************
755 ; rotate digit right and left
756 ; between 'a' and location (hl)
757 rrd ;ED 67
758 ;***********************************************************
759 ; restart location
760 rst 0x00 ;C7
761 rst 0x08 ;CF
762 rst 0x10 ;D7
763 rst 0x18 ;DF
764 rst 0x20 ;E7
765 rst 0x28 ;EF
766 rst 0x30 ;F7
767 rst 0x38 ;FF
768 ;***********************************************************
769 ; subtract with carry to 'a'
770 sbc a,(hl) ;9E
771 sbc a,offset(ix) ;DD 9E 55
772 sbc a,offset(iy) ;FD 9E 55
773 sbc a,a ;9F
774 sbc a,b ;98
775 sbc a,c ;99
776 sbc a,d ;9A
777 sbc a,e ;9B
778 sbc a,h ;9C
779 sbc a,l ;9D
780 sbc a,#n ;DE 20
781 ;***********************************************************
782 ; add with carry register pair to 'hl'
783 sbc hl,bc ;ED 42
784 sbc hl,de ;ED 52
785 sbc hl,hl ;ED 62
786 sbc hl,sp ;ED 72
787 ;***********************************************************
788 ; set carry flag (C=1)
789 scf ;37
790 ;***********************************************************
791 ; set bit of location or register
792 set 0,(hl) ;CB C6
793 set 0,offset(ix) ;DD CB 55 C6
794 set 0,offset(iy) ;FD CB 55 C6
795 set 0,a ;CB C7
796 set 0,b ;CB C0
797 set 0,c ;CB C1
798 set 0,d ;CB C2
799 set 0,e ;CB C3
800 set 0,h ;CB C4
801 set 0,l ;CB C5
802 set 1,(hl) ;CB CE
803 set 1,offset(ix) ;DD CB 55 CE
804 set 1,offset(iy) ;FD CB 55 CE
805 set 1,a ;CB CF
806 set 1,b ;CB C8
807 set 1,c ;CB C9
808 set 1,d ;CB CA
809 set 1,e ;CB CB
810 set 1,h ;CB CC
811 set 1,l ;CB CD
812 set 2,(hl) ;CB D6
813 set 2,offset(ix) ;DD CB 55 D6
814 set 2,offset(iy) ;FD CB 55 D6
815 set 2,a ;CB D7
816 set 2,b ;CB D0
817 set 2,c ;CB D1
818 set 2,d ;CB D2
819 set 2,e ;CB D3
820 set 2,h ;CB D4
821 set 2,l ;CB D5
822 set 3,(hl) ;CB DE
823 set 3,offset(ix) ;DD CB 55 DE
824 set 3,offset(iy) ;FD CB 55 DE
825 set 3,a ;CB DF
826 set 3,b ;CB D8
827 set 3,c ;CB D9
828 set 3,d ;CB DA
829 set 3,e ;CB DB
830 set 3,h ;CB DC
831 set 3,l ;CB DD
832 set 4,(hl) ;CB E6
833 set 4,offset(ix) ;DD CB 55 E6
834 set 4,offset(iy) ;FD CB 55 E6
835 set 4,a ;CB E7
836 set 4,b ;CB E0
837 set 4,c ;CB E1
838 set 4,d ;CB E2
839 set 4,e ;CB E3
840 set 4,h ;CB E4
841 set 4,l ;CB E5
842 set 5,(hl) ;CB EE
843 set 5,offset(ix) ;DD CB 55 EE
844 set 5,offset(iy) ;FD CB 55 EE
845 set 5,a ;CB EF
846 set 5,b ;CB E8
847 set 5,c ;CB E9
848 set 5,d ;CB EA
849 set 5,e ;CB EB
850 set 5,h ;CB EC
851 set 5,l ;CB ED
852 set 6,(hl) ;CB F6
853 set 6,offset(ix) ;DD CB 55 F6
854 set 6,offset(iy) ;FD CB 55 F6
855 set 6,a ;CB F7
856 set 6,b ;CB F0
857 set 6,c ;CB F1
858 set 6,d ;CB F2
859 set 6,e ;CB F3
860 set 6,h ;CB F4
861 set 6,l ;CB F5
862 set 7,(hl) ;CB FE
863 set 7,offset(ix) ;DD CB 55 FE
864 set 7,offset(iy) ;FD CB 55 FE
865 set 7,a ;CB FF
866 set 7,b ;CB F8
867 set 7,c ;CB F9
868 set 7,d ;CB FA
869 set 7,e ;CB FB
870 set 7,h ;CB FC
871 set 7,l ;CB FD
872 ;***********************************************************
873 ; shift operand left arithmetic
874 sla a,(hl) ;CB 26
875 sla a,offset(ix) ;DD CB 55 26
876 sla a,offset(iy) ;FD CB 55 26
877 sla a,a ;CB 27
878 sla a,b ;CB 20
879 sla a,c ;CB 21
880 sla a,d ;CB 22
881 sla a,e ;CB 23
882 sla a,h ;CB 24
883 sla a,l ;CB 25
884 ;***********************************************************
885 ; shift operand right arithmetic
886 sra a,(hl) ;CB 2E
887 sra a,offset(ix) ;DD CB 55 2E
888 sra a,offset(iy) ;FD CB 55 2E
889 sra a,a ;CB 2F
890 sra a,b ;CB 28
891 sra a,c ;CB 29
892 sra a,d ;CB 2A
893 sra a,e ;CB 2B
894 sra a,h ;CB 2C
895 sra a,l ;CB 2D
896 ;***********************************************************
897 ; shift operand right logical
898 srl a,(hl) ;CB 3E
899 srl a,offset(ix) ;DD CB 55 3E
900 srl a,offset(iy) ;FD CB 55 3E
901 srl a,a ;CB 3F
902 srl a,b ;CB 38
903 srl a,c ;CB 39
904 srl a,d ;CB 3A
905 srl a,e ;CB 3B
906 srl a,h ;CB 3C
907 srl a,l ;CB 3D
908 ;***********************************************************
909 ; subtract operand from 'a'
910 sub a,(hl) ;96
911 sub a,offset(ix) ;DD 96 55
912 sub a,offset(iy) ;FD 96 55
913 sub a,a ;97
914 sub a,b ;90
915 sub a,c ;91
916 sub a,d ;92
917 sub a,e ;93
918 sub a,h ;94
919 sub a,l ;95
920 sub a,#n ;D6 20
921 ;***********************************************************
922 ; logical 'xor' operand with 'a'
923 xor a,(hl) ;AE
924 xor a,offset(ix) ;DD AE 55
925 xor a,offset(iy) ;FD AE 55
926 xor a,a ;AF
927 xor a,b ;A8
928 xor a,c ;A9
929 xor a,d ;AA
930 xor a,e ;AB
931 xor a,h ;AC
932 xor a,l ;AD
933 xor a,#n ;EE 20
935 .page
936 ;***********************************************************
937 ; Hitachi HD64180 Codes
938 ;***********************************************************
940 .hd64
942 ;***********************************************************
943 ; load register with input from port (n)
944 in0 a,(n) ;ED 38 20
945 in0 b,(n) ;ED 00 20
946 in0 c,(n) ;ED 08 20
947 in0 d,(n) ;ED 10 20
948 in0 e,(n) ;ED 18 20
949 in0 h,(n) ;ED 20 20
950 in0 l,(n) ;ED 28 20
951 ;***********************************************************
952 ; multiplication of each half
953 ; of the specified register pair
954 ; with the 16-bit result going to
955 ; the specified register pair
956 mlt bc ;ED 4C
957 mlt de ;ED 5C
958 mlt hl ;ED 6C
959 mlt sp ;ED 7C
960 ;***********************************************************
961 ; load output port (c) with
962 ; location (hl),
963 ; decrement hl and b
964 ; decrement c
965 otdm ;ED 8B
966 ;***********************************************************
967 ; load output port (c) with
968 ; location (hl),
969 ; decrement hl and c
970 ; decrement b
971 ; repeat until b = 0
972 otdmr ;ED 9B
973 ;***********************************************************
974 ; load output port (c) with
975 ; location (hl),
976 ; increment hl and b
977 ; decrement c
978 otim ;ED 83
979 ;***********************************************************
980 ; load output port (c) with
981 ; location (hl),
982 ; increment hl and c
983 ; decrement b
984 ; repeat until b = 0
985 otimr ;ED 93
986 ;***********************************************************
987 ; load output port (n) from register
988 out0 (n),a ;ED 39 20
989 out0 (n),b ;ED 01 20
990 out0 (n),c ;ED 09 20
991 out0 (n),d ;ED 11 20
992 out0 (n),e ;ED 19 20
993 out0 (n),h ;ED 21 20
994 out0 (n),l ;ED 29 20
995 ;***********************************************************
996 ; enter sleep mode
997 slp ;ED 76
998 ;***********************************************************
999 ; non-destructive'and' with accumulator and specified operand
1000 tst a ;ED 3C
1001 tst b ;ED 04
1002 tst c ;ED 0C
1003 tst d ;ED 14
1004 tst e ;ED 1C
1005 tst h ;ED 24
1006 tst l ;ED 2C
1007 tst #n ;ED 64 20
1008 tst (hl) ;ED 34
1009 ;***********************************************************
1010 ; non-destructive 'and' of n and the contents of port (c)
1011 tstio #n ;ED 74 20
1012 ;***********************************************************