scc

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

commit be8c6aee7423c00b246e31ab7027637a5f318810
parent c26f53976fe1a56c6190e42c233f749946ee30af
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Thu, 28 Dec 2017 15:36:30 +0000

[as-z80] Add bit operations

Diffstat:
Mas/target/x80/ins.c | 59++++++++++++-----------------------------------------------
Mas/target/x80/x80.dat | 146++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mas/target/z80/test.s | 544++++++++++++++++++++++++++++++++++++++++----------------------------------------
3 files changed, 357 insertions(+), 392 deletions(-)

diff --git a/as/target/x80/ins.c b/as/target/x80/ins.c @@ -404,21 +404,28 @@ idx(Op *op, Node **args) } void -rot(Op *op, Node **args) +rot_bit(Op *op, Node **args) { Node *par = args[0]; unsigned char buf[5]; int n = op->size; - unsigned val; + unsigned val, npar = 0; memcpy(buf, op->bytes, n); + + par = args[0]; + if (par->addr == AIMM) { + buf[n-1] |= par->sym->value << 3; + par = args[npar = 1]; + } + switch (par->addr) { case AINDEX: val = par->left->right->sym->value; buf[n-2] = val; - if (!args[1]) + par = args[npar+1]; + if (!par) break; - par = args[1]; case AREG: val = reg2int(par->sym->argtype); buf[n-1] |= val; @@ -428,6 +435,7 @@ rot(Op *op, Node **args) default: abort(); } + emit(buf, n); } @@ -447,49 +455,6 @@ im(Op *op, Node **args) } void -r_bit(Op *op, Node **args) -{ - Node *par1, *par2; - unsigned char buf[4]; - int n = op->size; - - par1 = args[0]; - par2 = args[1]; - memcpy(buf, op->bytes, n); - buf[n-1] |= reg2int(par2->sym->argtype) | - par1->sym->value << 3; - emit(buf, n); -} - -void -r_idx_bit(Op *op, Node **args) -{ - /* TODO */ - abort(); -} - -void -bit(Op *op, Node **args) -{ - Node *par; - unsigned char buf[2]; - unsigned val; - int n = op->size; - - val = args[0]->sym->value; - memcpy(buf, op->bytes, n); - buf[n-1] |= val << 3; - emit(buf, n); -} - -void -idx_bit(Op *op, Node **args) -{ - /* TODO */ - abort(); -} - -void cc(Op *op, Node **args) { unsigned char buf[4]; diff --git a/as/target/x80/x80.dat b/as/target/x80/x80.dat @@ -238,81 +238,81 @@ 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 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 +RLC r 2 0xcb,0x00 rot_bit Z80,R800 +RLC (HL) 2 0xcb,0x06 rot_bit Z80,R800 +RLC (IX+n) 4 0xdd,0xcb,0,0x06 rot_bit Z80,R800 +RLC (IY+n) 4 0xfd,0xcb,0,0x06 rot_bit Z80,R800 +RLC (IX+n),r 4 0xdd,0xcb,0,0x00 rot_bit Z80,R800 +RLC (IY+n),r 4 0xfd,0xcb,0,0x00 rot_bit Z80,R800 + +RL r 2 0xcb,0x10 rot_bit Z80,R800 +RL (HL) 2 0xcb,0x16 rot_bit Z80,R800 +RL (IX+n) 4 0xdd,0xcb,0,0x16 rot_bit Z80,R800 +RL (IY+n) 4 0xfd,0xcb,0,0x16 rot_bit Z80,R800 +RL (IX+n),r 4 0xdd,0xcb,0,0x10 rot_bit Z80,R800 +RL (IY+n),r 4 0xfd,0xcb,0,0x10 rot_bit Z80,R800 + +RRC r 2 0xcb,0x08 rot_bit Z80,R800 +RRC (HL) 2 0xcb,0x0e rot_bit Z80,R800 +RRC (IX+n) 4 0xdd,0xcb,0,0x0e rot_bit Z80,R800 +RRC (IY+n) 4 0xfd,0xcb,0,0x0e rot_bit Z80,R800 +RRC (IX+n),r 4 0xdd,0xcb,0,0x08 rot_bit Z80,R800 +RRC (IY+n),r 4 0xfd,0xcb,0,0x08 rot_bit Z80,R800 + +RR r 2 0xcb,0x18 rot_bit Z80,R800 +RR (HL) 2 0xcb,0x1e rot_bit Z80,R800 +RR (IX+n) 4 0xdd,0xcb,0,0x1e rot_bit Z80,R800 +RR (IY+n) 4 0xfd,0xcb,0,0x1e rot_bit Z80,R800 +RR (IX+n),r 4 0xdd,0xcb,0,0x18 rot_bit Z80,R800 +RR (IY+n),r 4 0xfd,0xcb,0,0x18 rot_bit Z80,R800 + +SLA r 2 0xcb,0x20 rot_bit Z80,R800 +SLA (HL) 2 0xcb,0x26 rot_bit Z80,R800 +SLA (IX+n) 4 0xdd,0xcb,0,0x26 rot_bit Z80,R800 +SLA (IY+n) 4 0xfd,0xcb,0,0x26 rot_bit Z80,R800 +SLA (IX+n),r 4 0xdd,0xcb,0,0x20 rot_bit Z80,R800 +SLA (IY+n),r 4 0xfd,0xcb,0,0x20 rot_bit Z80,R800 + +SLL r 2 0xcb,0x30 rot_bit Z80 +SLL (HL) 2 0xcb,0x36 rot_bit Z80 +SLL (IX+n) 4 0xdd,0xcb,0,0x36 rot_bit Z80 +SLL (IY+n) 4 0xfd,0xcb,0,0x36 rot_bit Z80 +SLL (IX+n),r 4 0xdd,0xcb,0,0x30 rot_bit Z80 +SLL (IY+n),r 4 0xfd,0xcb,0,0x30 rot_bit Z80 + +SRA r 2 0xcb,0x28 rot_bit Z80,R800 +SRA (HL) 2 0xcb,0x2e rot_bit Z80,R800 +SRA (IX+n) 4 0xdd,0xcb,0,0x2e rot_bit Z80,R800 +SRA (IY+n) 4 0xfd,0xcb,0,0x2e rot_bit Z80,R800 +SRA (IX+n),r 4 0xdd,0xcb,0,0x28 rot_bit Z80,R800 +SRA (IY+n),r 4 0xfd,0xcb,0,0x28 rot_bit Z80,R800 + +SRL r 2 0xcb,0x38 rot_bit Z80,R800 +SRL (HL) 2 0xcb,0x3e rot_bit Z80,R800 +SRL (IX+n) 4 0xdd,0xcb,0,0x3e rot_bit Z80,R800 +SRL (IY+n) 4 0xfd,0xcb,0,0x3e rot_bit Z80,R800 +SRL (IX+n),r 4 0xdd,0xcb,0,0x38 rot_bit Z80,R800 +SRL (IY+n),r 4 0xfd,0xcb,0,0x38 rot_bit Z80,R800 # Bit manipulation group -BIT imm3,r 2 0xcb,0x40 r_bit Z80,R800 -BIT imm3,(HL) 2 0xcb,0x46 bit Z80,R800 -BIT imm3,(IX+n) 4 0xdd,0xcb,0,0x46 idx_bit Z80,R800 -BIT imm3,(IY+n) 4 0xfd,0xcb,0,0x46 idx_bit Z80,R800 - -SET imm3,r 2 0xcb,0xc0 r_bit Z80,R800 -SET imm3,(HL) 2 0xcb,0xc6 bit Z80,R800 -SET imm3,(IX+n) 4 0xdd,0xcb,0,0xc6 idx_bit Z80,R800 -SET imm3,(IY+n) 4 0xfd,0xcb,0,0xc6 idx_bit Z80,R800 -SET imm3,(IX+n),r 4 0xdd,0xcb,0,0xc0 r_idx_bit Z80,R800 -SET imm3,(IY+n),r 4 0xfd,0xcb,0,0xc0 r_idx_bit Z80,R800 - -RES imm3,r 2 0xcb,0x80 r_bit Z80,R800 -RES imm3,(HL) 2 0xcb,0x86 bit Z80,R800 -RES imm3,(IX+n) 4 0xdd,0xcb,0,0x86 idx_bit Z80,R800 -RES imm3,(IY+n) 4 0xfd,0xcb,0,0x86 idx_bit Z80,R800 -RES imm3,(IX+n),r 4 0xdd,0xcb,0,0x80 r_idx_bit Z80,R800 -RES imm3,(IY+n),r 4 0xfd,0xcb,0,0x80 r_idx_bit Z80,R800 +BIT imm3,r 2 0xcb,0x40 rot_bit Z80,R800 +BIT imm3,(HL) 2 0xcb,0x46 rot_bit Z80,R800 +BIT imm3,(IX+n) 4 0xdd,0xcb,0,0x46 rot_bit Z80,R800 +BIT imm3,(IY+n) 4 0xfd,0xcb,0,0x46 rot_bit Z80,R800 + +SET imm3,r 2 0xcb,0xc0 rot_bit Z80,R800 +SET imm3,(HL) 2 0xcb,0xc6 rot_bit Z80,R800 +SET imm3,(IX+n) 4 0xdd,0xcb,0,0xc6 rot_bit Z80,R800 +SET imm3,(IY+n) 4 0xfd,0xcb,0,0xc6 rot_bit Z80,R800 +SET imm3,(IX+n),r 4 0xdd,0xcb,0,0xc0 rot_bit Z80,R800 +SET imm3,(IY+n),r 4 0xfd,0xcb,0,0xc0 rot_bit Z80,R800 + +RES imm3,r 2 0xcb,0x80 rot_bit Z80,R800 +RES imm3,(HL) 2 0xcb,0x86 rot_bit Z80,R800 +RES imm3,(IX+n) 4 0xdd,0xcb,0,0x86 rot_bit Z80,R800 +RES imm3,(IY+n) 4 0xfd,0xcb,0,0x86 rot_bit Z80,R800 +RES imm3,(IX+n),r 4 0xdd,0xcb,0,0x80 rot_bit Z80,R800 +RES imm3,(IY+n),r 4 0xfd,0xcb,0,0x80 rot_bit Z80,R800 # Input and output group IN A,(n) 2 0xdb imm8 Z80,R800 diff --git a/as/target/z80/test.s b/as/target/z80/test.s @@ -618,142 +618,142 @@ 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) -/DDCB d 5E BIT 3, (IX + d) -/DDCB d 66 BIT 4, (IX + d) -/DDCB d 6E BIT 5, (IX + d) -/DDCB d 76 BIT 6, (IX + d) -/DDCB d 7E BIT 7, (IX + d) -/DDCB d 80 LD B, RES 0, (IX + d)* -/DDCB d 81 LD C, RES 0, (IX + d)* -/DDCB d 82 LD D, RES 0, (IX + d)* -/DDCB d 83 LD E, RES 0, (IX + d)* -/DDCB d 84 LD H, RES 0, (IX + d)* -/DDCB d 85 LD L, RES 0, (IX + d)* -/DDCB d 86 RES 0, (IX + d) -/DDCB d 87 LD A, RES 0, (IX + d)* -/DDCB d 88 LD B, RES 1, (IX + d)* -/DDCB d 89 LD C, RES 1, (IX + d)* -/DDCB d 8A LD D, RES 1, (IX + d)* -/DDCB d 8B LD E, RES 1, (IX + d)* -/DDCB d 8C LD H, RES 1, (IX + d)* -/DDCB d 8D LD L, RES 1, (IX + d)* -/DDCB d 8E RES 1, (IX + d) -/DDCB d 8F LD A, RES 1, (IX + d)* -/DDCB d 90 LD B, RES 2, (IX + d)* -/DDCB d 91 LD C, RES 2, (IX + d)* -/DDCB d 92 LD D, RES 2, (IX + d)* -/DDCB d 93 LD E, RES 2, (IX + d)* -/DDCB d 94 LD H, RES 2, (IX + d)* -/DDCB d 95 LD L, RES 2, (IX + d)* -/DDCB d 96 RES 2, (IX + d) -/DDCB d 97 LD A, RES 2, (IX + d)* -/DDCB d 98 LD B, RES 3, (IX + d)* -/DDCB d 99 LD C, RES 3, (IX + d)* -/DDCB d 9A LD D, RES 3, (IX + d)* -/DDCB d 9B LD E, RES 3, (IX + d)* -/DDCB d 9C LD H, RES 3, (IX + d)* -/DDCB d 9D LD L, RES 3, (IX + d)* -/DDCB d 9E RES 3, (IX + d) -/DDCB d 9F LD A, RES 3, (IX + d)* -/DDCB d A0 LD B, RES 4, (IX + d)* -/DCB d A1 LD C, RES 4, (IX + d)* -/DDCB d A2 LD D, RES 4, (IX + d)* -/DDCB d A3 LD E, RES 4, (IX + d)* -/DDCB d A4 LD H, RES 4, (IX + d)* -/DDCB d A5 LD L, RES 4, (IX + d)* -/DDCB d A6 RES 4, (IX + d) -/DDCB d A7 LD A, RES 4, (IX + d)* -/DDCB d A8 LD B, RES 5, (IX + d)* -/DDCB d A9 LD C, RES 5, (IX + d)* -/DDCB d AA LD D, RES 5, (IX + d)* -/DDCB d AB LD E, RES 5, (IX + d)* -/DDCB d AC LD H, RES 5, (IX + d)* -/DDCB d AD LD L, RES 5, (IX + d)* -/DDCB d AE RES 5, (IX + d) -/DDCB d AF LD A, RES 5, (IX + d)* -/DDCB d B0 LD B, RES 6, (IX + d)* -/DDCB d B1 LD C, RES 6, (IX + d)* -/DDCB d B2 LD D, RES 6, (IX + d)* -/DDCB d B3 LD E, RES 6, (IX + d)* -/DDCB d B4 LD H, RES 6, (IX + d)* -/DDCB d B5 LD L, RES 6, (IX + d)* -/DDCB d B6 RES 6, (IX + d) -/DDCB d B7 LD A, RES 6, (IX + d)* -/DDCB d B8 LD B, RES 7, (IX + d)* -/DDCB d B9 LD C, RES 7, (IX + d)* -/DDCB d BA LD D, RES 7, (IX + d)* -/DDCB d BB LD E, RES 7, (IX + d)* -/DDCB d BC LD H, RES 7, (IX + d)* -/DDCB d BD LD L, RES 7, (IX + d)* -/DDCB d BE RES 7, (IX + d) -/DDCB d BF LD A, RES 7, (IX + d)* -/DDCB d C0 LD B, SET 0, (IX + d)* -/DDCB d C1 LD C, SET 0, (IX + d)* -/DDCB d C2 LD D, SET 0, (IX + d)* -/DDCB d C3 LD E, SET 0, (IX + d)* -/DDCB d C4 LD H, SET 0, (IX + d)* -/DDCB d C5 LD L, SET 0, (IX + d)* -/DDCB d C6 SET 0, (IX + d) -/DDCB d C7 LD A, SET 0, (IX + d)* -/DDCB d C8 LD B, SET 1, (IX + d)* -/DDCB d C9 LD C, SET 1, (IX + d)* -/DDCB d CA LD D, SET 1, (IX + d)* -/DDCB d CB LD E, SET 1, (IX + d)* -/DDCB d CC LD H, SET 1, (IX + d)* -/DDCB d CD LD L, SET 1, (IX + d)* -/DDCB d CE SET 1, (IX + d) -/DDCB d CF LD A, SET 1, (IX + d)* -/DDCB d D0 LD B, SET 2, (IX + d)* -/DDCB d D1 LD C, SET 2, (IX + d)* -/DDCB d D2 LD D, SET 2, (IX + d)* -/DDCB d D3 LD E, SET 2, (IX + d)* -/DDCB d D4 LD H, SET 2, (IX + d)* -/DDCB d D5 LD L, SET 2, (IX + d)* -/DDCB d D6 SET 2, (IX + d) -/DDCB d D7 LD A, SET 2, (IX + d)* -/DDCB d D8 LD B, SET 3, (IX + d)* -/DDCB d D9 LD C, SET 3, (IX + d)* -/DDCB d DA LD D, SET 3, (IX + d)* -/DDCB d DB LD E, SET 3, (IX + d)* -/DDCB d DC LD H, SET 3, (IX + d)* -/DDCB d DD LD L, SET 3, (IX + d)* -/DDCB d DE SET 3, (IX + d) -/DDCB d DF LD A, SET 3, (IX + d)* -/DDCB d E0 LD B, SET 4, (IX + d)* -/DDCB d E1 LD C, SET 4, (IX + d)* -/DDCB d E2 LD D, SET 4, (IX + d)* -/DDCB d E3 LD E, SET 4, (IX + d)* -/DDCB d E4 LD H, SET 4, (IX + d)* -/DDCB d E5 LD L, SET 4, (IX + d)* -/DDCB d E6 SET 4, (IX + d) -/DDCB d E7 LD A, SET 4, (IX + d)* -/DDCB d E8 LD B, SET 5, (IX + d)* -/DDCB d E9 LD C, SET 5, (IX + d)* -/DDCB d EA LD D, SET 5, (IX + d)* -/DDCB d EB LD E, SET 5, (IX + d)* -/DDCB d EC LD H, SET 5, (IX + d)* -/DDCB d ED LD L, SET 5, (IX + d)* -/DDCB d EE SET 5, (IX + d) -/DDCB d EF LD A, SET 5, (IX + d)* -/DDCB d F0 LD B, SET 6, (IX + d)* -/DDCB d F1 LD C, SET 6, (IX + d)* -/DDCB d F2 LD D, SET 6, (IX + d)* -/DDCB d F3 LD E, SET 6, (IX + d)* -/DDCB d F4 LD H, SET 6, (IX + d)* -/DDCB d F5 LD L, SET 6, (IX + d)* -/DDCB d F6 SET 6, (IX + d) -/DDCB d F7 LD A, SET 6, (IX + d)* -/DDCB d F8 LD B, SET 7, (IX + d)* -/DDCB d F9 LD C, SET 7, (IX + d)* -/DDCB d FA LD D, SET 7, (IX + d)* -/DDCB d FB LD E, SET 7, (IX + d)* -/DDCB d FC LD H, SET 7, (IX + d)* -/DDCB d FD LD L, SET 7, (IX + d)* -/DDCB d FE SET 7, (IX + d) -/DDCB d FF LD A, SET 7, (IX + d)* + BIT 0,(%IX + 16) / DD CB 10 46 + BIT 1,(%IX + 32) / DD CB 20 4E + BIT 2,(%IX + 48) / DD CB 30 56 + BIT 3,(%IX + 64) / DD CB 40 5E + BIT 4,(%IX + 16) / DD CB 10 66 + BIT 5,(%IX + 32) / DD CB 20 6E + BIT 6,(%IX + 48) / DD CB 30 76 + BIT 7,(%IX + 64) / DD CB 40 7E + RES 0,(%IX + 16),%B / DD CB 10 80 + RES 0,(%IX + 32),%C / DD CB 20 81 + RES 0,(%IX + 48),%D / DD CB 30 82 + RES 0,(%IX + 64),%E / DD CB 40 83 + RES 0,(%IX + 16),%H / DD CB 10 84 + RES 0,(%IX + 32),%L / DD CB 20 85 + RES 0,(%IX + 48) / DD CB 30 86 + RES 0,(%IX + 64),%A / DD CB 40 87 + RES 1,(%IX + 16),%B / DD CB 10 88 + RES 1,(%IX + 32),%C / DD CB 20 89 + RES 1,(%IX + 48),%D / DD CB 30 8A + RES 1,(%IX + 64),%E / DD CB 40 8B + RES 1,(%IX + 16),%H / DD CB 10 8C + RES 1,(%IX + 32),%L / DD CB 20 8D + RES 1,(%IX + 48) / DD CB 30 8E + RES 1,(%IX + 64),%A / DD CB 40 8F + RES 2,(%IX + 16),%B / DD CB 10 90 + RES 2,(%IX + 32),%C / DD CB 20 91 + RES 2,(%IX + 48),%D / DD CB 30 92 + RES 2,(%IX + 64),%E / DD CB 40 93 + RES 2,(%IX + 16),%H / DD CB 10 94 + RES 2,(%IX + 32),%L / DD CB 20 95 + RES 2,(%IX + 48) / DD CB 30 96 + RES 2,(%IX + 64),%A / DD CB 40 97 + RES 3,(%IX + 16),%B / DD CB 10 98 + RES 3,(%IX + 32),%C / DD CB 20 99 + RES 3,(%IX + 48),%D / DD CB 30 9A + RES 3,(%IX + 64),%E / DD CB 40 9B + RES 3,(%IX + 16),%H / DD CB 10 9C + RES 3,(%IX + 32),%L / DD CB 20 9D + RES 3,(%IX + 48) / DD CB 30 9E + RES 3,(%IX + 64),%A / DD CB 40 9F + RES 4,(%IX + 16),%B / DD CB 10 A0 + RES 4,(%IX + 32),%C / DD CB 20 A1 + RES 4,(%IX + 48),%D / DD CB 30 A2 + RES 4,(%IX + 64),%E / DD CB 40 A3 + RES 4,(%IX + 16),%H / DD CB 10 A4 + RES 4,(%IX + 32),%L / DD CB 20 A5 + RES 4,(%IX + 48) / DD CB 30 A6 + RES 4,(%IX + 64),%A / DD CB 40 A7 + RES 5,(%IX + 16),%B / DD CB 10 A8 + RES 5,(%IX + 32),%C / DD CB 20 A9 + RES 5,(%IX + 48),%D / DD CB 30 AA + RES 5,(%IX + 64),%E / DD CB 40 AB + RES 5,(%IX + 16),%H / DD CB 10 AC + RES 5,(%IX + 32),%L / DD CB 20 AD + RES 5,(%IX + 48) / DD CB 30 AE + RES 5,(%IX + 64),%A / DD CB 40 AF + RES 6,(%IX + 16),%B / DD CB 10 B0 + RES 6,(%IX + 32),%C / DD CB 20 B1 + RES 6,(%IX + 48),%D / DD CB 30 B2 + RES 6,(%IX + 64),%E / DD CB 40 B3 + RES 6,(%IX + 16),%H / DD CB 10 B4 + RES 6,(%IX + 32),%L / DD CB 20 B5 + RES 6,(%IX + 48) / DD CB 30 B6 + RES 6,(%IX + 64),%A / DD CB 40 B7 + RES 7,(%IX + 16),%B / DD CB 10 B8 + RES 7,(%IX + 32),%C / DD CB 20 B9 + RES 7,(%IX + 48),%D / DD CB 30 BA + RES 7,(%IX + 64),%E / DD CB 40 BB + RES 7,(%IX + 16),%H / DD CB 10 BC + RES 7,(%IX + 32),%L / DD CB 20 BD + RES 7,(%IX + 48) / DD CB 30 BE + RES 7,(%IX + 64),%A / DD CB 40 BF + SET 0,(%IX + 16),%B / DD CB 10 C0 + SET 0,(%IX + 32),%C / DD CB 20 C1 + SET 0,(%IX + 48),%D / DD CB 30 C2 + SET 0,(%IX + 64),%E / DD CB 40 C3 + SET 0,(%IX + 16),%H / DD CB 10 C4 + SET 0,(%IX + 32),%L / DD CB 20 C5 + SET 0,(%IX + 48) / DD CB 30 C6 + SET 0,(%IX + 64),%A / DD CB 40 C7 + SET 1,(%IX + 16),%B / DD CB 10 C8 + SET 1,(%IX + 32),%C / DD CB 20 C9 + SET 1,(%IX + 48),%D / DD CB 30 CA + SET 1,(%IX + 64),%E / DD CB 40 CB + SET 1,(%IX + 16),%H / DD CB 10 CC + SET 1,(%IX + 32),%L / DD CB 20 CD + SET 1,(%IX + 48) / DD CB 30 CE + SET 1,(%IX + 64),%A / DD CB 40 CF + SET 2,(%IX + 16),%B / DD CB 10 D0 + SET 2,(%IX + 32),%C / DD CB 20 D1 + SET 2,(%IX + 48),%D / DD CB 30 D2 + SET 2,(%IX + 64),%E / DD CB 40 D3 + SET 2,(%IX + 16),%H / DD CB 10 D4 + SET 2,(%IX + 32),%L / DD CB 20 D5 + SET 2,(%IX + 48) / DD CB 30 D6 + SET 2,(%IX + 64),%A / DD CB 40 D7 + SET 3,(%IX + 16),%B / DD CB 10 D8 + SET 3,(%IX + 32),%C / DD CB 20 D9 + SET 3,(%IX + 48),%D / DD CB 30 DA + SET 3,(%IX + 64),%E / DD CB 40 DB + SET 3,(%IX + 16),%H / DD CB 10 DC + SET 3,(%IX + 32),%L / DD CB 20 DD + SET 3,(%IX + 48) / DD CB 30 DE + SET 3,(%IX + 64),%A / DD CB 40 DF + SET 4,(%IX + 16),%B / DD CB 10 E0 + SET 4,(%IX + 32),%C / DD CB 20 E1 + SET 4,(%IX + 48),%D / DD CB 30 E2 + SET 4,(%IX + 64),%E / DD CB 40 E3 + SET 4,(%IX + 16),%H / DD CB 10 E4 + SET 4,(%IX + 32),%L / DD CB 20 E5 + SET 4,(%IX + 48) / DD CB 30 E6 + SET 4,(%IX + 64),%A / DD CB 40 E7 + SET 5,(%IX + 16),%B / DD CB 10 E8 + SET 5,(%IX + 32),%C / DD CB 20 E9 + SET 5,(%IX + 48),%D / DD CB 30 EA + SET 5,(%IX + 64),%E / DD CB 40 EB + SET 5,(%IX + 16),%H / DD CB 10 EC + SET 5,(%IX + 32),%L / DD CB 20 ED + SET 5,(%IX + 48) / DD CB 30 EE + SET 5,(%IX + 64),%A / DD CB 40 EF + SET 6,(%IX + 16),%B / DD CB 10 F0 + SET 6,(%IX + 32),%C / DD CB 20 F1 + SET 6,(%IX + 48),%D / DD CB 30 F2 + SET 6,(%IX + 64),%E / DD CB 40 F3 + SET 6,(%IX + 16),%H / DD CB 10 F4 + SET 6,(%IX + 32),%L / DD CB 20 F5 + SET 6,(%IX + 48) / DD CB 30 F6 + SET 6,(%IX + 64),%A / DD CB 40 F7 + SET 7,(%IX + 16),%B / DD CB 10 F8 + SET 7,(%IX + 32),%C / DD CB 20 F9 + SET 7,(%IX + 48),%D / DD CB 30 FA + SET 7,(%IX + 64),%E / DD CB 40 FB + SET 7,(%IX + 16),%H / DD CB 10 FC + SET 7,(%IX + 32),%L / DD CB 20 FD + SET 7,(%IX + 48) / DD CB 30 FE + SET 7,(%IX + 64),%A / DD CB 40 FF POP %IX / DD E1 EX (%SP),%IX / DD E3 PUSH %IX / DD E5 @@ -991,142 +991,142 @@ 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) -/FDCB d 5E BIT 3, (IY + d) -/FDCB d 66 BIT 4, (IY + d) -/FDCB d 6E BIT 5, (IY + d) -/FDCB d 76 BIT 6, (IY + d) -/FDCB d 7E BIT 7, (IY + d) -/FDCB d 80 LD B, RES 0, (IY + d)* -/FDCB d 81 LD C, RES 0, (IY + d)* -/FDCB d 82 LD D, RES 0, (IY + d)* -/FDCB d 83 LD E, RES 0, (IY + d)* -/DCB d 84 LD H, RES 0, (IY + d)* -/FDCB d 85 LD L, RES 0, (IY + d)* -/FDCB d 86 RES 0, (IY + d) -/FDCB d 87 LD A, RES 0, (IY + d)* -/FDCB d 88 LD B, RES 1, (IY + d)* -/FDCB d 89 LD C, RES 1, (IY + d)* -/FDCB d 8A LD D, RES 1, (IY + d)* -/FDCB d 8B LD E, RES 1, (IY + d)* -/FDCB d 8C LD H, RES 1, (IY + d)* -/FDCB d 8D LD L, RES 1, (IY + d)* -/FDCB d 8E RES 1, (IY + d) -/FDCB d 8F LD A, RES 1, (IY + d)* -/FDCB d 90 LD B, RES 2, (IY + d)* -/FDCB d 91 LD C, RES 2, (IY + d)* -/FDCB d 92 LD D, RES 2, (IY + d)* -/FDCB d 93 LD E, RES 2, (IY + d)* -/FDCB d 94 LD H, RES 2, (IY + d)* -/FDCB d 95 LD L, RES 2, (IY + d)* -/FDCB d 96 RES 2, (IY + d) -/FDCB d 97 LD A, RES 2, (IY + d)* -/FDCB d 98 LD B, RES 3, (IY + d)* -/FDCB d 99 LD C, RES 3, (IY + d)* -/FDCB d 9A LD D, RES 3, (IY + d)* -/FDCB d 9B LD E, RES 3, (IY + d)* -/FDCB d 9C LD H, RES 3, (IY + d)* -/FDCB d 9D LD L, RES 3, (IY + d)* -/FDCB d 9E RES 3, (IY + d) -/FDCB d 9F LD A, RES 3, (IY + d)* -/FDCB d A0 LD B, RES 4, (IY + d)* -/FDCB d A1 LD C, RES 4, (IY + d)* -/FDCB d A2 LD D, RES 4, (IY + d)* -/FDCB d A3 LD E, RES 4, (IY + d)* -/FDCB d A4 LD H, RES 4, (IY + d)* -/FDCB d A5 LD L, RES 4, (IY + d)* -/FDCB d A6 RES 4, (IY + d) -/FDCB d A7 LD A, RES 4, (IY + d)* -/FDCB d A8 LD B, RES 5, (IY + d)* -/FDCB d A9 LD C, RES 5, (IY + d)* -/FDCB d AA LD D, RES 5, (IY + d)* -/FDCB d AB LD E, RES 5, (IY + d)* -/FDCB d AC LD H, RES 5, (IY + d)* -/FDCB d AD LD L, RES 5, (IY + d)* -/FDCB d AE RES 5, (IY + d) -/FDCB d AF LD A, RES 5, (IY + d)* -/FDCB d B0 LD B, RES 6, (IY + d)* -/FDCB d B1 LD C, RES 6, (IY + d)* -/FDCB d B2 LD D, RES 6, (IY + d)* -/FDCB d B3 LD E, RES 6, (IY + d)* -/FDCB d B4 LD H, RES 6, (IY + d)* -/FDCB d B5 LD L, RES 6, (IY + d)* -/FDCB d B6 RES 6, (IY + d) -/FDCB d B7 LD A, RES 6, (IY + d)* -/FDCB d B8 LD B, RES 7, (IY + d)* -/FDCB d B9 LD C, RES 7, (IY + d)* -/FDCB d BA LD D, RES 7, (IY + d)* -/FDCB d BB LD E, RES 7, (IY + d)* -/FDCB d BC LD H, RES 7, (IY + d)* -/FDCB d BD LD L, RES 7, (IY + d)* -/FDCB d BE RES 7, (IY + d) -/FDCB d BF LD A, RES 7, (IY + d)* -/FDCB d C0 LD B, SET 0, (IY + d)* -/FDCB d C1 LD C, SET 0, (IY + d)* -/FDCB d C2 LD D, SET 0, (IY + d)* -/FDCB d C3 LD E, SET 0, (IY + d)* -/FDCB d C4 LD H, SET 0, (IY + d)* -/FDCB d C5 LD L, SET 0, (IY + d)* -/FDCB d C6 SET 0, (IY + d) -/FDCB d C7 LD A, SET 0, (IY + d)* -/FDCB d C8 LD B, SET 1, (IY + d)* -/FDCB d C9 LD C, SET 1, (IY + d)* -/FDCB d CA LD D, SET 1, (IY + d)* -/FDCB d CB LD E, SET 1, (IY + d)* -/FDCB d CC LD H, SET 1, (IY + d)* -/FDCB d CD LD L, SET 1, (IY + d)* -/FDCB d CE SET 1, (IY + d) -/FDCB d CF LD A, SET 1, (IY + d)* -/FDCB d D0 LD B, SET 2, (IY + d)* -/FDCB d D1 LD C, SET 2, (IY + d)* -/FDCB d D2 LD D, SET 2, (IY + d)* -/FDCB d D3 LD E, SET 2, (IY + d)* -/FDCB d D4 LD H, SET 2, (IY + d)* -/FDCB d D5 LD L, SET 2, (IY + d)* -/FDCB d D6 SET 2, (IY + d) -/FDCB d D7 LD A, SET 2, (IY + d)* -/FDCB d D8 LD B, SET 3, (IY + d)* -/FDCB d D9 LD C, SET 3, (IY + d)* -/FDCB d DA LD D, SET 3, (IY + d)* -/FDCB d DB LD E, SET 3, (IY + d)* -/FDCB d DC LD H, SET 3, (IY + d)* -/FDCB d DD LD L, SET 3, (IY + d)* -/FDCB d DE SET 3, (IY + d) -/FDCB d DF LD A, SET 3, (IY + d)* -/FDCB d E0 LD B, SET 4, (IY + d)* -/FDCB d E1 LD C, SET 4, (IY + d)* -/FDCB d E2 LD D, SET 4, (IY + d)* -/FDCB d E3 LD E, SET 4, (IY + d)* -/FDCB d E4 LD H, SET 4, (IY + d)* -/FDCB d E5 LD L, SET 4, (IY + d)* -/FDCB d E6 SET 4, (IY + d) -/FDCB d E7 LD A, SET 4, (IY + d)* -/FDCB d E8 LD B, SET 5, (IY + d)* -/FDCB d E9 LD C, SET 5, (IY + d)* -/FDCB d EA LD D, SET 5, (IY + d)* -/FDCB d EB LD E, SET 5, (IY + d)* -/FDCB d EC LD H, SET 5, (IY + d)* -/FDCB d ED LD L, SET 5, (IY + d)* -/FDCB d EE SET 5, (IY + d) -/FDCB d EF LD A, SET 5, (IY + d)* -/FDCB d F0 LD B, SET 6, (IY + d)* -/FDCB d F1 LD C, SET 6, (IY + d)* -/FDCB d F2 LD D, SET 6, (IY + d)* -/FDCB d F3 LD E, SET 6, (IY + d)* -/FDCB d F4 LD H, SET 6, (IY + d)* -/FDCB d F5 LD L, SET 6, (IY + d)* -/FDCB d F6 SET 6, (IY + d) -/FDCB d F7 LD A, SET 6, (IY + d)* -/FDCB d F8 LD B, SET 7, (IY + d)* -/FDCB d F9 LD C, SET 7, (IY + d)* -/FDCB d FA LD D, SET 7, (IY + d)* -/FDCB d FB LD E, SET 7, (IY + d)* -/FDCB d FC LD H, SET 7, (IY + d)* -/FDCB d FD LD L, SET 7, (IY + d)* -/FDCB d FE SET 7, (IY + d) -/FDCB d FF LD A, SET 7, (IY + d)* + BIT 0,(%IY + 16) / FD CB 10 46 + BIT 1,(%IY + 32) / FD CB 20 4E + BIT 2,(%IY + 48) / FD CB 30 56 + BIT 3,(%IY + 64) / FD CB 40 5E + BIT 4,(%IY + 16) / FD CB 10 66 + BIT 5,(%IY + 32) / FD CB 20 6E + BIT 6,(%IY + 48) / FD CB 30 76 + BIT 7,(%IY + 64) / FD CB 40 7E + RES 0,(%IY + 16),%B / FD CB 10 80 + RES 0,(%IY + 32),%C / FD CB 20 81 + RES 0,(%IY + 48),%D / FD CB 30 82 + RES 0,(%IY + 64),%E / FD CB 40 83 + RES 0,(%IY + 16),%H / FD CB 10 84 + RES 0,(%IY + 32),%L / FD CB 20 85 + RES 0,(%IY + 48) / FD CB 30 86 + RES 0,(%IY + 64),%A / FD CB 40 87 + RES 1,(%IY + 16),%B / FD CB 10 88 + RES 1,(%IY + 32),%C / FD CB 20 89 + RES 1,(%IY + 48),%D / FD CB 30 8A + RES 1,(%IY + 64),%E / FD CB 40 8B + RES 1,(%IY + 16),%H / FD CB 10 8C + RES 1,(%IY + 32),%L / FD CB 20 8D + RES 1,(%IY + 48) / FD CB 30 8E + RES 1,(%IY + 64),%A / FD CB 40 8F + RES 2,(%IY + 16),%B / FD CB 10 90 + RES 2,(%IY + 32),%C / FD CB 20 91 + RES 2,(%IY + 48),%D / FD CB 30 92 + RES 2,(%IY + 64),%E / FD CB 40 93 + RES 2,(%IY + 16),%H / FD CB 10 94 + RES 2,(%IY + 32),%L / FD CB 20 95 + RES 2,(%IY + 48) / FD CB 30 96 + RES 2,(%IY + 64),%A / FD CB 40 97 + RES 3,(%IY + 16),%B / FD CB 10 98 + RES 3,(%IY + 32),%C / FD CB 20 99 + RES 3,(%IY + 48),%D / FD CB 30 9A + RES 3,(%IY + 64),%E / FD CB 40 9B + RES 3,(%IY + 16),%H / FD CB 10 9C + RES 3,(%IY + 32),%L / FD CB 20 9D + RES 3,(%IY + 48) / FD CB 30 9E + RES 3,(%IY + 64),%A / FD CB 40 9F + RES 4,(%IY + 16),%B / FD CB 10 A0 + RES 4,(%IY + 32),%C / FD CB 20 A1 + RES 4,(%IY + 48),%D / FD CB 30 A2 + RES 4,(%IY + 64),%E / FD CB 40 A3 + RES 4,(%IY + 16),%H / FD CB 10 A4 + RES 4,(%IY + 32),%L / FD CB 20 A5 + RES 4,(%IY + 48) / FD CB 30 A6 + RES 4,(%IY + 64),%A / FD CB 40 A7 + RES 5,(%IY + 16),%B / FD CB 10 A8 + RES 5,(%IY + 32),%C / FD CB 20 A9 + RES 5,(%IY + 48),%D / FD CB 30 AA + RES 5,(%IY + 64),%E / FD CB 40 AB + RES 5,(%IY + 16),%H / FD CB 10 AC + RES 5,(%IY + 32),%L / FD CB 20 AD + RES 5,(%IY + 48) / FD CB 30 AE + RES 5,(%IY + 64),%A / FD CB 40 AF + RES 6,(%IY + 16),%B / FD CB 10 B0 + RES 6,(%IY + 32),%C / FD CB 20 B1 + RES 6,(%IY + 48),%D / FD CB 30 B2 + RES 6,(%IY + 64),%E / FD CB 40 B3 + RES 6,(%IY + 16),%H / FD CB 10 B4 + RES 6,(%IY + 32),%L / FD CB 20 B5 + RES 6,(%IY + 48) / FD CB 30 B6 + RES 6,(%IY + 64),%A / FD CB 40 B7 + RES 7,(%IY + 16),%B / FD CB 10 B8 + RES 7,(%IY + 32),%C / FD CB 20 B9 + RES 7,(%IY + 48),%D / FD CB 30 BA + RES 7,(%IY + 64),%E / FD CB 40 BB + RES 7,(%IY + 16),%H / FD CB 10 BC + RES 7,(%IY + 32),%L / FD CB 20 BD + RES 7,(%IY + 48) / FD CB 30 BE + RES 7,(%IY + 64),%A / FD CB 40 BF + SET 0,(%IY + 16),%B / FD CB 10 C0 + SET 0,(%IY + 32),%C / FD CB 20 C1 + SET 0,(%IY + 48),%D / FD CB 30 C2 + SET 0,(%IY + 64),%E / FD CB 40 C3 + SET 0,(%IY + 16),%H / FD CB 10 C4 + SET 0,(%IY + 32),%L / FD CB 20 C5 + SET 0,(%IY + 48) / FD CB 30 C6 + SET 0,(%IY + 64),%A / FD CB 40 C7 + SET 1,(%IY + 16),%B / FD CB 10 C8 + SET 1,(%IY + 32),%C / FD CB 20 C9 + SET 1,(%IY + 48),%D / FD CB 30 CA + SET 1,(%IY + 64),%E / FD CB 40 CB + SET 1,(%IY + 16),%H / FD CB 10 CC + SET 1,(%IY + 32),%L / FD CB 20 CD + SET 1,(%IY + 48) / FD CB 30 CE + SET 1,(%IY + 64),%A / FD CB 40 CF + SET 2,(%IY + 16),%B / FD CB 10 D0 + SET 2,(%IY + 32),%C / FD CB 20 D1 + SET 2,(%IY + 48),%D / FD CB 30 D2 + SET 2,(%IY + 64),%E / FD CB 40 D3 + SET 2,(%IY + 16),%H / FD CB 10 D4 + SET 2,(%IY + 32),%L / FD CB 20 D5 + SET 2,(%IY + 48) / FD CB 30 D6 + SET 2,(%IY + 64),%A / FD CB 40 D7 + SET 3,(%IY + 16),%B / FD CB 10 D8 + SET 3,(%IY + 32),%C / FD CB 20 D9 + SET 3,(%IY + 48),%D / FD CB 30 DA + SET 3,(%IY + 64),%E / FD CB 40 DB + SET 3,(%IY + 16),%H / FD CB 10 DC + SET 3,(%IY + 32),%L / FD CB 20 DD + SET 3,(%IY + 48) / FD CB 30 DE + SET 3,(%IY + 64),%A / FD CB 40 DF + SET 4,(%IY + 16),%B / FD CB 10 E0 + SET 4,(%IY + 32),%C / FD CB 20 E1 + SET 4,(%IY + 48),%D / FD CB 30 E2 + SET 4,(%IY + 64),%E / FD CB 40 E3 + SET 4,(%IY + 16),%H / FD CB 10 E4 + SET 4,(%IY + 32),%L / FD CB 20 E5 + SET 4,(%IY + 48) / FD CB 30 E6 + SET 4,(%IY + 64),%A / FD CB 40 E7 + SET 5,(%IY + 16),%B / FD CB 10 E8 + SET 5,(%IY + 32),%C / FD CB 20 E9 + SET 5,(%IY + 48),%D / FD CB 30 EA + SET 5,(%IY + 64),%E / FD CB 40 EB + SET 5,(%IY + 16),%H / FD CB 10 EC + SET 5,(%IY + 32),%L / FD CB 20 ED + SET 5,(%IY + 48) / FD CB 30 EE + SET 5,(%IY + 64),%A / FD CB 40 EF + SET 6,(%IY + 16),%B / FD CB 10 F0 + SET 6,(%IY + 32),%C / FD CB 20 F1 + SET 6,(%IY + 48),%D / FD CB 30 F2 + SET 6,(%IY + 64),%E / FD CB 40 F3 + SET 6,(%IY + 16),%H / FD CB 10 F4 + SET 6,(%IY + 32),%L / FD CB 20 F5 + SET 6,(%IY + 48) / FD CB 30 F6 + SET 6,(%IY + 64),%A / FD CB 40 F7 + SET 7,(%IY + 16),%B / FD CB 10 F8 + SET 7,(%IY + 32),%C / FD CB 20 F9 + SET 7,(%IY + 48),%D / FD CB 30 FA + SET 7,(%IY + 64),%E / FD CB 40 FB + SET 7,(%IY + 16),%H / FD CB 10 FC + SET 7,(%IY + 32),%L / FD CB 20 FD + SET 7,(%IY + 48) / FD CB 30 FE + SET 7,(%IY + 64),%A / FD CB 40 FF POP %IY / FD E1 EX (%SP),%IY / FD E3 PUSH %IY / FD E5