1 /* z80_ddfdcb.c Z80 {DD,FD}CBxx opcodes
2    Copyright (c) 1999-2003 Philip Kendall
3 
4    This program is free software; you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 2 of the License, or
7    (at your option) any later version.
8 
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13 
14    You should have received a copy of the GNU General Public License along
15    with this program; if not, write to the Free Software Foundation, Inc.,
16    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 
18    Author contact information:
19 
20    E-mail: philip-fuse@shadowmagic.org.uk
21 
22 */
23 
24 /* NB: this file is autogenerated by './z80/z80.pl' from 'opcodes_ddfdcb.dat',
25    and included in 'z80_ops.c' */
26 
27     case 0x00:		/* LD B,RLC (REGISTER+dd) */
28       B=readbyte(z80.memptr.w);
29       contend_read_no_mreq( z80.memptr.w, 1 );
30       RLC(B);
31       writebyte(z80.memptr.w, B);
32       break;
33     case 0x01:		/* LD C,RLC (REGISTER+dd) */
34       C=readbyte(z80.memptr.w);
35       contend_read_no_mreq( z80.memptr.w, 1 );
36       RLC(C);
37       writebyte(z80.memptr.w, C);
38       break;
39     case 0x02:		/* LD D,RLC (REGISTER+dd) */
40       D=readbyte(z80.memptr.w);
41       contend_read_no_mreq( z80.memptr.w, 1 );
42       RLC(D);
43       writebyte(z80.memptr.w, D);
44       break;
45     case 0x03:		/* LD E,RLC (REGISTER+dd) */
46       E=readbyte(z80.memptr.w);
47       contend_read_no_mreq( z80.memptr.w, 1 );
48       RLC(E);
49       writebyte(z80.memptr.w, E);
50       break;
51     case 0x04:		/* LD H,RLC (REGISTER+dd) */
52       H=readbyte(z80.memptr.w);
53       contend_read_no_mreq( z80.memptr.w, 1 );
54       RLC(H);
55       writebyte(z80.memptr.w, H);
56       break;
57     case 0x05:		/* LD L,RLC (REGISTER+dd) */
58       L=readbyte(z80.memptr.w);
59       contend_read_no_mreq( z80.memptr.w, 1 );
60       RLC(L);
61       writebyte(z80.memptr.w, L);
62       break;
63     case 0x06:		/* RLC (REGISTER+dd) */
64       {
65 	libspectrum_byte bytetemp = readbyte(z80.memptr.w);
66 	contend_read_no_mreq( z80.memptr.w, 1 );
67 	RLC(bytetemp);
68 	writebyte(z80.memptr.w,bytetemp);
69       }
70       break;
71     case 0x07:		/* LD A,RLC (REGISTER+dd) */
72       A=readbyte(z80.memptr.w);
73       contend_read_no_mreq( z80.memptr.w, 1 );
74       RLC(A);
75       writebyte(z80.memptr.w, A);
76       break;
77     case 0x08:		/* LD B,RRC (REGISTER+dd) */
78       B=readbyte(z80.memptr.w);
79       contend_read_no_mreq( z80.memptr.w, 1 );
80       RRC(B);
81       writebyte(z80.memptr.w, B);
82       break;
83     case 0x09:		/* LD C,RRC (REGISTER+dd) */
84       C=readbyte(z80.memptr.w);
85       contend_read_no_mreq( z80.memptr.w, 1 );
86       RRC(C);
87       writebyte(z80.memptr.w, C);
88       break;
89     case 0x0a:		/* LD D,RRC (REGISTER+dd) */
90       D=readbyte(z80.memptr.w);
91       contend_read_no_mreq( z80.memptr.w, 1 );
92       RRC(D);
93       writebyte(z80.memptr.w, D);
94       break;
95     case 0x0b:		/* LD E,RRC (REGISTER+dd) */
96       E=readbyte(z80.memptr.w);
97       contend_read_no_mreq( z80.memptr.w, 1 );
98       RRC(E);
99       writebyte(z80.memptr.w, E);
100       break;
101     case 0x0c:		/* LD H,RRC (REGISTER+dd) */
102       H=readbyte(z80.memptr.w);
103       contend_read_no_mreq( z80.memptr.w, 1 );
104       RRC(H);
105       writebyte(z80.memptr.w, H);
106       break;
107     case 0x0d:		/* LD L,RRC (REGISTER+dd) */
108       L=readbyte(z80.memptr.w);
109       contend_read_no_mreq( z80.memptr.w, 1 );
110       RRC(L);
111       writebyte(z80.memptr.w, L);
112       break;
113     case 0x0e:		/* RRC (REGISTER+dd) */
114       {
115 	libspectrum_byte bytetemp = readbyte(z80.memptr.w);
116 	contend_read_no_mreq( z80.memptr.w, 1 );
117 	RRC(bytetemp);
118 	writebyte(z80.memptr.w,bytetemp);
119       }
120       break;
121     case 0x0f:		/* LD A,RRC (REGISTER+dd) */
122       A=readbyte(z80.memptr.w);
123       contend_read_no_mreq( z80.memptr.w, 1 );
124       RRC(A);
125       writebyte(z80.memptr.w, A);
126       break;
127     case 0x10:		/* LD B,RL (REGISTER+dd) */
128       B=readbyte(z80.memptr.w);
129       contend_read_no_mreq( z80.memptr.w, 1 );
130       RL(B);
131       writebyte(z80.memptr.w, B);
132       break;
133     case 0x11:		/* LD C,RL (REGISTER+dd) */
134       C=readbyte(z80.memptr.w);
135       contend_read_no_mreq( z80.memptr.w, 1 );
136       RL(C);
137       writebyte(z80.memptr.w, C);
138       break;
139     case 0x12:		/* LD D,RL (REGISTER+dd) */
140       D=readbyte(z80.memptr.w);
141       contend_read_no_mreq( z80.memptr.w, 1 );
142       RL(D);
143       writebyte(z80.memptr.w, D);
144       break;
145     case 0x13:		/* LD E,RL (REGISTER+dd) */
146       E=readbyte(z80.memptr.w);
147       contend_read_no_mreq( z80.memptr.w, 1 );
148       RL(E);
149       writebyte(z80.memptr.w, E);
150       break;
151     case 0x14:		/* LD H,RL (REGISTER+dd) */
152       H=readbyte(z80.memptr.w);
153       contend_read_no_mreq( z80.memptr.w, 1 );
154       RL(H);
155       writebyte(z80.memptr.w, H);
156       break;
157     case 0x15:		/* LD L,RL (REGISTER+dd) */
158       L=readbyte(z80.memptr.w);
159       contend_read_no_mreq( z80.memptr.w, 1 );
160       RL(L);
161       writebyte(z80.memptr.w, L);
162       break;
163     case 0x16:		/* RL (REGISTER+dd) */
164       {
165 	libspectrum_byte bytetemp = readbyte(z80.memptr.w);
166 	contend_read_no_mreq( z80.memptr.w, 1 );
167 	RL(bytetemp);
168 	writebyte(z80.memptr.w,bytetemp);
169       }
170       break;
171     case 0x17:		/* LD A,RL (REGISTER+dd) */
172       A=readbyte(z80.memptr.w);
173       contend_read_no_mreq( z80.memptr.w, 1 );
174       RL(A);
175       writebyte(z80.memptr.w, A);
176       break;
177     case 0x18:		/* LD B,RR (REGISTER+dd) */
178       B=readbyte(z80.memptr.w);
179       contend_read_no_mreq( z80.memptr.w, 1 );
180       RR(B);
181       writebyte(z80.memptr.w, B);
182       break;
183     case 0x19:		/* LD C,RR (REGISTER+dd) */
184       C=readbyte(z80.memptr.w);
185       contend_read_no_mreq( z80.memptr.w, 1 );
186       RR(C);
187       writebyte(z80.memptr.w, C);
188       break;
189     case 0x1a:		/* LD D,RR (REGISTER+dd) */
190       D=readbyte(z80.memptr.w);
191       contend_read_no_mreq( z80.memptr.w, 1 );
192       RR(D);
193       writebyte(z80.memptr.w, D);
194       break;
195     case 0x1b:		/* LD E,RR (REGISTER+dd) */
196       E=readbyte(z80.memptr.w);
197       contend_read_no_mreq( z80.memptr.w, 1 );
198       RR(E);
199       writebyte(z80.memptr.w, E);
200       break;
201     case 0x1c:		/* LD H,RR (REGISTER+dd) */
202       H=readbyte(z80.memptr.w);
203       contend_read_no_mreq( z80.memptr.w, 1 );
204       RR(H);
205       writebyte(z80.memptr.w, H);
206       break;
207     case 0x1d:		/* LD L,RR (REGISTER+dd) */
208       L=readbyte(z80.memptr.w);
209       contend_read_no_mreq( z80.memptr.w, 1 );
210       RR(L);
211       writebyte(z80.memptr.w, L);
212       break;
213     case 0x1e:		/* RR (REGISTER+dd) */
214       {
215 	libspectrum_byte bytetemp = readbyte(z80.memptr.w);
216 	contend_read_no_mreq( z80.memptr.w, 1 );
217 	RR(bytetemp);
218 	writebyte(z80.memptr.w,bytetemp);
219       }
220       break;
221     case 0x1f:		/* LD A,RR (REGISTER+dd) */
222       A=readbyte(z80.memptr.w);
223       contend_read_no_mreq( z80.memptr.w, 1 );
224       RR(A);
225       writebyte(z80.memptr.w, A);
226       break;
227     case 0x20:		/* LD B,SLA (REGISTER+dd) */
228       B=readbyte(z80.memptr.w);
229       contend_read_no_mreq( z80.memptr.w, 1 );
230       SLA(B);
231       writebyte(z80.memptr.w, B);
232       break;
233     case 0x21:		/* LD C,SLA (REGISTER+dd) */
234       C=readbyte(z80.memptr.w);
235       contend_read_no_mreq( z80.memptr.w, 1 );
236       SLA(C);
237       writebyte(z80.memptr.w, C);
238       break;
239     case 0x22:		/* LD D,SLA (REGISTER+dd) */
240       D=readbyte(z80.memptr.w);
241       contend_read_no_mreq( z80.memptr.w, 1 );
242       SLA(D);
243       writebyte(z80.memptr.w, D);
244       break;
245     case 0x23:		/* LD E,SLA (REGISTER+dd) */
246       E=readbyte(z80.memptr.w);
247       contend_read_no_mreq( z80.memptr.w, 1 );
248       SLA(E);
249       writebyte(z80.memptr.w, E);
250       break;
251     case 0x24:		/* LD H,SLA (REGISTER+dd) */
252       H=readbyte(z80.memptr.w);
253       contend_read_no_mreq( z80.memptr.w, 1 );
254       SLA(H);
255       writebyte(z80.memptr.w, H);
256       break;
257     case 0x25:		/* LD L,SLA (REGISTER+dd) */
258       L=readbyte(z80.memptr.w);
259       contend_read_no_mreq( z80.memptr.w, 1 );
260       SLA(L);
261       writebyte(z80.memptr.w, L);
262       break;
263     case 0x26:		/* SLA (REGISTER+dd) */
264       {
265 	libspectrum_byte bytetemp = readbyte(z80.memptr.w);
266 	contend_read_no_mreq( z80.memptr.w, 1 );
267 	SLA(bytetemp);
268 	writebyte(z80.memptr.w,bytetemp);
269       }
270       break;
271     case 0x27:		/* LD A,SLA (REGISTER+dd) */
272       A=readbyte(z80.memptr.w);
273       contend_read_no_mreq( z80.memptr.w, 1 );
274       SLA(A);
275       writebyte(z80.memptr.w, A);
276       break;
277     case 0x28:		/* LD B,SRA (REGISTER+dd) */
278       B=readbyte(z80.memptr.w);
279       contend_read_no_mreq( z80.memptr.w, 1 );
280       SRA(B);
281       writebyte(z80.memptr.w, B);
282       break;
283     case 0x29:		/* LD C,SRA (REGISTER+dd) */
284       C=readbyte(z80.memptr.w);
285       contend_read_no_mreq( z80.memptr.w, 1 );
286       SRA(C);
287       writebyte(z80.memptr.w, C);
288       break;
289     case 0x2a:		/* LD D,SRA (REGISTER+dd) */
290       D=readbyte(z80.memptr.w);
291       contend_read_no_mreq( z80.memptr.w, 1 );
292       SRA(D);
293       writebyte(z80.memptr.w, D);
294       break;
295     case 0x2b:		/* LD E,SRA (REGISTER+dd) */
296       E=readbyte(z80.memptr.w);
297       contend_read_no_mreq( z80.memptr.w, 1 );
298       SRA(E);
299       writebyte(z80.memptr.w, E);
300       break;
301     case 0x2c:		/* LD H,SRA (REGISTER+dd) */
302       H=readbyte(z80.memptr.w);
303       contend_read_no_mreq( z80.memptr.w, 1 );
304       SRA(H);
305       writebyte(z80.memptr.w, H);
306       break;
307     case 0x2d:		/* LD L,SRA (REGISTER+dd) */
308       L=readbyte(z80.memptr.w);
309       contend_read_no_mreq( z80.memptr.w, 1 );
310       SRA(L);
311       writebyte(z80.memptr.w, L);
312       break;
313     case 0x2e:		/* SRA (REGISTER+dd) */
314       {
315 	libspectrum_byte bytetemp = readbyte(z80.memptr.w);
316 	contend_read_no_mreq( z80.memptr.w, 1 );
317 	SRA(bytetemp);
318 	writebyte(z80.memptr.w,bytetemp);
319       }
320       break;
321     case 0x2f:		/* LD A,SRA (REGISTER+dd) */
322       A=readbyte(z80.memptr.w);
323       contend_read_no_mreq( z80.memptr.w, 1 );
324       SRA(A);
325       writebyte(z80.memptr.w, A);
326       break;
327     case 0x30:		/* LD B,SLL (REGISTER+dd) */
328       B=readbyte(z80.memptr.w);
329       contend_read_no_mreq( z80.memptr.w, 1 );
330       SLL(B);
331       writebyte(z80.memptr.w, B);
332       break;
333     case 0x31:		/* LD C,SLL (REGISTER+dd) */
334       C=readbyte(z80.memptr.w);
335       contend_read_no_mreq( z80.memptr.w, 1 );
336       SLL(C);
337       writebyte(z80.memptr.w, C);
338       break;
339     case 0x32:		/* LD D,SLL (REGISTER+dd) */
340       D=readbyte(z80.memptr.w);
341       contend_read_no_mreq( z80.memptr.w, 1 );
342       SLL(D);
343       writebyte(z80.memptr.w, D);
344       break;
345     case 0x33:		/* LD E,SLL (REGISTER+dd) */
346       E=readbyte(z80.memptr.w);
347       contend_read_no_mreq( z80.memptr.w, 1 );
348       SLL(E);
349       writebyte(z80.memptr.w, E);
350       break;
351     case 0x34:		/* LD H,SLL (REGISTER+dd) */
352       H=readbyte(z80.memptr.w);
353       contend_read_no_mreq( z80.memptr.w, 1 );
354       SLL(H);
355       writebyte(z80.memptr.w, H);
356       break;
357     case 0x35:		/* LD L,SLL (REGISTER+dd) */
358       L=readbyte(z80.memptr.w);
359       contend_read_no_mreq( z80.memptr.w, 1 );
360       SLL(L);
361       writebyte(z80.memptr.w, L);
362       break;
363     case 0x36:		/* SLL (REGISTER+dd) */
364       {
365 	libspectrum_byte bytetemp = readbyte(z80.memptr.w);
366 	contend_read_no_mreq( z80.memptr.w, 1 );
367 	SLL(bytetemp);
368 	writebyte(z80.memptr.w,bytetemp);
369       }
370       break;
371     case 0x37:		/* LD A,SLL (REGISTER+dd) */
372       A=readbyte(z80.memptr.w);
373       contend_read_no_mreq( z80.memptr.w, 1 );
374       SLL(A);
375       writebyte(z80.memptr.w, A);
376       break;
377     case 0x38:		/* LD B,SRL (REGISTER+dd) */
378       B=readbyte(z80.memptr.w);
379       contend_read_no_mreq( z80.memptr.w, 1 );
380       SRL(B);
381       writebyte(z80.memptr.w, B);
382       break;
383     case 0x39:		/* LD C,SRL (REGISTER+dd) */
384       C=readbyte(z80.memptr.w);
385       contend_read_no_mreq( z80.memptr.w, 1 );
386       SRL(C);
387       writebyte(z80.memptr.w, C);
388       break;
389     case 0x3a:		/* LD D,SRL (REGISTER+dd) */
390       D=readbyte(z80.memptr.w);
391       contend_read_no_mreq( z80.memptr.w, 1 );
392       SRL(D);
393       writebyte(z80.memptr.w, D);
394       break;
395     case 0x3b:		/* LD E,SRL (REGISTER+dd) */
396       E=readbyte(z80.memptr.w);
397       contend_read_no_mreq( z80.memptr.w, 1 );
398       SRL(E);
399       writebyte(z80.memptr.w, E);
400       break;
401     case 0x3c:		/* LD H,SRL (REGISTER+dd) */
402       H=readbyte(z80.memptr.w);
403       contend_read_no_mreq( z80.memptr.w, 1 );
404       SRL(H);
405       writebyte(z80.memptr.w, H);
406       break;
407     case 0x3d:		/* LD L,SRL (REGISTER+dd) */
408       L=readbyte(z80.memptr.w);
409       contend_read_no_mreq( z80.memptr.w, 1 );
410       SRL(L);
411       writebyte(z80.memptr.w, L);
412       break;
413     case 0x3e:		/* SRL (REGISTER+dd) */
414       {
415 	libspectrum_byte bytetemp = readbyte(z80.memptr.w);
416 	contend_read_no_mreq( z80.memptr.w, 1 );
417 	SRL(bytetemp);
418 	writebyte(z80.memptr.w,bytetemp);
419       }
420       break;
421     case 0x3f:		/* LD A,SRL (REGISTER+dd) */
422       A=readbyte(z80.memptr.w);
423       contend_read_no_mreq( z80.memptr.w, 1 );
424       SRL(A);
425       writebyte(z80.memptr.w, A);
426       break;
427     case 0x40:
428     case 0x41:
429     case 0x42:
430     case 0x43:
431     case 0x44:
432     case 0x45:
433     case 0x46:
434     case 0x47:		/* BIT 0,(REGISTER+dd) */
435       {
436 	libspectrum_byte bytetemp = readbyte( z80.memptr.w );
437 	contend_read_no_mreq( z80.memptr.w, 1 );
438 	BIT_MEMPTR( 0, bytetemp );
439       }
440       break;
441     case 0x48:
442     case 0x49:
443     case 0x4a:
444     case 0x4b:
445     case 0x4c:
446     case 0x4d:
447     case 0x4e:
448     case 0x4f:		/* BIT 1,(REGISTER+dd) */
449       {
450 	libspectrum_byte bytetemp = readbyte( z80.memptr.w );
451 	contend_read_no_mreq( z80.memptr.w, 1 );
452 	BIT_MEMPTR( 1, bytetemp );
453       }
454       break;
455     case 0x50:
456     case 0x51:
457     case 0x52:
458     case 0x53:
459     case 0x54:
460     case 0x55:
461     case 0x56:
462     case 0x57:		/* BIT 2,(REGISTER+dd) */
463       {
464 	libspectrum_byte bytetemp = readbyte( z80.memptr.w );
465 	contend_read_no_mreq( z80.memptr.w, 1 );
466 	BIT_MEMPTR( 2, bytetemp );
467       }
468       break;
469     case 0x58:
470     case 0x59:
471     case 0x5a:
472     case 0x5b:
473     case 0x5c:
474     case 0x5d:
475     case 0x5e:
476     case 0x5f:		/* BIT 3,(REGISTER+dd) */
477       {
478 	libspectrum_byte bytetemp = readbyte( z80.memptr.w );
479 	contend_read_no_mreq( z80.memptr.w, 1 );
480 	BIT_MEMPTR( 3, bytetemp );
481       }
482       break;
483     case 0x60:
484     case 0x61:
485     case 0x62:
486     case 0x63:
487     case 0x64:
488     case 0x65:
489     case 0x66:
490     case 0x67:		/* BIT 4,(REGISTER+dd) */
491       {
492 	libspectrum_byte bytetemp = readbyte( z80.memptr.w );
493 	contend_read_no_mreq( z80.memptr.w, 1 );
494 	BIT_MEMPTR( 4, bytetemp );
495       }
496       break;
497     case 0x68:
498     case 0x69:
499     case 0x6a:
500     case 0x6b:
501     case 0x6c:
502     case 0x6d:
503     case 0x6e:
504     case 0x6f:		/* BIT 5,(REGISTER+dd) */
505       {
506 	libspectrum_byte bytetemp = readbyte( z80.memptr.w );
507 	contend_read_no_mreq( z80.memptr.w, 1 );
508 	BIT_MEMPTR( 5, bytetemp );
509       }
510       break;
511     case 0x70:
512     case 0x71:
513     case 0x72:
514     case 0x73:
515     case 0x74:
516     case 0x75:
517     case 0x76:
518     case 0x77:		/* BIT 6,(REGISTER+dd) */
519       {
520 	libspectrum_byte bytetemp = readbyte( z80.memptr.w );
521 	contend_read_no_mreq( z80.memptr.w, 1 );
522 	BIT_MEMPTR( 6, bytetemp );
523       }
524       break;
525     case 0x78:
526     case 0x79:
527     case 0x7a:
528     case 0x7b:
529     case 0x7c:
530     case 0x7d:
531     case 0x7e:
532     case 0x7f:		/* BIT 7,(REGISTER+dd) */
533       {
534 	libspectrum_byte bytetemp = readbyte( z80.memptr.w );
535 	contend_read_no_mreq( z80.memptr.w, 1 );
536 	BIT_MEMPTR( 7, bytetemp );
537       }
538       break;
539     case 0x80:		/* LD B,RES 0,(REGISTER+dd) */
540       B = readbyte(z80.memptr.w) & 0xfe;
541       contend_read_no_mreq( z80.memptr.w, 1 );
542       writebyte(z80.memptr.w, B);
543       break;
544     case 0x81:		/* LD C,RES 0,(REGISTER+dd) */
545       C = readbyte(z80.memptr.w) & 0xfe;
546       contend_read_no_mreq( z80.memptr.w, 1 );
547       writebyte(z80.memptr.w, C);
548       break;
549     case 0x82:		/* LD D,RES 0,(REGISTER+dd) */
550       D = readbyte(z80.memptr.w) & 0xfe;
551       contend_read_no_mreq( z80.memptr.w, 1 );
552       writebyte(z80.memptr.w, D);
553       break;
554     case 0x83:		/* LD E,RES 0,(REGISTER+dd) */
555       E = readbyte(z80.memptr.w) & 0xfe;
556       contend_read_no_mreq( z80.memptr.w, 1 );
557       writebyte(z80.memptr.w, E);
558       break;
559     case 0x84:		/* LD H,RES 0,(REGISTER+dd) */
560       H = readbyte(z80.memptr.w) & 0xfe;
561       contend_read_no_mreq( z80.memptr.w, 1 );
562       writebyte(z80.memptr.w, H);
563       break;
564     case 0x85:		/* LD L,RES 0,(REGISTER+dd) */
565       L = readbyte(z80.memptr.w) & 0xfe;
566       contend_read_no_mreq( z80.memptr.w, 1 );
567       writebyte(z80.memptr.w, L);
568       break;
569     case 0x86:		/* RES 0,(REGISTER+dd) */
570       {
571 	libspectrum_byte bytetemp;
572 	bytetemp = readbyte( z80.memptr.w );
573 	contend_read_no_mreq( z80.memptr.w, 1 );
574 	writebyte( z80.memptr.w, bytetemp & 0xfe );
575       }
576       break;
577     case 0x87:		/* LD A,RES 0,(REGISTER+dd) */
578       A = readbyte(z80.memptr.w) & 0xfe;
579       contend_read_no_mreq( z80.memptr.w, 1 );
580       writebyte(z80.memptr.w, A);
581       break;
582     case 0x88:		/* LD B,RES 1,(REGISTER+dd) */
583       B = readbyte(z80.memptr.w) & 0xfd;
584       contend_read_no_mreq( z80.memptr.w, 1 );
585       writebyte(z80.memptr.w, B);
586       break;
587     case 0x89:		/* LD C,RES 1,(REGISTER+dd) */
588       C = readbyte(z80.memptr.w) & 0xfd;
589       contend_read_no_mreq( z80.memptr.w, 1 );
590       writebyte(z80.memptr.w, C);
591       break;
592     case 0x8a:		/* LD D,RES 1,(REGISTER+dd) */
593       D = readbyte(z80.memptr.w) & 0xfd;
594       contend_read_no_mreq( z80.memptr.w, 1 );
595       writebyte(z80.memptr.w, D);
596       break;
597     case 0x8b:		/* LD E,RES 1,(REGISTER+dd) */
598       E = readbyte(z80.memptr.w) & 0xfd;
599       contend_read_no_mreq( z80.memptr.w, 1 );
600       writebyte(z80.memptr.w, E);
601       break;
602     case 0x8c:		/* LD H,RES 1,(REGISTER+dd) */
603       H = readbyte(z80.memptr.w) & 0xfd;
604       contend_read_no_mreq( z80.memptr.w, 1 );
605       writebyte(z80.memptr.w, H);
606       break;
607     case 0x8d:		/* LD L,RES 1,(REGISTER+dd) */
608       L = readbyte(z80.memptr.w) & 0xfd;
609       contend_read_no_mreq( z80.memptr.w, 1 );
610       writebyte(z80.memptr.w, L);
611       break;
612     case 0x8e:		/* RES 1,(REGISTER+dd) */
613       {
614 	libspectrum_byte bytetemp;
615 	bytetemp = readbyte( z80.memptr.w );
616 	contend_read_no_mreq( z80.memptr.w, 1 );
617 	writebyte( z80.memptr.w, bytetemp & 0xfd );
618       }
619       break;
620     case 0x8f:		/* LD A,RES 1,(REGISTER+dd) */
621       A = readbyte(z80.memptr.w) & 0xfd;
622       contend_read_no_mreq( z80.memptr.w, 1 );
623       writebyte(z80.memptr.w, A);
624       break;
625     case 0x90:		/* LD B,RES 2,(REGISTER+dd) */
626       B = readbyte(z80.memptr.w) & 0xfb;
627       contend_read_no_mreq( z80.memptr.w, 1 );
628       writebyte(z80.memptr.w, B);
629       break;
630     case 0x91:		/* LD C,RES 2,(REGISTER+dd) */
631       C = readbyte(z80.memptr.w) & 0xfb;
632       contend_read_no_mreq( z80.memptr.w, 1 );
633       writebyte(z80.memptr.w, C);
634       break;
635     case 0x92:		/* LD D,RES 2,(REGISTER+dd) */
636       D = readbyte(z80.memptr.w) & 0xfb;
637       contend_read_no_mreq( z80.memptr.w, 1 );
638       writebyte(z80.memptr.w, D);
639       break;
640     case 0x93:		/* LD E,RES 2,(REGISTER+dd) */
641       E = readbyte(z80.memptr.w) & 0xfb;
642       contend_read_no_mreq( z80.memptr.w, 1 );
643       writebyte(z80.memptr.w, E);
644       break;
645     case 0x94:		/* LD H,RES 2,(REGISTER+dd) */
646       H = readbyte(z80.memptr.w) & 0xfb;
647       contend_read_no_mreq( z80.memptr.w, 1 );
648       writebyte(z80.memptr.w, H);
649       break;
650     case 0x95:		/* LD L,RES 2,(REGISTER+dd) */
651       L = readbyte(z80.memptr.w) & 0xfb;
652       contend_read_no_mreq( z80.memptr.w, 1 );
653       writebyte(z80.memptr.w, L);
654       break;
655     case 0x96:		/* RES 2,(REGISTER+dd) */
656       {
657 	libspectrum_byte bytetemp;
658 	bytetemp = readbyte( z80.memptr.w );
659 	contend_read_no_mreq( z80.memptr.w, 1 );
660 	writebyte( z80.memptr.w, bytetemp & 0xfb );
661       }
662       break;
663     case 0x97:		/* LD A,RES 2,(REGISTER+dd) */
664       A = readbyte(z80.memptr.w) & 0xfb;
665       contend_read_no_mreq( z80.memptr.w, 1 );
666       writebyte(z80.memptr.w, A);
667       break;
668     case 0x98:		/* LD B,RES 3,(REGISTER+dd) */
669       B = readbyte(z80.memptr.w) & 0xf7;
670       contend_read_no_mreq( z80.memptr.w, 1 );
671       writebyte(z80.memptr.w, B);
672       break;
673     case 0x99:		/* LD C,RES 3,(REGISTER+dd) */
674       C = readbyte(z80.memptr.w) & 0xf7;
675       contend_read_no_mreq( z80.memptr.w, 1 );
676       writebyte(z80.memptr.w, C);
677       break;
678     case 0x9a:		/* LD D,RES 3,(REGISTER+dd) */
679       D = readbyte(z80.memptr.w) & 0xf7;
680       contend_read_no_mreq( z80.memptr.w, 1 );
681       writebyte(z80.memptr.w, D);
682       break;
683     case 0x9b:		/* LD E,RES 3,(REGISTER+dd) */
684       E = readbyte(z80.memptr.w) & 0xf7;
685       contend_read_no_mreq( z80.memptr.w, 1 );
686       writebyte(z80.memptr.w, E);
687       break;
688     case 0x9c:		/* LD H,RES 3,(REGISTER+dd) */
689       H = readbyte(z80.memptr.w) & 0xf7;
690       contend_read_no_mreq( z80.memptr.w, 1 );
691       writebyte(z80.memptr.w, H);
692       break;
693     case 0x9d:		/* LD L,RES 3,(REGISTER+dd) */
694       L = readbyte(z80.memptr.w) & 0xf7;
695       contend_read_no_mreq( z80.memptr.w, 1 );
696       writebyte(z80.memptr.w, L);
697       break;
698     case 0x9e:		/* RES 3,(REGISTER+dd) */
699       {
700 	libspectrum_byte bytetemp;
701 	bytetemp = readbyte( z80.memptr.w );
702 	contend_read_no_mreq( z80.memptr.w, 1 );
703 	writebyte( z80.memptr.w, bytetemp & 0xf7 );
704       }
705       break;
706     case 0x9f:		/* LD A,RES 3,(REGISTER+dd) */
707       A = readbyte(z80.memptr.w) & 0xf7;
708       contend_read_no_mreq( z80.memptr.w, 1 );
709       writebyte(z80.memptr.w, A);
710       break;
711     case 0xa0:		/* LD B,RES 4,(REGISTER+dd) */
712       B = readbyte(z80.memptr.w) & 0xef;
713       contend_read_no_mreq( z80.memptr.w, 1 );
714       writebyte(z80.memptr.w, B);
715       break;
716     case 0xa1:		/* LD C,RES 4,(REGISTER+dd) */
717       C = readbyte(z80.memptr.w) & 0xef;
718       contend_read_no_mreq( z80.memptr.w, 1 );
719       writebyte(z80.memptr.w, C);
720       break;
721     case 0xa2:		/* LD D,RES 4,(REGISTER+dd) */
722       D = readbyte(z80.memptr.w) & 0xef;
723       contend_read_no_mreq( z80.memptr.w, 1 );
724       writebyte(z80.memptr.w, D);
725       break;
726     case 0xa3:		/* LD E,RES 4,(REGISTER+dd) */
727       E = readbyte(z80.memptr.w) & 0xef;
728       contend_read_no_mreq( z80.memptr.w, 1 );
729       writebyte(z80.memptr.w, E);
730       break;
731     case 0xa4:		/* LD H,RES 4,(REGISTER+dd) */
732       H = readbyte(z80.memptr.w) & 0xef;
733       contend_read_no_mreq( z80.memptr.w, 1 );
734       writebyte(z80.memptr.w, H);
735       break;
736     case 0xa5:		/* LD L,RES 4,(REGISTER+dd) */
737       L = readbyte(z80.memptr.w) & 0xef;
738       contend_read_no_mreq( z80.memptr.w, 1 );
739       writebyte(z80.memptr.w, L);
740       break;
741     case 0xa6:		/* RES 4,(REGISTER+dd) */
742       {
743 	libspectrum_byte bytetemp;
744 	bytetemp = readbyte( z80.memptr.w );
745 	contend_read_no_mreq( z80.memptr.w, 1 );
746 	writebyte( z80.memptr.w, bytetemp & 0xef );
747       }
748       break;
749     case 0xa7:		/* LD A,RES 4,(REGISTER+dd) */
750       A = readbyte(z80.memptr.w) & 0xef;
751       contend_read_no_mreq( z80.memptr.w, 1 );
752       writebyte(z80.memptr.w, A);
753       break;
754     case 0xa8:		/* LD B,RES 5,(REGISTER+dd) */
755       B = readbyte(z80.memptr.w) & 0xdf;
756       contend_read_no_mreq( z80.memptr.w, 1 );
757       writebyte(z80.memptr.w, B);
758       break;
759     case 0xa9:		/* LD C,RES 5,(REGISTER+dd) */
760       C = readbyte(z80.memptr.w) & 0xdf;
761       contend_read_no_mreq( z80.memptr.w, 1 );
762       writebyte(z80.memptr.w, C);
763       break;
764     case 0xaa:		/* LD D,RES 5,(REGISTER+dd) */
765       D = readbyte(z80.memptr.w) & 0xdf;
766       contend_read_no_mreq( z80.memptr.w, 1 );
767       writebyte(z80.memptr.w, D);
768       break;
769     case 0xab:		/* LD E,RES 5,(REGISTER+dd) */
770       E = readbyte(z80.memptr.w) & 0xdf;
771       contend_read_no_mreq( z80.memptr.w, 1 );
772       writebyte(z80.memptr.w, E);
773       break;
774     case 0xac:		/* LD H,RES 5,(REGISTER+dd) */
775       H = readbyte(z80.memptr.w) & 0xdf;
776       contend_read_no_mreq( z80.memptr.w, 1 );
777       writebyte(z80.memptr.w, H);
778       break;
779     case 0xad:		/* LD L,RES 5,(REGISTER+dd) */
780       L = readbyte(z80.memptr.w) & 0xdf;
781       contend_read_no_mreq( z80.memptr.w, 1 );
782       writebyte(z80.memptr.w, L);
783       break;
784     case 0xae:		/* RES 5,(REGISTER+dd) */
785       {
786 	libspectrum_byte bytetemp;
787 	bytetemp = readbyte( z80.memptr.w );
788 	contend_read_no_mreq( z80.memptr.w, 1 );
789 	writebyte( z80.memptr.w, bytetemp & 0xdf );
790       }
791       break;
792     case 0xaf:		/* LD A,RES 5,(REGISTER+dd) */
793       A = readbyte(z80.memptr.w) & 0xdf;
794       contend_read_no_mreq( z80.memptr.w, 1 );
795       writebyte(z80.memptr.w, A);
796       break;
797     case 0xb0:		/* LD B,RES 6,(REGISTER+dd) */
798       B = readbyte(z80.memptr.w) & 0xbf;
799       contend_read_no_mreq( z80.memptr.w, 1 );
800       writebyte(z80.memptr.w, B);
801       break;
802     case 0xb1:		/* LD C,RES 6,(REGISTER+dd) */
803       C = readbyte(z80.memptr.w) & 0xbf;
804       contend_read_no_mreq( z80.memptr.w, 1 );
805       writebyte(z80.memptr.w, C);
806       break;
807     case 0xb2:		/* LD D,RES 6,(REGISTER+dd) */
808       D = readbyte(z80.memptr.w) & 0xbf;
809       contend_read_no_mreq( z80.memptr.w, 1 );
810       writebyte(z80.memptr.w, D);
811       break;
812     case 0xb3:		/* LD E,RES 6,(REGISTER+dd) */
813       E = readbyte(z80.memptr.w) & 0xbf;
814       contend_read_no_mreq( z80.memptr.w, 1 );
815       writebyte(z80.memptr.w, E);
816       break;
817     case 0xb4:		/* LD H,RES 6,(REGISTER+dd) */
818       H = readbyte(z80.memptr.w) & 0xbf;
819       contend_read_no_mreq( z80.memptr.w, 1 );
820       writebyte(z80.memptr.w, H);
821       break;
822     case 0xb5:		/* LD L,RES 6,(REGISTER+dd) */
823       L = readbyte(z80.memptr.w) & 0xbf;
824       contend_read_no_mreq( z80.memptr.w, 1 );
825       writebyte(z80.memptr.w, L);
826       break;
827     case 0xb6:		/* RES 6,(REGISTER+dd) */
828       {
829 	libspectrum_byte bytetemp;
830 	bytetemp = readbyte( z80.memptr.w );
831 	contend_read_no_mreq( z80.memptr.w, 1 );
832 	writebyte( z80.memptr.w, bytetemp & 0xbf );
833       }
834       break;
835     case 0xb7:		/* LD A,RES 6,(REGISTER+dd) */
836       A = readbyte(z80.memptr.w) & 0xbf;
837       contend_read_no_mreq( z80.memptr.w, 1 );
838       writebyte(z80.memptr.w, A);
839       break;
840     case 0xb8:		/* LD B,RES 7,(REGISTER+dd) */
841       B = readbyte(z80.memptr.w) & 0x7f;
842       contend_read_no_mreq( z80.memptr.w, 1 );
843       writebyte(z80.memptr.w, B);
844       break;
845     case 0xb9:		/* LD C,RES 7,(REGISTER+dd) */
846       C = readbyte(z80.memptr.w) & 0x7f;
847       contend_read_no_mreq( z80.memptr.w, 1 );
848       writebyte(z80.memptr.w, C);
849       break;
850     case 0xba:		/* LD D,RES 7,(REGISTER+dd) */
851       D = readbyte(z80.memptr.w) & 0x7f;
852       contend_read_no_mreq( z80.memptr.w, 1 );
853       writebyte(z80.memptr.w, D);
854       break;
855     case 0xbb:		/* LD E,RES 7,(REGISTER+dd) */
856       E = readbyte(z80.memptr.w) & 0x7f;
857       contend_read_no_mreq( z80.memptr.w, 1 );
858       writebyte(z80.memptr.w, E);
859       break;
860     case 0xbc:		/* LD H,RES 7,(REGISTER+dd) */
861       H = readbyte(z80.memptr.w) & 0x7f;
862       contend_read_no_mreq( z80.memptr.w, 1 );
863       writebyte(z80.memptr.w, H);
864       break;
865     case 0xbd:		/* LD L,RES 7,(REGISTER+dd) */
866       L = readbyte(z80.memptr.w) & 0x7f;
867       contend_read_no_mreq( z80.memptr.w, 1 );
868       writebyte(z80.memptr.w, L);
869       break;
870     case 0xbe:		/* RES 7,(REGISTER+dd) */
871       {
872 	libspectrum_byte bytetemp;
873 	bytetemp = readbyte( z80.memptr.w );
874 	contend_read_no_mreq( z80.memptr.w, 1 );
875 	writebyte( z80.memptr.w, bytetemp & 0x7f );
876       }
877       break;
878     case 0xbf:		/* LD A,RES 7,(REGISTER+dd) */
879       A = readbyte(z80.memptr.w) & 0x7f;
880       contend_read_no_mreq( z80.memptr.w, 1 );
881       writebyte(z80.memptr.w, A);
882       break;
883     case 0xc0:		/* LD B,SET 0,(REGISTER+dd) */
884       B = readbyte(z80.memptr.w) | 0x01;
885       contend_read_no_mreq( z80.memptr.w, 1 );
886       writebyte(z80.memptr.w, B);
887       break;
888     case 0xc1:		/* LD C,SET 0,(REGISTER+dd) */
889       C = readbyte(z80.memptr.w) | 0x01;
890       contend_read_no_mreq( z80.memptr.w, 1 );
891       writebyte(z80.memptr.w, C);
892       break;
893     case 0xc2:		/* LD D,SET 0,(REGISTER+dd) */
894       D = readbyte(z80.memptr.w) | 0x01;
895       contend_read_no_mreq( z80.memptr.w, 1 );
896       writebyte(z80.memptr.w, D);
897       break;
898     case 0xc3:		/* LD E,SET 0,(REGISTER+dd) */
899       E = readbyte(z80.memptr.w) | 0x01;
900       contend_read_no_mreq( z80.memptr.w, 1 );
901       writebyte(z80.memptr.w, E);
902       break;
903     case 0xc4:		/* LD H,SET 0,(REGISTER+dd) */
904       H = readbyte(z80.memptr.w) | 0x01;
905       contend_read_no_mreq( z80.memptr.w, 1 );
906       writebyte(z80.memptr.w, H);
907       break;
908     case 0xc5:		/* LD L,SET 0,(REGISTER+dd) */
909       L = readbyte(z80.memptr.w) | 0x01;
910       contend_read_no_mreq( z80.memptr.w, 1 );
911       writebyte(z80.memptr.w, L);
912       break;
913     case 0xc6:		/* SET 0,(REGISTER+dd) */
914       {
915 	libspectrum_byte bytetemp;
916 	bytetemp = readbyte( z80.memptr.w );
917 	contend_read_no_mreq( z80.memptr.w, 1 );
918 	writebyte( z80.memptr.w, bytetemp | 0x01 );
919       }
920       break;
921     case 0xc7:		/* LD A,SET 0,(REGISTER+dd) */
922       A = readbyte(z80.memptr.w) | 0x01;
923       contend_read_no_mreq( z80.memptr.w, 1 );
924       writebyte(z80.memptr.w, A);
925       break;
926     case 0xc8:		/* LD B,SET 1,(REGISTER+dd) */
927       B = readbyte(z80.memptr.w) | 0x02;
928       contend_read_no_mreq( z80.memptr.w, 1 );
929       writebyte(z80.memptr.w, B);
930       break;
931     case 0xc9:		/* LD C,SET 1,(REGISTER+dd) */
932       C = readbyte(z80.memptr.w) | 0x02;
933       contend_read_no_mreq( z80.memptr.w, 1 );
934       writebyte(z80.memptr.w, C);
935       break;
936     case 0xca:		/* LD D,SET 1,(REGISTER+dd) */
937       D = readbyte(z80.memptr.w) | 0x02;
938       contend_read_no_mreq( z80.memptr.w, 1 );
939       writebyte(z80.memptr.w, D);
940       break;
941     case 0xcb:		/* LD E,SET 1,(REGISTER+dd) */
942       E = readbyte(z80.memptr.w) | 0x02;
943       contend_read_no_mreq( z80.memptr.w, 1 );
944       writebyte(z80.memptr.w, E);
945       break;
946     case 0xcc:		/* LD H,SET 1,(REGISTER+dd) */
947       H = readbyte(z80.memptr.w) | 0x02;
948       contend_read_no_mreq( z80.memptr.w, 1 );
949       writebyte(z80.memptr.w, H);
950       break;
951     case 0xcd:		/* LD L,SET 1,(REGISTER+dd) */
952       L = readbyte(z80.memptr.w) | 0x02;
953       contend_read_no_mreq( z80.memptr.w, 1 );
954       writebyte(z80.memptr.w, L);
955       break;
956     case 0xce:		/* SET 1,(REGISTER+dd) */
957       {
958 	libspectrum_byte bytetemp;
959 	bytetemp = readbyte( z80.memptr.w );
960 	contend_read_no_mreq( z80.memptr.w, 1 );
961 	writebyte( z80.memptr.w, bytetemp | 0x02 );
962       }
963       break;
964     case 0xcf:		/* LD A,SET 1,(REGISTER+dd) */
965       A = readbyte(z80.memptr.w) | 0x02;
966       contend_read_no_mreq( z80.memptr.w, 1 );
967       writebyte(z80.memptr.w, A);
968       break;
969     case 0xd0:		/* LD B,SET 2,(REGISTER+dd) */
970       B = readbyte(z80.memptr.w) | 0x04;
971       contend_read_no_mreq( z80.memptr.w, 1 );
972       writebyte(z80.memptr.w, B);
973       break;
974     case 0xd1:		/* LD C,SET 2,(REGISTER+dd) */
975       C = readbyte(z80.memptr.w) | 0x04;
976       contend_read_no_mreq( z80.memptr.w, 1 );
977       writebyte(z80.memptr.w, C);
978       break;
979     case 0xd2:		/* LD D,SET 2,(REGISTER+dd) */
980       D = readbyte(z80.memptr.w) | 0x04;
981       contend_read_no_mreq( z80.memptr.w, 1 );
982       writebyte(z80.memptr.w, D);
983       break;
984     case 0xd3:		/* LD E,SET 2,(REGISTER+dd) */
985       E = readbyte(z80.memptr.w) | 0x04;
986       contend_read_no_mreq( z80.memptr.w, 1 );
987       writebyte(z80.memptr.w, E);
988       break;
989     case 0xd4:		/* LD H,SET 2,(REGISTER+dd) */
990       H = readbyte(z80.memptr.w) | 0x04;
991       contend_read_no_mreq( z80.memptr.w, 1 );
992       writebyte(z80.memptr.w, H);
993       break;
994     case 0xd5:		/* LD L,SET 2,(REGISTER+dd) */
995       L = readbyte(z80.memptr.w) | 0x04;
996       contend_read_no_mreq( z80.memptr.w, 1 );
997       writebyte(z80.memptr.w, L);
998       break;
999     case 0xd6:		/* SET 2,(REGISTER+dd) */
1000       {
1001 	libspectrum_byte bytetemp;
1002 	bytetemp = readbyte( z80.memptr.w );
1003 	contend_read_no_mreq( z80.memptr.w, 1 );
1004 	writebyte( z80.memptr.w, bytetemp | 0x04 );
1005       }
1006       break;
1007     case 0xd7:		/* LD A,SET 2,(REGISTER+dd) */
1008       A = readbyte(z80.memptr.w) | 0x04;
1009       contend_read_no_mreq( z80.memptr.w, 1 );
1010       writebyte(z80.memptr.w, A);
1011       break;
1012     case 0xd8:		/* LD B,SET 3,(REGISTER+dd) */
1013       B = readbyte(z80.memptr.w) | 0x08;
1014       contend_read_no_mreq( z80.memptr.w, 1 );
1015       writebyte(z80.memptr.w, B);
1016       break;
1017     case 0xd9:		/* LD C,SET 3,(REGISTER+dd) */
1018       C = readbyte(z80.memptr.w) | 0x08;
1019       contend_read_no_mreq( z80.memptr.w, 1 );
1020       writebyte(z80.memptr.w, C);
1021       break;
1022     case 0xda:		/* LD D,SET 3,(REGISTER+dd) */
1023       D = readbyte(z80.memptr.w) | 0x08;
1024       contend_read_no_mreq( z80.memptr.w, 1 );
1025       writebyte(z80.memptr.w, D);
1026       break;
1027     case 0xdb:		/* LD E,SET 3,(REGISTER+dd) */
1028       E = readbyte(z80.memptr.w) | 0x08;
1029       contend_read_no_mreq( z80.memptr.w, 1 );
1030       writebyte(z80.memptr.w, E);
1031       break;
1032     case 0xdc:		/* LD H,SET 3,(REGISTER+dd) */
1033       H = readbyte(z80.memptr.w) | 0x08;
1034       contend_read_no_mreq( z80.memptr.w, 1 );
1035       writebyte(z80.memptr.w, H);
1036       break;
1037     case 0xdd:		/* LD L,SET 3,(REGISTER+dd) */
1038       L = readbyte(z80.memptr.w) | 0x08;
1039       contend_read_no_mreq( z80.memptr.w, 1 );
1040       writebyte(z80.memptr.w, L);
1041       break;
1042     case 0xde:		/* SET 3,(REGISTER+dd) */
1043       {
1044 	libspectrum_byte bytetemp;
1045 	bytetemp = readbyte( z80.memptr.w );
1046 	contend_read_no_mreq( z80.memptr.w, 1 );
1047 	writebyte( z80.memptr.w, bytetemp | 0x08 );
1048       }
1049       break;
1050     case 0xdf:		/* LD A,SET 3,(REGISTER+dd) */
1051       A = readbyte(z80.memptr.w) | 0x08;
1052       contend_read_no_mreq( z80.memptr.w, 1 );
1053       writebyte(z80.memptr.w, A);
1054       break;
1055     case 0xe0:		/* LD B,SET 4,(REGISTER+dd) */
1056       B = readbyte(z80.memptr.w) | 0x10;
1057       contend_read_no_mreq( z80.memptr.w, 1 );
1058       writebyte(z80.memptr.w, B);
1059       break;
1060     case 0xe1:		/* LD C,SET 4,(REGISTER+dd) */
1061       C = readbyte(z80.memptr.w) | 0x10;
1062       contend_read_no_mreq( z80.memptr.w, 1 );
1063       writebyte(z80.memptr.w, C);
1064       break;
1065     case 0xe2:		/* LD D,SET 4,(REGISTER+dd) */
1066       D = readbyte(z80.memptr.w) | 0x10;
1067       contend_read_no_mreq( z80.memptr.w, 1 );
1068       writebyte(z80.memptr.w, D);
1069       break;
1070     case 0xe3:		/* LD E,SET 4,(REGISTER+dd) */
1071       E = readbyte(z80.memptr.w) | 0x10;
1072       contend_read_no_mreq( z80.memptr.w, 1 );
1073       writebyte(z80.memptr.w, E);
1074       break;
1075     case 0xe4:		/* LD H,SET 4,(REGISTER+dd) */
1076       H = readbyte(z80.memptr.w) | 0x10;
1077       contend_read_no_mreq( z80.memptr.w, 1 );
1078       writebyte(z80.memptr.w, H);
1079       break;
1080     case 0xe5:		/* LD L,SET 4,(REGISTER+dd) */
1081       L = readbyte(z80.memptr.w) | 0x10;
1082       contend_read_no_mreq( z80.memptr.w, 1 );
1083       writebyte(z80.memptr.w, L);
1084       break;
1085     case 0xe6:		/* SET 4,(REGISTER+dd) */
1086       {
1087 	libspectrum_byte bytetemp;
1088 	bytetemp = readbyte( z80.memptr.w );
1089 	contend_read_no_mreq( z80.memptr.w, 1 );
1090 	writebyte( z80.memptr.w, bytetemp | 0x10 );
1091       }
1092       break;
1093     case 0xe7:		/* LD A,SET 4,(REGISTER+dd) */
1094       A = readbyte(z80.memptr.w) | 0x10;
1095       contend_read_no_mreq( z80.memptr.w, 1 );
1096       writebyte(z80.memptr.w, A);
1097       break;
1098     case 0xe8:		/* LD B,SET 5,(REGISTER+dd) */
1099       B = readbyte(z80.memptr.w) | 0x20;
1100       contend_read_no_mreq( z80.memptr.w, 1 );
1101       writebyte(z80.memptr.w, B);
1102       break;
1103     case 0xe9:		/* LD C,SET 5,(REGISTER+dd) */
1104       C = readbyte(z80.memptr.w) | 0x20;
1105       contend_read_no_mreq( z80.memptr.w, 1 );
1106       writebyte(z80.memptr.w, C);
1107       break;
1108     case 0xea:		/* LD D,SET 5,(REGISTER+dd) */
1109       D = readbyte(z80.memptr.w) | 0x20;
1110       contend_read_no_mreq( z80.memptr.w, 1 );
1111       writebyte(z80.memptr.w, D);
1112       break;
1113     case 0xeb:		/* LD E,SET 5,(REGISTER+dd) */
1114       E = readbyte(z80.memptr.w) | 0x20;
1115       contend_read_no_mreq( z80.memptr.w, 1 );
1116       writebyte(z80.memptr.w, E);
1117       break;
1118     case 0xec:		/* LD H,SET 5,(REGISTER+dd) */
1119       H = readbyte(z80.memptr.w) | 0x20;
1120       contend_read_no_mreq( z80.memptr.w, 1 );
1121       writebyte(z80.memptr.w, H);
1122       break;
1123     case 0xed:		/* LD L,SET 5,(REGISTER+dd) */
1124       L = readbyte(z80.memptr.w) | 0x20;
1125       contend_read_no_mreq( z80.memptr.w, 1 );
1126       writebyte(z80.memptr.w, L);
1127       break;
1128     case 0xee:		/* SET 5,(REGISTER+dd) */
1129       {
1130 	libspectrum_byte bytetemp;
1131 	bytetemp = readbyte( z80.memptr.w );
1132 	contend_read_no_mreq( z80.memptr.w, 1 );
1133 	writebyte( z80.memptr.w, bytetemp | 0x20 );
1134       }
1135       break;
1136     case 0xef:		/* LD A,SET 5,(REGISTER+dd) */
1137       A = readbyte(z80.memptr.w) | 0x20;
1138       contend_read_no_mreq( z80.memptr.w, 1 );
1139       writebyte(z80.memptr.w, A);
1140       break;
1141     case 0xf0:		/* LD B,SET 6,(REGISTER+dd) */
1142       B = readbyte(z80.memptr.w) | 0x40;
1143       contend_read_no_mreq( z80.memptr.w, 1 );
1144       writebyte(z80.memptr.w, B);
1145       break;
1146     case 0xf1:		/* LD C,SET 6,(REGISTER+dd) */
1147       C = readbyte(z80.memptr.w) | 0x40;
1148       contend_read_no_mreq( z80.memptr.w, 1 );
1149       writebyte(z80.memptr.w, C);
1150       break;
1151     case 0xf2:		/* LD D,SET 6,(REGISTER+dd) */
1152       D = readbyte(z80.memptr.w) | 0x40;
1153       contend_read_no_mreq( z80.memptr.w, 1 );
1154       writebyte(z80.memptr.w, D);
1155       break;
1156     case 0xf3:		/* LD E,SET 6,(REGISTER+dd) */
1157       E = readbyte(z80.memptr.w) | 0x40;
1158       contend_read_no_mreq( z80.memptr.w, 1 );
1159       writebyte(z80.memptr.w, E);
1160       break;
1161     case 0xf4:		/* LD H,SET 6,(REGISTER+dd) */
1162       H = readbyte(z80.memptr.w) | 0x40;
1163       contend_read_no_mreq( z80.memptr.w, 1 );
1164       writebyte(z80.memptr.w, H);
1165       break;
1166     case 0xf5:		/* LD L,SET 6,(REGISTER+dd) */
1167       L = readbyte(z80.memptr.w) | 0x40;
1168       contend_read_no_mreq( z80.memptr.w, 1 );
1169       writebyte(z80.memptr.w, L);
1170       break;
1171     case 0xf6:		/* SET 6,(REGISTER+dd) */
1172       {
1173 	libspectrum_byte bytetemp;
1174 	bytetemp = readbyte( z80.memptr.w );
1175 	contend_read_no_mreq( z80.memptr.w, 1 );
1176 	writebyte( z80.memptr.w, bytetemp | 0x40 );
1177       }
1178       break;
1179     case 0xf7:		/* LD A,SET 6,(REGISTER+dd) */
1180       A = readbyte(z80.memptr.w) | 0x40;
1181       contend_read_no_mreq( z80.memptr.w, 1 );
1182       writebyte(z80.memptr.w, A);
1183       break;
1184     case 0xf8:		/* LD B,SET 7,(REGISTER+dd) */
1185       B = readbyte(z80.memptr.w) | 0x80;
1186       contend_read_no_mreq( z80.memptr.w, 1 );
1187       writebyte(z80.memptr.w, B);
1188       break;
1189     case 0xf9:		/* LD C,SET 7,(REGISTER+dd) */
1190       C = readbyte(z80.memptr.w) | 0x80;
1191       contend_read_no_mreq( z80.memptr.w, 1 );
1192       writebyte(z80.memptr.w, C);
1193       break;
1194     case 0xfa:		/* LD D,SET 7,(REGISTER+dd) */
1195       D = readbyte(z80.memptr.w) | 0x80;
1196       contend_read_no_mreq( z80.memptr.w, 1 );
1197       writebyte(z80.memptr.w, D);
1198       break;
1199     case 0xfb:		/* LD E,SET 7,(REGISTER+dd) */
1200       E = readbyte(z80.memptr.w) | 0x80;
1201       contend_read_no_mreq( z80.memptr.w, 1 );
1202       writebyte(z80.memptr.w, E);
1203       break;
1204     case 0xfc:		/* LD H,SET 7,(REGISTER+dd) */
1205       H = readbyte(z80.memptr.w) | 0x80;
1206       contend_read_no_mreq( z80.memptr.w, 1 );
1207       writebyte(z80.memptr.w, H);
1208       break;
1209     case 0xfd:		/* LD L,SET 7,(REGISTER+dd) */
1210       L = readbyte(z80.memptr.w) | 0x80;
1211       contend_read_no_mreq( z80.memptr.w, 1 );
1212       writebyte(z80.memptr.w, L);
1213       break;
1214     case 0xfe:		/* SET 7,(REGISTER+dd) */
1215       {
1216 	libspectrum_byte bytetemp;
1217 	bytetemp = readbyte( z80.memptr.w );
1218 	contend_read_no_mreq( z80.memptr.w, 1 );
1219 	writebyte( z80.memptr.w, bytetemp | 0x80 );
1220       }
1221       break;
1222     case 0xff:		/* LD A,SET 7,(REGISTER+dd) */
1223       A = readbyte(z80.memptr.w) | 0x80;
1224       contend_read_no_mreq( z80.memptr.w, 1 );
1225       writebyte(z80.memptr.w, A);
1226       break;
1227