changeset 298:170722e80fc0

Fix handling of instructions that combine an IX/IY displacement with another prefix in test generator
author Mike Pavone <pavone@retrodev.com>
date Wed, 08 May 2013 22:45:29 -0700
parents 147e31983730
children 42e1a986f2d0
files ztestgen.c
diffstat 1 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ztestgen.c	Wed May 08 22:43:31 2013 -0700
+++ b/ztestgen.c	Wed May 08 22:45:29 2013 -0700
@@ -226,8 +226,13 @@
 	}
 	
 	//copy instruction
-	memcpy(cur, instbuf, instlen);
-	cur += instlen;
+	if (instlen == 3) {
+		memcpy(cur, instbuf, 2);
+		cur += 2;
+	} else {
+		memcpy(cur, instbuf, instlen);
+		cur += instlen;
+	}
 	
 	//immed/displacement byte(s)
 	if (addr_mode == Z80_IX_DISPLACE || addr_mode == Z80_IY_DISPLACE) {
@@ -244,6 +249,9 @@
 	if (inst->reg == Z80_USE_IMMED && inst->op != Z80_BIT && inst->op != Z80_RES && inst->op != Z80_SET) {
 		*(cur++) = inst->immed & 0xFF;
 	}
+	if (instlen == 3) {
+		*(cur++) = instbuf[2];
+	}
 
 	for (char * cur = disbuf; *cur != 0; cur++) {
 		if (*cur == ',' || *cur == ' ') {