shithub: scc

Download patch

ref: c32a81c9c98814e2846b187a997210cb399befd3
parent: 011d36784c2fa5c0c74c0ad80317b42a6d70ba20
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Thu Dec 28 10:36:30 EST 2017

[as-z80] Add bit operations

--- a/as/target/x80/ins.c
+++ b/as/target/x80/ins.c
@@ -404,21 +404,28 @@
 }
 
 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 @@
 	default:
 		abort();
 	}
+
 	emit(buf, n);
 }
 
@@ -444,49 +452,6 @@
 	memcpy(buf, op->bytes, n);
 	buf[n-1] |= val << 3;
 	emit(buf, n);
-}
-
-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
--- a/as/target/x80/x80.dat
+++ b/as/target/x80/x80.dat
@@ -238,81 +238,81 @@
 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
+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	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
+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	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
+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	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
+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	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
+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	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
+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	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
+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	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
+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
+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	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
+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	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
+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
--- 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