shithub: scc

Download patch

ref: 0a7dad2565a39f1d4d57cc0406fe236709d6b847
parent: 2404c80694756eeb3c5dd914754104326219080d
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Thu Jan 25 08:29:58 EST 2018

[as] Use $ for immediate

This helps to avoid ambiguety with () and helps to the
parser to go to the correct reduction rule.

--- a/as/as.h
+++ b/as/as.h
@@ -35,6 +35,7 @@
 	AIMM = 1,
 	ASTR,
 	AREG,
+	ANUMBER,
 	AIMM8,
 	AIMM16,
 	AIMM32,
@@ -163,7 +164,7 @@
 #endif
 
 /* expr.c */
-extern Node *expr(char **s);
+extern Node *operand(char **s);
 extern void deltree(Node *np);
 
 /* proc.c */
--- a/as/expr.c
+++ b/as/expr.c
@@ -117,7 +117,7 @@
 
 	np = node(NUMBER, NULL, NULL);
 	np->sym = tmpsym(val);
-	np->addr = AIMM;
+	np->addr = ANUMBER;
 	return np;
 
 division_by_zero:
@@ -132,11 +132,9 @@
 
 	if (l->op == NUMBER && r->op == NUMBER)
 		return fold(op, l, r);
-	if (l->addr == AIMM && r->addr == AIMM)
-		addr = AIMM;
-	else if (l->addr == AREG && r->addr == AIMM)
+	else if (l->addr == AREG && r->addr == ANUMBER)
 		addr = AREG_OFF;
-	else
+	else if (l->addr == AREG && l->addr != ANUMBER)
 		error("incorrect operand");
 	np = node(op, l, r);
 	np->addr = addr;
@@ -302,18 +300,20 @@
 		c = character();
 		break;
 	case '$':
-		c = number();
+	case '.':
+	case '_':
+	case '%':
+		c = iden();
 		break;
 	default:
 		if (isdigit(c))
 			c = number();
-		else if (isalpha(c) || c == '_' || c == '.')
+		else if (isalpha(c))
 			c = iden();
 		else
 			c = operator();
 		break;
 	}
-
 	return yytoken = c;
 }
 
@@ -343,7 +343,7 @@
 	case AREG_OFF:
 		op = AINDEX;
 		goto new_node;
-	case AIMM:
+	case ANUMBER:
 		op = ADIRECT;
 	new_node:
 		np = node(op, np, NULL);
@@ -373,7 +373,7 @@
 		goto basic_atom;
 	case IDEN:
 	case NUMBER:
-		addr = AIMM;
+		addr = ANUMBER;
 		goto basic_atom;
 	case STRING:
 		addr = ASTR;
@@ -383,6 +383,10 @@
 		np->addr = addr;
 		next();
 		break;
+	case '(':
+		np = or();
+		expect(')');
+		break;
 	case '[':
 		next();
 		np = or();
@@ -506,20 +510,33 @@
 }
 
 Node *
-expr(char **s)
+operand(char **strp)
 {
+	int imm = 0;
 	Node *np;
+	char *s = *strp;
 
-	textp = *s;
-	if (*textp == '\0')
-		return NULL;
+	while (isspace(*s))
+		++s;
+	textp = s;
 
-	next();
-	np = or();
+	switch (*s) {
+	case '\0':
+		np = NULL;
+		break;
+	case '$':
+		imm = 1;
+		textp++;
+	default:
+		next();
+		np = or();
+		if (imm)
+			np->addr = AIMM;
+		if (yytoken != ',' && yytoken != EOS)
+			error("trailing characters in expression '%s'", textp);
+		s = endp;
+	}
 
-	if (yytoken != ',' && yytoken != EOS)
-		error("trailing characters in expression '%s'", textp);
-	*s = endp;
-
+	*strp = s;
 	return np;
 }
--- a/as/parser.c
+++ b/as/parser.c
@@ -44,7 +44,7 @@
 		return NULL;
 
 	for (ap = args; ap < &args[NARGS-1]; ++ap) {
-		if ((*ap = expr(&s)) == NULL)
+		if ((*ap = operand(&s)) == NULL)
 			return args;
 	}
 	error("too many arguments in one instruction");
