scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

commit c26f53976fe1a56c6190e42c233f749946ee30af
parent 75857df04c39b382163f2d069a825484341bf75c
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Thu, 28 Dec 2017 14:14:13 +0000

[as-z80] Add rotate and shift operations

Diffstat:
Mas/target/x80/ins.c | 28++++++++++++++++++++++++++++
Mas/target/x80/x80.dat | 110++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mas/target/z80/test.s | 256++++++++++++++++++++++++++++++++++++++++----------------------------------------
3 files changed, 211 insertions(+), 183 deletions(-)

diff --git a/as/target/x80/ins.c b/as/target/x80/ins.c @@ -404,6 +404,34 @@ idx(Op *op, Node **args) } void +rot(Op *op, Node **args) +{ + Node *par = args[0]; + unsigned char buf[5]; + int n = op->size; + unsigned val; + + memcpy(buf, op->bytes, n); + switch (par->addr) { + case AINDEX: + val = par->left->right->sym->value; + buf[n-2] = val; + if (!args[1]) + break; + par = args[1]; + case AREG: + val = reg2int(par->sym->argtype); + buf[n-1] |= val; + break; + case AINDIR: + break; + default: + abort(); + } + emit(buf, n); +} + +void im(Op *op, Node **args) { unsigned val = args[0]->sym->value; diff --git a/as/target/x80/x80.dat b/as/target/x80/x80.dat @@ -238,61 +238,61 @@ RRA none 1 0x1f noargs Z80,R800,GB80 RLD none 2 0xed,0x6f noargs Z80,R800 RRD none 2 0xed,0x67 noargs Z80,R800 -RLC r 2 0xcb,0x00 r8 Z80,R800 -RLC (HL) 2 0xcb,0x06 noargs Z80,R800 -RLC (IX+n) 4 0xdd,0xcb,0x06 idx Z80,R800 -RLC (IY+n) 4 0xfd,0xcb,0x06 idx Z80,R800 -RLC (IX+n),r 4 0xdd,0xcb,0,0x00 idx Z80,R800 -RLC (IY+n),r 4 0xfd,0xcb,0,0x00 idx Z80,R800 - -RL r 2 0xcb,0x10 r8 Z80,R800 -RL (HL) 2 0xcb,0x16 noargs Z80,R800 -RL (IX+n) 4 0xdd,0xcb,0x16 idx Z80,R800 -RL (IY+n) 4 0xfd,0xcb,0x16 idx Z80,R800 -RL (IX+n),r 4 0xdd,0xcb,0,0x10 idx Z80,R800 -RL (IY+n),r 4 0xfd,0xcb,0,0x10 idx Z80,R800 - -RRC r 2 0xcb,0x08 r8 Z80,R800 -RRC (HL) 2 0xcb,0x0e noargs Z80,R800 -RRC (IX+n) 4 0xdd,0xcb,0x06 idx Z80,R800 -RRC (IY+n) 4 0xfd,0xcb,0x06 idx Z80,R800 -RRC (IX+n),r 4 0xdd,0xcb,0,0x08 idx Z80,R800 -RRC (IY+n),r 4 0xfd,0xcb,0,0x08 idx Z80,R800 - -RR r 2 0xcb,0x18 r8 Z80,R800 -RR (HL) 2 0xcb,0x1e noargs Z80,R800 -RR (IX+n) 4 0xdd,0xcb,0x1e idx Z80,R800 -RR (IY+n) 4 0xfd,0xcb,0x1e idx Z80,R800 -RR (IX+n),r 4 0xdd,0xcb,0,0x18 idx Z80,R800 -RR (IY+n),r 4 0xfd,0xcb,0,0x18 idx Z80,R800 - -SLA r 2 0xcb,0x20 r8 Z80,R800 -SLA (HL) 2 0xcb,0x26 noargs Z80,R800 -SLA (IX+n) 4 0xdd,0xcb,0x26 idx Z80,R800 -SLA (IY+n) 4 0xfd,0xcb,0x26 idx Z80,R800 -SLA (IX+n),r 4 0xdd,0xcb,0,0x20 idx Z80,R800 -SLA (IY+n),r 4 0xfd,0xcb,0,0x20 idx Z80,R800 - -SLL r 2 0xcb,0x30 r8 Z80 -SLL (HL) 2 0xcb,0x36 noargs Z80 -SLL (IX+n) 4 0xdd,0xcb,0x36 idx Z80 -SLL (IY+n) 4 0xfd,0xcb,0x36 idx Z80 -SLL (IX+n),r 4 0xdd,0xcb,0,0x30 idx Z80 -SLL (IY+n),r 4 0xfd,0xcb,0,0x30 idx Z80 - -SRA r 2 0xcb,0x28 r8 Z80,R800 -SRA (HL) 2 0xcb,0x2e noargs Z80,R800 -SRA (IX+n) 4 0xdd,0xcb,0x2e idx Z80,R800 -SRA (IY+n) 4 0xfd,0xcb,0x2e idx Z80,R800 -SRA (IX+n),r 4 0xdd,0xcb,0,0x28 idx Z80,R800 -SRA (IY+n),r 4 0xfd,0xcb,0,0x28 idx Z80,R800 - -SRL r 2 0xcb,0x38 r8 Z80,R800 -SRL (HL) 2 0xcb,0x3e noargs Z80,R800 -SRL (IX+n) 4 0xdd,0xcb,0x3e idx Z80,R800 -SRL (IY+n) 4 0xfd,0xcb,0x3e idx Z80,R800 -SRL (IX+n),r 4 0xdd,0xcb,0,0x38 idx Z80,R800 -SRL (IY+n),r 4 0xfd,0xcb,0,0x38 idx Z80,R800 +RLC r 2 0xcb,0x00 rot Z80,R800 +RLC (HL) 2 0xcb,0x06 rot Z80,R800 +RLC (IX+n) 4 0xdd,0xcb,0,0x06 rot Z80,R800 +RLC (IY+n) 4 0xfd,0xcb,0,0x06 rot Z80,R800 +RLC (IX+n),r 4 0xdd,0xcb,0,0x00 rot Z80,R800 +RLC (IY+n),r 4 0xfd,0xcb,0,0x00 rot Z80,R800 + +RL r 2 0xcb,0x10 rot Z80,R800 +RL (HL) 2 0xcb,0x16 rot Z80,R800 +RL (IX+n) 4 0xdd,0xcb,0,0x16 rot Z80,R800 +RL (IY+n) 4 0xfd,0xcb,0,0x16 rot Z80,R800 +RL (IX+n),r 4 0xdd,0xcb,0,0x10 rot Z80,R800 +RL (IY+n),r 4 0xfd,0xcb,0,0x10 rot Z80,R800 + +RRC r 2 0xcb,0x08 rot Z80,R800 +RRC (HL) 2 0xcb,0x0e rot Z80,R800 +RRC (IX+n) 4 0xdd,0xcb,0,0x0e rot Z80,R800 +RRC (IY+n) 4 0xfd,0xcb,0,0x0e rot Z80,R800 +RRC (IX+n),r 4 0xdd,0xcb,0,0x08 rot Z80,R800 +RRC (IY+n),r 4 0xfd,0xcb,0,0x08 rot Z80,R800 + +RR r 2 0xcb,0x18 rot Z80,R800 +RR (HL) 2 0xcb,0x1e rot Z80,R800 +RR (IX+n) 4 0xdd,0xcb,0,0x1e rot Z80,R800 +RR (IY+n) 4 0xfd,0xcb,0,0x1e rot Z80,R800 +RR (IX+n),r 4 0xdd,0xcb,0,0x18 rot Z80,R800 +RR (IY+n),r 4 0xfd,0xcb,0,0x18 rot Z80,R800 + +SLA r 2 0xcb,0x20 rot Z80,R800 +SLA (HL) 2 0xcb,0x26 rot Z80,R800 +SLA (IX+n) 4 0xdd,0xcb,0,0x26 rot Z80,R800 +SLA (IY+n) 4 0xfd,0xcb,0,0x26 rot Z80,R800 +SLA (IX+n),r 4 0xdd,0xcb,0,0x20 rot Z80,R800 +SLA (IY+n),r 4 0xfd,0xcb,0,0x20 rot Z80,R800 + +SLL r 2 0xcb,0x30 rot Z80 +SLL (HL) 2 0xcb,0x36 rot Z80 +SLL (IX+n) 4 0xdd,0xcb,0,0x36 rot Z80 +SLL (IY+n) 4 0xfd,0xcb,0,0x36 rot Z80 +SLL (IX+n),r 4 0xdd,0xcb,0,0x30 rot Z80 +SLL (IY+n),r 4 0xfd,0xcb,0,0x30 rot Z80 + +SRA r 2 0xcb,0x28 rot Z80,R800 +SRA (HL) 2 0xcb,0x2e rot Z80,R800 +SRA (IX+n) 4 0xdd,0xcb,0,0x2e rot Z80,R800 +SRA (IY+n) 4 0xfd,0xcb,0,0x2e rot Z80,R800 +SRA (IX+n),r 4 0xdd,0xcb,0,0x28 rot Z80,R800 +SRA (IY+n),r 4 0xfd,0xcb,0,0x28 rot Z80,R800 + +SRL r 2 0xcb,0x38 rot Z80,R800 +SRL (HL) 2 0xcb,0x3e rot Z80,R800 +SRL (IX+n) 4 0xdd,0xcb,0,0x3e rot Z80,R800 +SRL (IY+n) 4 0xfd,0xcb,0,0x3e rot Z80,R800 +SRL (IX+n),r 4 0xdd,0xcb,0,0x38 rot Z80,R800 +SRL (IY+n),r 4 0xfd,0xcb,0,0x38 rot Z80,R800 # Bit manipulation group BIT imm3,r 2 0xcb,0x40 r_bit Z80,R800 diff --git a/as/target/z80/test.s b/as/target/z80/test.s @@ -554,70 +554,70 @@ CP %A,%IXH / DD BC CP %A,%IXL / DD BD CP %A,(%IX + 48) / DD BE 30 -/DDCB d 00 LD B, RLC (IX + d)* -/DDCB d 01 LD C, RLC (IX + d)* -/DDCB d 02 LD D, RLC (IX + d)* -/DDCB d 03 LD E, RLC (IX + d)* -/DDCB d 04 LD H, RLC (IX + d)* -/DDCB d 05 LD L, RLC (IX + d)* -/DDCB d 06 RLC (IX + d) -/DDCB d 07 LD A, RLC (IX + d)* -/DDCB d 08 LD B, RRC (IX + d)* -/DDCB d 09 LD C, RRC (IX + d)* -/DDCB d 0A LD D, RRC (IX + d)* -/DDCB d 0B LD E, RRC (IX + d)* -/DDCB d 0C LD H, RRC (IX + d)* -/DDCB d 0D LD L, RRC (IX + d)* -/DDCB d 0E RRC (IX + d) -/DDCB d 0F LD A, RRC (IX + d)* -/DDCB d 10 LD B, RL (IX + d)* -/DDCB d 11 LD C, RL (IX + d)* -/DDCB d 12 LD D, RL (IX + d)* -/DDCB d 13 LD E, RL (IX + d)* -/DDCB d 14 LD H, RL (IX + d)* -/DDCB d 15 LD L, RL (IX + d)* -/DDCB d 16 RL (IX + d) -/DDCB d 17 LD A, RL (IX + d)* -/DDCB d 18 LD B, RR (IX + d)* -/DDCB d 19 LD C, RR (IX + d)* -/DDCB d 1A LD D, RR (IX + d)* -/DDCB d 1B LD E, RR (IX + d)* -/DDCB d 1C LD H, RR (IX + d)* -/DDCB d 1D LD L, RR (IX + d)* -/DDCB d 1E RR (IX + d) -/DDCB d 1F LD A, RR (IX + d)* -/DDCB d 20 LD B, SLA (IX + d)* -/DDCB d 21 LD C, SLA (IX + d)* -/DDCB d 22 LD D, SLA (IX + d)* -/DDCB d 23 LD E, SLA (IX + d)* -/DDCB d 24 LD H, SLA (IX + d)* -/DDCB d 25 LD L, SLA (IX + d)* -/DDCB d 26 SLA (IX + d) -/DDCB d 27 LD A, SLA (IX + d)* -/DDCB d 28 LD B, SRA (IX + d)* -/DDCB d 29 LD C, SRA (IX + d)* -/DDCB d 2A LD D, SRA (IX + d)* -/DDCB d 2B LD E, SRA (IX + d)* -/DDCB d 2C LD H, SRA (IX + d)* -/DDCB d 2D LD L, SRA (IX + d)* -/DDCB d 2E SRA (IX + d) -/DDCB d 2F LD A, SRA (IX + d)* -/DDCB d 30 LD B, SLL (IX + d)* -/DDCB d 31 LD C, SLL (IX + d)* -/DDCB d 32 LD D, SLL (IX + d)* -/DDCB d 33 LD E, SLL (IX + d)* -/DDCB d 34 LD H, SLL (IX + d)* -/DDCB d 35 LD L, SLL (IX + d)* -/DDCB d 36 SLL (IX + d)* -/DDCB d 37 LD A, SLL (IX + d)* -/DDCB d 38 LD B, SRL (IX + d)* -/DDCB d 39 LD C, SRL (IX + d)* -/DDCB d 3A LD D, SRL (IX + d)* -/DDCB d 3B LD E, SRL (IX + d)* -/DDCB d 3C LD H, SRL (IX + d)* -/DDCB d 3D LD L, SRL (IX + d)* -/DDCB d 3E SRL (IX + d) -/DDCB d 3F LD A, SRL (IX + d)* + RLC (%IX + 16),%B / DD CB 10 00 + RLC (%IX + 32),%C / DD CB 20 01 + RLC (%IX + 48),%D / DD CB 30 02 + RLC (%IX + 64),%E / DD CB 40 03 + RLC (%IX + 16),%H / DD CB 10 04 + RLC (%IX + 32),%L / DD CB 20 05 + RLC (%IX + 64) / DD CB 40 06 + RLC (%IX + 16),%A / DD CB 10 07 + RRC (%IX + 32),%B / DD CB 20 08 + RRC (%IX + 48),%C / DD CB 30 09 + RRC (%IX + 64),%D / DD CB 40 0A + RRC (%IX + 16),%E / DD CB 10 0B + RRC (%IX + 32),%H / DD CB 20 0C + RRC (%IX + 48),%L / DD CB 30 0D + RRC (%IX + 16) / DD CB 10 0E + RRC (%IX + 16),%A / DD CB 10 0F + RL (%IX + 32),%B / DD CB 20 10 + RL (%IX + 48),%C / DD CB 30 11 + RL (%IX + 64),%D / DD CB 40 12 + RL (%IX + 16),%E / DD CB 10 13 + RL (%IX + 32),%H / DD CB 20 14 + RL (%IX + 48),%L / DD CB 30 15 + RL (%IX + 32) / DD CB 20 16 + RL (%IX + 16),%A / DD CB 10 17 + RR (%IX + 32),%B / DD CB 20 18 + RR (%IX + 48),%C / DD CB 30 19 + RR (%IX + 64),%D / DD CB 40 1A + RR (%IX + 16),%E / DD CB 10 1B + RR (%IX + 32),%H / DD CB 20 1C + RR (%IX + 48),%L / DD CB 30 1D + RR (%IX + 48) / DD CB 30 1E + RR (%IX + 16),%A / DD CB 10 1F + SLA (%IX + 32),%B / DD CB 20 20 + SLA (%IX + 48),%C / DD CB 30 21 + SLA (%IX + 64),%D / DD CB 40 22 + SLA (%IX + 16),%E / DD CB 10 23 + SLA (%IX + 32),%H / DD CB 20 24 + SLA (%IX + 48),%L / DD CB 30 25 + SLA (%IX + 64) / DD CB 40 26 + SLA (%IX + 16),%A / DD CB 10 27 + SRA (%IX + 32),%B / DD CB 20 28 + SRA (%IX + 48),%C / DD CB 30 29 + SRA (%IX + 64),%D / DD CB 40 2A + SRA (%IX + 16),%E / DD CB 10 2B + SRA (%IX + 32),%H / DD CB 20 2C + SRA (%IX + 48),%L / DD CB 30 2D + SRA (%IX + 16) / DD CB 10 2E + SRA (%IX + 16),%A / DD CB 10 2F + SLL (%IX + 32),%B / DD CB 20 30 + SLL (%IX + 48),%C / DD CB 30 31 + SLL (%IX + 64),%D / DD CB 40 32 + SLL (%IX + 16),%E / DD CB 10 33 + SLL (%IX + 32),%H / DD CB 20 34 + SLL (%IX + 48),%L / DD CB 30 35 + SLL (%IX + 32) / DD CB 20 36 + SLL (%IX + 16),%A / DD CB 10 37 + SRL (%IX + 32),%B / DD CB 20 38 + SRL (%IX + 48),%C / DD CB 30 39 + SRL (%IX + 64),%D / DD CB 40 3A + SRL (%IX + 16),%E / DD CB 10 3B + SRL (%IX + 32),%H / DD CB 20 3C + SRL (%IX + 48),%L / DD CB 30 3D + SRL (%IX + 48) / DD CB 30 3E + SRL (%IX + 64),%A / DD CB 40 3F /DDCB d 46 BIT 0, (IX + d) /DDCB d 4E BIT 1, (IX + d) /DDCB d 56 BIT 2, (IX + d) @@ -927,70 +927,70 @@ CP %A,%IYH / FD BC CP %A,%IYL / FD BD CP %A,(%IY + 48) / FD BE 30 -/FDCB d 00 LD B, RLC (IY + d)* -/FDCB d 01 LD C, RLC (IY + d)* -/FDCB d 02 LD D, RLC (IY + d)* -/FDCB d 03 LD E, RLC (IY + d)* -/FDCB d 04 LD H, RLC (IY + d)* -/FDCB d 05 LD L, RLC (IY + d)* -/FDCB d 06 RLC (IY + d) -/FDCB d 07 LD A, RLC (IY + d)* -/FDCB d 08 LD B, RRC (IY + d)* -/FDCB d 09 LD C, RRC (IY + d)* -/FDCB d 0A LD D, RRC (IY + d)* -/FDCB d 0B LD E, RRC (IY + d)* -/FDCB d 0C LD H, RRC (IY + d)* -/FDCB d 0D LD L, RRC (IY + d)* -/FDCB d 0E RRC (IY + d) -/FDCB d 0F LD A, RRC (IY + d)* -/FDCB d 10 LD B, RL (IY + d)* -/FDCB d 11 LD C, RL (IY + d)* -/FDCB d 12 LD D, RL (IY + d)* -/FDCB d 13 LD E, RL (IY + d)* -/FDCB d 14 LD H, RL (IY + d)* -/FDCB d 15 LD L, RL (IY + d)* -/FDCB d 16 RL (IY + d) -/FDCB d 17 LD A, RL (IY + d)* -/FDCB d 18 LD B, RR (IY + d)* -/FDCB d 19 LD C, RR (IY + d)* -/FDCB d 1A LD D, RR (IY + d)* -/FDCB d 1B LD E, RR (IY + d)* -/FDCB d 1C LD H, RR (IY + d)* -/FDCB d 1D LD L, RR (IY + d)* -/FDCB d 1E RR (IY + d) -/FDCB d 1F LD A, RR (IY + d)* -/FDCB d 20 LD B, SLA (IY + d)* -/FDCB d 21 LD C, SLA (IY + d)* -/FDCB d 22 LD D, SLA (IY + d)* -/FDCB d 23 LD E, SLA (IY + d)* -/FDCB d 24 LD H, SLA (IY + d)* -/FDCB d 25 LD L, SLA (IY + d)* -/FDCB d 26 SLA (IY + d) -/FDCB d 27 LD A, SLA (IY + d)* -/FDCB d 28 LD B, SRA (IY + d)* -/FDCB d 29 LD C, SRA (IY + d)* -/FDCB d 2A LD D, SRA (IY + d)* -/FDCB d 2B LD E, SRA (IY + d)* -/FDCB d 2C LD H, SRA (IY + d)* -/FDCB d 2D LD L, SRA (IY + d)* -/FDCB d 2E SRA (IY + d) -/FDCB d 2F LD A, SRA (IY + d) -/*FDCB d 30 LD B, SLL (IY + d)* -/FDCB d 31 LD C, SLL (IY + d)* -/FDCB d 32 LD D, SLL (IY + d)* -/FDCB d 33 LD E, SLL (IY + d)* -/FDCB d 34 LD H, SLL (IY + d)* -/FDCB d 35 LD L, SLL (IY + d)* -/FDCB d 36 SLL (IY + d)* -/FDCB d 37 LD A, SLL (IY + d)* -/FDCB d 38 LD B, SRL (IY + d)* -/FDCB d 39 LD C, SRL (IY + d)* -/FDCB d 3A LD D, SRL (IY + d)* -/FDCB d 3B LD E, SRL (IY + d)* -/FDCB d 3C LD H, SRL (IY + d)* -/FDCB d 3D LD L, SRL (IY + d)* -/FDCB d 3E SRL (IY + d) -/FDCB d 3F LD A, SRL (IY + d)* + RLC (%IY + 16),%B / FD CB 10 00 + RLC (%IY + 32),%C / FD CB 20 01 + RLC (%IY + 48),%D / FD CB 30 02 + RLC (%IY + 64),%E / FD CB 40 03 + RLC (%IY + 16),%H / FD CB 10 04 + RLC (%IY + 32),%L / FD CB 20 05 + RLC (%IY + 16) / FD CB 10 06 + RLC (%IY + 32),%A / FD CB 20 07 + RRC (%IY + 48),%B / FD CB 30 08 + RRC (%IY + 64),%C / FD CB 40 09 + RRC (%IY + 16),%D / FD CB 10 0A + RRC (%IY + 32),%E / FD CB 20 0B + RRC (%IY + 48),%H / FD CB 30 0C + RRC (%IY + 64),%L / FD CB 40 0D + RRC (%IY + 32) / FD CB 20 0E + RRC (%IY + 16),%A / FD CB 10 0F + RL (%IY + 32),%B / FD CB 20 10 + RL (%IY + 48),%C / FD CB 30 11 + RL (%IY + 64),%D / FD CB 40 12 + RL (%IY + 16),%E / FD CB 10 13 + RL (%IY + 32),%H / FD CB 20 14 + RL (%IY + 48),%L / FD CB 30 15 + RL (%IY + 48) / FD CB 30 16 + RL (%IY + 16),%A / FD CB 10 17 + RR (%IY + 32),%B / FD CB 20 18 + RR (%IY + 48),%C / FD CB 30 19 + RR (%IY + 64),%D / FD CB 40 1A + RR (%IY + 16),%E / FD CB 10 1B + RR (%IY + 32),%H / FD CB 20 1C + RR (%IY + 48),%L / FD CB 30 1D + RR (%IY + 64) / FD CB 40 1E + RR (%IY + 16),%A / FD CB 10 1F + SLA (%IY + 32),%B / FD CB 20 20 + SLA (%IY + 48),%C / FD CB 30 21 + SLA (%IY + 64),%D / FD CB 40 22 + SLA (%IY + 16),%E / FD CB 10 23 + SLA (%IY + 32),%H / FD CB 20 24 + SLA (%IY + 48),%L / FD CB 30 25 + SLA (%IY + 16) / FD CB 10 26 + SLA (%IY + 16),%A / FD CB 10 27 + SRA (%IY + 32),%B / FD CB 20 28 + SRA (%IY + 48),%C / FD CB 30 29 + SRA (%IY + 64),%D / FD CB 40 2A + SRA (%IY + 16),%E / FD CB 10 2B + SRA (%IY + 32),%H / FD CB 20 2C + SRA (%IY + 48),%L / FD CB 30 2D + SRA (%IY + 32) / FD CB 20 2E + SRA (%IY + 48),%A / FD CB 30 2F + SLL (%IY + 16),%B / FD CB 10 30 + SLL (%IY + 32),%C / FD CB 20 31 + SLL (%IY + 48),%D / FD CB 30 32 + SLL (%IY + 64),%E / FD CB 40 33 + SLL (%IY + 16),%H / FD CB 10 34 + SLL (%IY + 32),%L / FD CB 20 35 + SLL (%IY + 48) / FD CB 30 36 + SLL (%IY + 16),%A / FD CB 10 37 + SRL (%IY + 32),%B / FD CB 20 38 + SRL (%IY + 48),%C / FD CB 30 39 + SRL (%IY + 64),%D / FD CB 40 3A + SRL (%IY + 16),%E / FD CB 10 3B + SRL (%IY + 32),%H / FD CB 20 3C + SRL (%IY + 48),%L / FD CB 30 3D + SRL (%IY + 64) / FD CB 40 3E + SRL (%IY + 16),%A / FD CB 10 3F /FDCB d 46 BIT 0, (IY + d) /FDCB d 4E BIT 1, (IY + d) /FDCB d 56 BIT 2, (IY + d)