--- a/as/target/x80/z80-test.s
+++ b/as/target/x80/z80-test.s
@@ -1,10 +1,10 @@
 	NOP		/ 00
-	LD	BC,64	/ 01 40 00
+	LD	BC,$64	/ 01 40 00
 	LD	[BC],A	/ 02
 	INC	BC	/ 03
 	INC	B	/ 04
 	DEC	B	/ 05
-	LD	B,32	/ 06 20
+	LD	B,$32	/ 06 20
 	RLCA		/ 07
 	EX	AF,AF'	/ 08
 	ADD	HL,BC	/ 09
@@ -12,55 +12,55 @@
 	DEC	BC	/ 0B
 	INC	C	/ 0C
 	DEC	C	/ 0D
-	LD	C,64	/ 0E 40
+	LD	C,$64	/ 0E 40
 	RRCA		/ 0F
-L1:	DJNZ	L1	/ 10 02
-	LD	DE,32	/ 11 20 00
+L1:	DJNZ	$L1	/ 10 02
+	LD	DE,$32	/ 11 20 00
 	LD	[DE],A	/ 12
 	INC	DE	/ 13
 	INC	D	/ 14
 	DEC	D	/ 15
-	LD	D,64	/ 16 40
+	LD	D,$64	/ 16 40
 	RLA		/ 17
-L2:	JR	L2	/ 18 02
+L2:	JR	$L2	/ 18 02
 	ADD	HL,DE	/ 19
 	LD	A,[DE]	/ 1A
 	DEC	DE	/ 1B
 	INC	E	/ 1C
 	DEC	E	/ 1D
-	LD	E,64	/ 1E 40
+	LD	E,$64	/ 1E 40
 	RRA		/ 1F
-L3:	JR	NZ,L3	/ 20 02
-	LD	HL,32	/ 21 20 00
+L3:	JR	NZ,$L3	/ 20 02
+	LD	HL,$32	/ 21 20 00
 	LD	[32768],HL	/ 22 00 80
 	INC	HL	/ 23
 	INC	H	/ 24
 	DEC	H	/ 25
-	LD	H,64	/ 26 40
+	LD	H,$64	/ 26 40
 	DAA		/ 27
-L4:	JR	Z,L4	/ 28 02
+L4:	JR	Z,$L4	/ 28 02
 	ADD	HL,HL	/ 29
 	LD	HL, [16384]	/ 2A 00 40
 	DEC	HL	/ 2B
 	INC	L	/ 2C
 	DEC	L	/ 2D
-	LD	L,32	/ 2E 20
+	LD	L,$32	/ 2E 20
 	CPL		/ 2F
-L5:	JR	NC,L5	/ 30 02
-	LD	SP,64	/ 31 40 00
+L5:	JR	NC,$L5	/ 30 02
+	LD	SP,$64	/ 31 40 00
 	LD	[32768],A	/ 32 00 80
 	INC	SP	/ 33
 	INC	[HL]	/ 34
 	DEC	[HL]	/ 35
-	LD	[HL],32	/ 36 20
+	LD	[HL],$32	/ 36 20
 	SCF		/ 37
-L6:	JR	C,L6	/ 38 02
+L6:	JR	C,$L6	/ 38 02
 	ADD	HL,SP	/ 39
 	LD	A,[16384]	/ 3A 00 40
 	DEC	SP	/ 3B
 	INC	A	/ 3C
 	DEC	A	/ 3D
-	LD	A,32	/ 3E 20
+	LD	A,$32	/ 3E 20
 	CCF		/ 3F
 	LD	B,B	/ 40
 	LD	B,C	/ 41
@@ -192,15 +192,15 @@
 	CP	A,A	/ BF
 	RET	NZ	/ C0
 	POP	BC	/ C1
-	JP	NZ,16384	/ C2 00 40
-	JP	32768	/ C3 00 80
-	CALL	NZ,32768	/ C4 00 80
+	JP	NZ,$16384	/ C2 00 40
+	JP	$32768	/ C3 00 80
+	CALL	NZ,$32768	/ C4 00 80
 	PUSH	BC	/ C5
-	ADD	A,32	/ C6 20
-	RST	0	/ C7
+	ADD	A,$32	/ C6 20
+	RST	$0	/ C7
 	RET	Z	/ C8
 	RET		/ C9
-	JP	Z,32768	/ CA 00 80
+	JP	Z,$32768	/ CA 00 80
 	RLC	B	/ CB 00
 	RLC	C	/ CB 01
 	RLC	D	/ CB 02
@@ -265,232 +265,232 @@
 	SRL	L	/ CB 3D
 	SRL	[HL]	/ CB 3E
 	SRL	A	/ CB 3F
-	BIT	0,B	/ CB 40
-	BIT	0,C	/ CB 41
-	BIT	0,D	/ CB 42
-	BIT	0,E	/ CB 43
-	BIT	0,H	/ CB 44
-	BIT	0,L	/ CB 45
-	BIT	0,[HL]	/ CB 46
-	BIT	0,A	/ CB 47
-	BIT	1,B	/ CB 48
-	BIT	1,C	/ CB 49
-	BIT	1,D	/ CB 4A
-	BIT	1,E	/ CB 4B
-	BIT	1,H	/ CB 4C
-	BIT	1,L	/ CB 4D
-	BIT	1,[HL]	/ CB 4E
-	BIT	1,A	/ CB 4F
-	BIT	2,B	/ CB 50
-	BIT	2,C	/ CB 51
-	BIT	2,D	/ CB 52
-	BIT	2,E	/ CB 53
-	BIT	2,H	/ CB 54
-	BIT	2,L	/ CB 55
-	BIT	2,[HL]	/ CB 56
-	BIT	2,A	/ CB 57
-	BIT	3,B	/ CB 58
-	BIT	3,C	/ CB 59
-	BIT	3,D	/ CB 5A
-	BIT	3,E	/ CB 5B
-	BIT	3,H	/ CB 5C
-	BIT	3,L	/ CB 5D
-	BIT	3,[HL]	/ CB 5E
-	BIT	3,A	/ CB 5F
-	BIT	4,B	/ CB 60
-	BIT	4,C	/ CB 61
-	BIT	4,D	/ CB 62
-	BIT	4,E	/ CB 63
-	BIT	4,H	/ CB 64
-	BIT	4,L	/ CB 65
-	BIT	4,[HL]	/ CB 66
-	BIT	4,A	/ CB 67
-	BIT	5,B	/ CB 68
-	BIT	5,C	/ CB 69
-	BIT	5,D	/ CB 6A
-	BIT	5,E	/ CB 6B
-	BIT	5,H	/ CB 6C
-	BIT	5,L	/ CB 6D
-	BIT	5,[HL]	/ CB 6E
-	BIT	5,A	/ CB 6F
-	BIT	6,B	/ CB 70
-	BIT	6,C	/ CB 71
-	BIT	6,D	/ CB 72
-	BIT	6,E	/ CB 73
-	BIT	6,H	/ CB 74
-	BIT	6,L	/ CB 75
-	BIT	6,[HL]	/ CB 76
-	BIT	6,A	/ CB 77
-	BIT	7,B	/ CB 78
-	BIT	7,C	/ CB 79
-	BIT	7,D	/ CB 7A
-	BIT	7,E	/ CB 7B
-	BIT	7,H	/ CB 7C
-	BIT	7,L	/ CB 7D
-	BIT	7,[HL]	/ CB 7E
-	BIT	7,A	/ CB 7F
-	RES	0,B	/ CB 80
-	RES	0,C	/ CB 81
-	RES	0,D	/ CB 82
-	RES	0,E	/ CB 83
-	RES	0,H	/ CB 84
-	RES	0,L	/ CB 85
-	RES	0,[HL]	/ CB 86
-	RES	0,A	/ CB 87
-	RES	1,B	/ CB 88
-	RES	1,C	/ CB 89
-	RES	1,D	/ CB 8A
-	RES	1,E	/ CB 8B
-	RES	1,H	/ CB 8C
-	RES	1,L	/ CB 8D
-	RES	1,[HL]	/ CB 8E
-	RES	1,A	/ CB 8F
-	RES	2,B	/ CB 90
-	RES	2,C	/ CB 91
-	RES	2,D	/ CB 92
-	RES	2,E	/ CB 93
-	RES	2,H	/ CB 94
-	RES	2,L	/ CB 95
-	RES	2,[HL]	/ CB 96
-	RES	2,A	/ CB 97
-	RES	3,B	/ CB 98
-	RES	3,C	/ CB 99
-	RES	3,D	/ CB 9A
-	RES	3,E	/ CB 9B
-	RES	3,H	/ CB 9C
-	RES	3,L	/ CB 9D
-	RES	3,[HL]	/ CB 9E
-	RES	3,A	/ CB 9F
-	RES	4,B	/ CB A0
-	RES	4,C	/ CB A1
-	RES	4,D	/ CB A2
-	RES	4,E	/ CB A3
-	RES	4,H	/ CB A4
-	RES	4,L	/ CB A5
-	RES	4,[HL]	/ CB A6
-	RES	4,A	/ CB A7
-	RES	5,B	/ CB A8
-	RES	5,C	/ CB A9
-	RES	5,D	/ CB AA
-	RES	5,E	/ CB AB
-	RES	5,H	/ CB AC
-	RES	5,L	/ CB AD
-	RES	5,[HL]	/ CB AE
-	RES	5,A	/ CB AF
-	RES	6,B	/ CB B0
-	RES	6,C	/ CB B1
-	RES	6,D	/ CB B2
-	RES	6,E	/ CB B3
-	RES	6,H	/ CB B4
-	RES	6,L	/ CB B5
-	RES	6,[HL]	/ CB B6
-	RES	6,A	/ CB B7
-	RES	7,B	/ CB B8
-	RES	7,C	/ CB B9
-	RES	7,D	/ CB BA
-	RES	7,E	/ CB BB
-	RES	7,H	/ CB BC
-	RES	7,L	/ CB BD
-	RES	7,[HL]	/ CB BE
-	RES	7,A	/ CB BF
-	SET	0,B	/ CB C0
-	SET	0,C	/ CB C1
-	SET	0,D	/ CB C2
-	SET	0,E	/ CB C3
-	SET	0,H	/ CB C4
-	SET	0,L	/ CB C5
-	SET	0,[HL]	/ CB C6
-	SET	0,A	/ CB C7
-	SET	1,B	/ CB C8
-	SET	1,C	/ CB C9
-	SET	1,D	/ CB CA
-	SET	1,E	/ CB CB
-	SET	1,H	/ CB CC
-	SET	1,L	/ CB CD
-	SET	1,[HL]	/ CB CE
-	SET	1,A	/ CB CF
-	SET	2,B	/ CB D0
-	SET	2,C	/ CB D1
-	SET	2,D	/ CB D2
-	SET	2,E	/ CB D3
-	SET	2,H	/ CB D4
-	SET	2,L	/ CB D5
-	SET	2,[HL]	/ CB D6
-	SET	2,A	/ CB D7
-	SET	3,B	/ CB D8
-	SET	3,C	/ CB D9
-	SET	3,D	/ CB DA
-	SET	3,E	/ CB DB
-	SET	3,H	/ CB DC
-	SET	3,L	/ CB DD
-	SET	3,[HL]	/ CB DE
-	SET	3,A	/ CB DF
-	SET	4,B	/ CB E0
-	SET	4,C	/ CB E1
-	SET	4,D	/ CB E2
-	SET	4,E	/ CB E3
-	SET	4,H	/ CB E4
-	SET	4,L	/ CB E5
-	SET	4,[HL]	/ CB E6
-	SET	4,A	/ CB E7
-	SET	5,B	/ CB E8
-	SET	5,C	/ CB E9
-	SET	5,D	/ CB EA
-	SET	5,E	/ CB EB
-	SET	5,H	/ CB EC
-	SET	5,L	/ CB ED
-	SET	5,[HL]	/ CB EE
-	SET	5,A	/ CB EF
-	SET	6,B	/ CB F0
-	SET	6,C	/ CB F1
-	SET	6,D	/ CB F2
-	SET	6,E	/ CB F3
-	SET	6,H	/ CB F4
-	SET	6,L	/ CB F5
-	SET	6,[HL]	/ CB F6
-	SET	6,A	/ CB F7
-	SET	7,B	/ CB F8
-	SET	7,C	/ CB F9
-	SET	7,D	/ CB FA
-	SET	7,E	/ CB FB
-	SET	7,H	/ CB FC
-	SET	7,L	/ CB FD
-	SET	7,[HL]	/ CB FE
-	SET	7,A	/ CB FF
-	CALL	Z,16384	/ CC 00 40
-	CALL	16384	/ CD 00 40
-	ADC	A,64	/ CE 40
-	RST	8	/ CF
+	BIT	$0,B	/ CB 40
+	BIT	$0,C	/ CB 41
+	BIT	$0,D	/ CB 42
+	BIT	$0,E	/ CB 43
+	BIT	$0,H	/ CB 44
+	BIT	$0,L	/ CB 45
+	BIT	$0,[HL]	/ CB 46
+	BIT	$0,A	/ CB 47
+	BIT	$1,B	/ CB 48
+	BIT	$1,C	/ CB 49
+	BIT	$1,D	/ CB 4A
+	BIT	$1,E	/ CB 4B
+	BIT	$1,H	/ CB 4C
+	BIT	$1,L	/ CB 4D
+	BIT	$1,[HL]	/ CB 4E
+	BIT	$1,A	/ CB 4F
+	BIT	$2,B	/ CB 50
+	BIT	$2,C	/ CB 51
+	BIT	$2,D	/ CB 52
+	BIT	$2,E	/ CB 53
+	BIT	$2,H	/ CB 54
+	BIT	$2,L	/ CB 55
+	BIT	$2,[HL]	/ CB 56
+	BIT	$2,A	/ CB 57
+	BIT	$3,B	/ CB 58
+	BIT	$3,C	/ CB 59
+	BIT	$3,D	/ CB 5A
+	BIT	$3,E	/ CB 5B
+	BIT	$3,H	/ CB 5C
+	BIT	$3,L	/ CB 5D
+	BIT	$3,[HL]	/ CB 5E
+	BIT	$3,A	/ CB 5F
+	BIT	$4,B	/ CB 60
+	BIT	$4,C	/ CB 61
+	BIT	$4,D	/ CB 62
+	BIT	$4,E	/ CB 63
+	BIT	$4,H	/ CB 64
+	BIT	$4,L	/ CB 65
+	BIT	$4,[HL]	/ CB 66
+	BIT	$4,A	/ CB 67
+	BIT	$5,B	/ CB 68
+	BIT	$5,C	/ CB 69
+	BIT	$5,D	/ CB 6A
+	BIT	$5,E	/ CB 6B
+	BIT	$5,H	/ CB 6C
+	BIT	$5,L	/ CB 6D
+	BIT	$5,[HL]	/ CB 6E
+	BIT	$5,A	/ CB 6F
+	BIT	$6,B	/ CB 70
+	BIT	$6,C	/ CB 71
+	BIT	$6,D	/ CB 72
+	BIT	$6,E	/ CB 73
+	BIT	$6,H	/ CB 74
+	BIT	$6,L	/ CB 75
+	BIT	$6,[HL]	/ CB 76
+	BIT	$6,A	/ CB 77
+	BIT	$7,B	/ CB 78
+	BIT	$7,C	/ CB 79
+	BIT	$7,D	/ CB 7A
+	BIT	$7,E	/ CB 7B
+	BIT	$7,H	/ CB 7C
+	BIT	$7,L	/ CB 7D
+	BIT	$7,[HL]	/ CB 7E
+	BIT	$7,A	/ CB 7F
+	RES	$0,B	/ CB 80
+	RES	$0,C	/ CB 81
+	RES	$0,D	/ CB 82
+	RES	$0,E	/ CB 83
+	RES	$0,H	/ CB 84
+	RES	$0,L	/ CB 85
+	RES	$0,[HL]	/ CB 86
+	RES	$0,A	/ CB 87
+	RES	$1,B	/ CB 88
+	RES	$1,C	/ CB 89
+	RES	$1,D	/ CB 8A
+	RES	$1,E	/ CB 8B
+	RES	$1,H	/ CB 8C
+	RES	$1,L	/ CB 8D
+	RES	$1,[HL]	/ CB 8E
+	RES	$1,A	/ CB 8F
+	RES	$2,B	/ CB 90
+	RES	$2,C	/ CB 91
+	RES	$2,D	/ CB 92
+	RES	$2,E	/ CB 93
+	RES	$2,H	/ CB 94
+	RES	$2,L	/ CB 95
+	RES	$2,[HL]	/ CB 96
+	RES	$2,A	/ CB 97
+	RES	$3,B	/ CB 98
+	RES	$3,C	/ CB 99
+	RES	$3,D	/ CB 9A
+	RES	$3,E	/ CB 9B
+	RES	$3,H	/ CB 9C
+	RES	$3,L	/ CB 9D
+	RES	$3,[HL]	/ CB 9E
+	RES	$3,A	/ CB 9F
+	RES	$4,B	/ CB A0
+	RES	$4,C	/ CB A1
+	RES	$4,D	/ CB A2
+	RES	$4,E	/ CB A3
+	RES	$4,H	/ CB A4
+	RES	$4,L	/ CB A5
+	RES	$4,[HL]	/ CB A6
+	RES	$4,A	/ CB A7
+	RES	$5,B	/ CB A8
+	RES	$5,C	/ CB A9
+	RES	$5,D	/ CB AA
+	RES	$5,E	/ CB AB
+	RES	$5,H	/ CB AC
+	RES	$5,L	/ CB AD
+	RES	$5,[HL]	/ CB AE
+	RES	$5,A	/ CB AF
+	RES	$6,B	/ CB B0
+	RES	$6,C	/ CB B1
+	RES	$6,D	/ CB B2
+	RES	$6,E	/ CB B3
+	RES	$6,H	/ CB B4
+	RES	$6,L	/ CB B5
+	RES	$6,[HL]	/ CB B6
+	RES	$6,A	/ CB B7
+	RES	$7,B	/ CB B8
+	RES	$7,C	/ CB B9
+	RES	$7,D	/ CB BA
+	RES	$7,E	/ CB BB
+	RES	$7,H	/ CB BC
+	RES	$7,L	/ CB BD
+	RES	$7,[HL]	/ CB BE
+	RES	$7,A	/ CB BF
+	SET	$0,B	/ CB C0
+	SET	$0,C	/ CB C1
+	SET	$0,D	/ CB C2
+	SET	$0,E	/ CB C3
+	SET	$0,H	/ CB C4
+	SET	$0,L	/ CB C5
+	SET	$0,[HL]	/ CB C6
+	SET	$0,A	/ CB C7
+	SET	$1,B	/ CB C8
+	SET	$1,C	/ CB C9
+	SET	$1,D	/ CB CA
+	SET	$1,E	/ CB CB
+	SET	$1,H	/ CB CC
+	SET	$1,L	/ CB CD
+	SET	$1,[HL]	/ CB CE
+	SET	$1,A	/ CB CF
+	SET	$2,B	/ CB D0
+	SET	$2,C	/ CB D1
+	SET	$2,D	/ CB D2
+	SET	$2,E	/ CB D3
+	SET	$2,H	/ CB D4
+	SET	$2,L	/ CB D5
+	SET	$2,[HL]	/ CB D6
+	SET	$2,A	/ CB D7
+	SET	$3,B	/ CB D8
+	SET	$3,C	/ CB D9
+	SET	$3,D	/ CB DA
+	SET	$3,E	/ CB DB
+	SET	$3,H	/ CB DC
+	SET	$3,L	/ CB DD
+	SET	$3,[HL]	/ CB DE
+	SET	$3,A	/ CB DF
+	SET	$4,B	/ CB E0
+	SET	$4,C	/ CB E1
+	SET	$4,D	/ CB E2
+	SET	$4,E	/ CB E3
+	SET	$4,H	/ CB E4
+	SET	$4,L	/ CB E5
+	SET	$4,[HL]	/ CB E6
+	SET	$4,A	/ CB E7
+	SET	$5,B	/ CB E8
+	SET	$5,C	/ CB E9
+	SET	$5,D	/ CB EA
+	SET	$5,E	/ CB EB
+	SET	$5,H	/ CB EC
+	SET	$5,L	/ CB ED
+	SET	$5,[HL]	/ CB EE
+	SET	$5,A	/ CB EF
+	SET	$6,B	/ CB F0
+	SET	$6,C	/ CB F1
+	SET	$6,D	/ CB F2
+	SET	$6,E	/ CB F3
+	SET	$6,H	/ CB F4
+	SET	$6,L	/ CB F5
+	SET	$6,[HL]	/ CB F6
+	SET	$6,A	/ CB F7
+	SET	$7,B	/ CB F8
+	SET	$7,C	/ CB F9
+	SET	$7,D	/ CB FA
+	SET	$7,E	/ CB FB
+	SET	$7,H	/ CB FC
+	SET	$7,L	/ CB FD
+	SET	$7,[HL]	/ CB FE
+	SET	$7,A	/ CB FF
+	CALL	Z,$16384	/ CC 00 40
+	CALL	$16384	/ CD 00 40
+	ADC	A,$64	/ CE 40
+	RST	$8	/ CF
 	RET	NC	/ D0
 	POP	DE	/ D1
-	JP	NC,16384	/ D2 00 40
+	JP	NC,$16384	/ D2 00 40
 	OUT	[153],A	/ D3 99
-	CALL	NC,32768	/ D4 00 80
+	CALL	NC,$32768	/ D4 00 80
 	PUSH	DE	/ D5
-	SUB	A,32	/ D6 20
-	RST	16	/ D7
+	SUB	A,$32	/ D6 20
+	RST	$16	/ D7
 	RET	C	/ D8
 	EXX		/ D9
-	JP	C,16384	/ DA 00 40
+	JP	C,$16384	/ DA 00 40
 	IN	A,[153]	/ DB 99
-	CALL	C,32768	/ DC 00 80
+	CALL	C,$32768	/ DC 00 80
 	ADD	IX,BC	/ DD 09
 	ADD	IX,DE	/ DD 19
-	LD	IX,64	/ DD 21 40 00
+	LD	IX,$64	/ DD 21 40 00
 	LD	[32768],IX	/ DD 22 00 80
 	INC	IX	/ DD 23
 	INC	IXH	/ DD 24
 	DEC	IXH	/ DD 25
-	LD	IXH,32	/ DD 26 20
+	LD	IXH,$32	/ DD 26 20
 	ADD	IX,IX	/ DD 29
 	LD	IX,[16384]	/ DD 2A 00 40
 	DEC	IX	/ DD 2B
 	INC	IXL	/ DD 2C
 	DEC	IXL	/ DD 2D
-	LD	IXL,64	/ DD 2E 40
+	LD	IXL,$64	/ DD 2E 40
 	INC	[IX + 32]	/ DD 34 20
 	DEC	[IX + 16]	/ DD 35 10
-	LD	[IX + 64],128	/ DD 36 40 80
+	LD	[IX + 64],$128	/ DD 36 40 80
 	ADD	IX,SP	/ DD 39
 	LD	B,IXH	/ DD 44
 	LD	B,IXL	/ DD 45
@@ -618,162 +618,162 @@
 	SRL	[IX + 48],L	/ DD CB 30 3D
 	SRL	[IX + 48]	/ DD CB 30 3E
 	SRL	[IX + 64],A	/ DD CB 40 3F
-	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
+	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
 	JP	[IX]	/ DD E9
 	LD	SP,IX	/ DD F9
-	SBC	A,64	/ DE 40
-	RST	24	/ DF
+	SBC	A,$64	/ DE 40
+	RST	$24	/ DF
 	RET	PO	/ E0
 	POP	HL	/ E1
-	JP	PO,32768	/ E2 00 80
+	JP	PO,$32768	/ E2 00 80
 	EX	[SP],HL	/ E3
-	CALL	PO,16384	/ E4 00 40
+	CALL	PO,$16384	/ E4 00 40
 	PUSH	HL	/ E5
-	AND	A,16	/ E6 10
-	RST	32	/ E7
+	AND	A,$16	/ E6 10
+	RST	$32	/ E7
 	RET	PE	/ E8
 	JP	[HL]	/ E9
-	JP	PE,16384	/ EA 00 40
+	JP	PE,$16384	/ EA 00 40
 	EX	DE,HL	/ EB
-	CALL	PE,16384	/ EC 00 40
+	CALL	PE,$16384	/ EC 00 40
 	IN	B,[C]	/ ED 40
 	OUT	[C],B	/ ED 41
 	SBC	HL,BC	/ ED 42
@@ -780,7 +780,7 @@
 	LD	[32768],BC	/ ED 43 00 80
 	NEG		/ ED 44
 	RETN		/ ED 45
-	IM	0	/ ED 46
+	IM	$0	/ ED 46
 	LD	I,A	/ ED 47
 	IN	C,[C]	/ ED 48
 	OUT	[C],C	/ ED 49
@@ -792,13 +792,13 @@
 	OUT	[C],D	/ ED 51
 	SBC	HL,DE	/ ED 52
 	LD	[32768],DE	/ ED 53 00 80
-	IM	1	/ ED 56
+	IM	$1	/ ED 56
 	LD	A,I	/ ED 57
 	IN	E,[C]	/ ED 58
 	OUT	[C],E	/ ED 59
 	ADC	HL,DE	/ ED 5A
 	LD	DE,[16384]	/ ED 5B 00 40
-	IM	2	/ ED 5E
+	IM	$2	/ ED 5E
 	LD	A,R	/ ED 5F
 	IN	H,[C]	/ ED 60
 	OUT	[C],H	/ ED 61
@@ -809,7 +809,7 @@
 	ADC	HL,HL	/ ED 6A
 	RLD		/ ED 6F
 	IN	F,[C]	/ ED 70
-	OUT	[C],0	/ ED 71
+	OUT	[C],$0	/ ED 71
 	SBC	HL,SP	/ ED 72
 	LD	[16384],SP	/ ED 73 00 40
 	IN	A,[C]	/ ED 78
@@ -832,38 +832,38 @@
 	CPDR		/ ED B9
 	INDR		/ ED BA
 	OTDR		/ ED BB
-	XOR	A,32	/ EE 20
-	RST	40	/ EF
+	XOR	A,$32	/ EE 20
+	RST	$40	/ EF
 	RET	P	/ F0
 	POP	AF	/ F1
-	JP	P,32768	/ F2 00 80
+	JP	P,$32768	/ F2 00 80
 	DI		/ F3
-	CALL	P,16384	/ F4 00 40
+	CALL	P,$16384	/ F4 00 40
 	PUSH	AF	/ F5
-	OR	A,32	/ F6 20
-	RST	48	/ F7
+	OR	A,$32	/ F6 20
+	RST	$48	/ F7
 	RET	M	/ F8
 	LD	SP,HL	/ F9
-	JP	M,32768	/ FA 00 80
+	JP	M,$32768	/ FA 00 80
 	EI		/ FB
-	CALL	M,16384	/ FC 00 40
+	CALL	M,$16384	/ FC 00 40
 	ADD	IY,BC	/ FD 09
 	ADD	IY,DE	/ FD 19
-	LD	IY,32768	/ FD 21 00 80
+	LD	IY,$32768	/ FD 21 00 80
 	LD	[16384],IY	/ FD 22 00 40
 	INC	IY	/ FD 23
 	INC	IYH	/ FD 24
 	DEC	IYH	/ FD 25
-	LD	IYH,32	/ FD 26 20
+	LD	IYH,$32	/ FD 26 20
 	ADD	IY,IY	/ FD 29
 	LD	IY,[32768]	/ FD 2A 00 80
 	DEC	IY	/ FD 2B
 	INC	IYL	/ FD 2C
 	DEC	IYL	/ FD 2D
-	LD	IYL,16	/ FD 2E 10
+	LD	IYL,$16	/ FD 2E 10
 	INC	[IY + 32]	/ FD 34 20
 	DEC	[IY + 48]	/ FD 35 30
-	LD	[IY + 64],16	/ FD 36 40 10
+	LD	[IY + 64],$16	/ FD 36 40 10
 	ADD	IY,SP	/ FD 39
 	LD	B,IYH	/ FD 44
 	LD	B,IYL	/ FD 45
@@ -991,146 +991,146 @@
 	SRL	[IY + 48],L	/ FD CB 30 3D
 	SRL	[IY + 64]	/ FD CB 40 3E
 	SRL	[IY + 16],A	/ FD CB 10 3F
-	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
+	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
 	JP	[IY]	/ FD E9
 	LD	SP,IY	/ FD F9
-	CP	A,32	/ FE 20
-	RST	56	/ FF
+	CP	A,$32	/ FE 20
+	RST	$56	/ FF