1	cpu	z88c00
2	page	0
3	include	"regz8.inc"
4
5
6	adc	r3,r5	  	; 12 35
7	adc	r3,@r5  	; 13 35
8	adc	r3,64   	; 14 40 c3
9	adc	32,r5   	; 14 c5 20
10	adc	32,64   	; 14 40 20
11	adc	r3,@64  	; 15 40 c3
12	adc	32,@r5  	; 15 c5 20
13	adc	32,@64  	; 15 40 20
14	adc	r3,#64	 	; 16 c3 40
15	adc	32,#64  	; 16 20 40
16
17	add	r3,r5		; 02 35
18	add	r3,@r5		; 03 35
19	add	r3,64		; 04 40 c3
20	add	32,r5		; 04 c5 20
21	add	32,64		; 04 40 20
22	add	r3,@64		; 05 40 c3
23	add	32,@r5		; 05 c5 20
24	add	32,@64		; 05 40 20
25	add	r3,#64		; 06 c3 40
26	add	32,#64		; 06 20 40
27
28	and	r3,r5		; 52 35
29	and	r3,@r5		; 53 35
30	and	r3,64		; 54 40 c3
31	and	32,r5		; 54 c5 20
32	and	32,64		; 54 40 20
33	and	r3,@64		; 55 40 c3
34	and	32,@r5		; 55 c5 20
35	and	32,@64		; 55 40 20
36	and	r3,#64		; 56 c3 40
37	and	32,#64		; 56 20 40
38
39	band	r3,r5,#7	; 67 3e c5
40	band	r3,64,#7	; 67 3e 40
41	band	r3,#7,r5	; 67 5f c3
42	band	32,#7,r5	; 67 5f 20
43
44	bcp	r3,r5,#7	; 17 3e c5
45	bcp	r3,64,#7	; 17 3e 40
46
47	bitc	r3,#7		; 57 3e
48
49	bitr	r3,#7		; 77 3e
50
51	bits	r3,#7		; 77 3f
52
53	bor	r3,r5,#7	; 07 3e c5
54	bor	r3,64,#7	; 07 3e 40
55	bor	r3,#7,r5	; 07 5f c3
56	bor	32,#7,r5	; 07 5f 20
57
58	btjrf	$,r5,#7 	; 37 5e fd
59	btjrt	$,r5,#7 	; 37 5f fd
60
61	bxor 	r3,r5,#7	; 27 3e c5
62	bxor 	r3,64,#7	; 27 3e 40
63	bxor 	r3,#7,r5	; 27 5f c3
64	bxor 	32,#7,r5	; 27 5f 20
65
66	call 	#32		; d4 20 ?? IA -> Imm
67	call 	@rr2		; f4 c2
68	call 	@32		; f4 20
69	call 	64		; f6 0040
70
71	ccf			; ef
72
73	clr	r3 		; b0 c3
74	clr	32 		; b0 20
75	clr	@r3		; b1 c3
76	clr	@32		; b1 20
77
78	com	r3 		; 60 c3
79	com   	32 		; 60 20
80	com 	@r3		; 61 c3
81	com   	@32		; 61 20
82
83	cp	r3,r5		; a2 35
84	cp	r3,@r5		; a3 35
85	cp	r3,64		; a4 40 c3
86	cp	32,r5		; a4 c5 20
87	cp	32,64		; a4 40 20
88	cp	r3,@64		; a5 40 c3
89	cp	32,@r5		; a5 c5 20
90	cp	32,@64		; a5 40 20
91	cp	r3,#64		; a6 c3 40
92	cp	32,#64		; a6 20 40
93
94	cpijne	r3,@r5,$	; d2 53 fd
95
96	cpije	r3,@r5,$	; c2 53 fd
97
98	da	r3		; 40 c3
99	da	32		; 40 20
100	da	@r3		; 41 c3
101	da	@32		; 41 20
102
103	dec	r3		; 00 c3
104	dec	32		; 00 20
105	dec	@r3		; 01 c3
106	dec	@32		; 01 20
107
108	decw	rr2		; 80 c2
109	decw	32		; 80 20
110	decw	@r3		; 81 c3
111	decw	@32		; 81 20
112
113	di			; 8f
114
115	div	rr2,r5		; 94 c5 c2
116	div	rr2,64		; 94 40 c2
117	div	32,r5		; 94 c5 20
118	div	32,64		; 94 40 20
119	div	rr2,@r5		; 95 c5 c2
120	div	rr2,@64		; 95 40 c2
121	div	32,@r5		; 95 c5 20
122	div	32,@64		; 95 40 20
123	div	rr2,#64		; 96 40 c2
124	div	32,#64		; 96 40 20
125
126	djnz	r3,$		; 3a fe
127
128	ei			; 9f
129
130	enter			; 1f
131
132	exit			; 2f
133
134	inc	r3		; 3e
135	inc	32		; 20 20
136	inc	@r3		; 21 c3
137	inc	@32		; 21 20
138
139	incw	rr2		; a0 c2
140	incw	32		; a0 20
141	incw	@r3		; a1 c3
142	incw	@32		; a1 20
143
144	iret			; bf
145
146	jp	1024		; 8d 04 00
147	jp	nz,1024		; ed 04 00
148	jp	@rr2		; 30 c2
149	jp	@32		; 30 20
150
151	jr	$		; 8b fe
152	jr	nz,$		; eb fe
153
154	ld	r3,#64		; 3c 40
155	ld	r3,r5		; 38 c5
156	ld	r3,64		; 38 40
157	ld	32,r5		; 59 20
158	ld	r3,@r5		; c7 35
159	ld	@r3,r5		; d7 35
160	ld	32,64		; e4 40 20
161	ld	r3,@r5		; c7 35
162	ld	r3,@64		; e5 40 c3
163	ld	32,@r5		; e5 c5 20
164	ld	32,@64		; e5 40 20
165	ld	r3,#64		; 3c 40
166	ld	32,#64		; e6 20 40
167	ld	@r3,#64		; d6 c3 40
168	ld	@32,#64		; d6 20 40
169	ld	@r3,r5		; d7 35
170	ld	@r3,64		; f5 40 c3
171	ld	@32,r5		; f5 c5 20
172	ld	@32,64		; f5 40 20
173	ld	r3,64(r5)	; 87 35 40
174	ld	64(r3),r5	; 97 53 40
175
176	ldb	r3,r5,#7	; 47 3e c5
177	ldb	r3,64,#7	; 47 3e 40
178	ldb	r3,#7,r5	; 47 5f c3
179	ldb	32,#7,r5	; 47 5f 20
180
181	ldc	r3,1024(rr4)	; a7 34 00 04
182	ldc	r3,64(rr4)	; e7 34 40
183	ldc	1024(rr2),r5	; b7 52 00 04
184	ldc	64(rr2),r5	; f7 52 40
185	ldc	32,r5		; b7 50 20 00
186	ldc	r5,64		; a7 50 40 00
187	ldc	r3,@rr4		; c3 34
188	ldc	@rr2,r5		; d3 52
189
190	ldcd	r3,@rr4		; e2 34
191
192	ldci	r3,@rr4		; e3 34
193
194	ldcpd	@rr2,r5		; f2 52
195
196	ldcpi	@rr2,r5		; f3 52
197
198	lde	r3,1024(rr4)	; a7 35 00 04
199	lde	r3,64(rr4)	; e7 35 40
200	lde	1024(rr2),r5	; b7 53 00 04
201	lde	64(rr2),r5	; f7 53 40
202	lde	32,r5		; b7 51 20 00
203	lde	r5,64		; a7 51 40 00
204	lde	r3,@rr4		; c3 35
205	lde	@rr2,r5		; d3 53
206
207	lded	r3,@rr4		; e2 35
208
209	ldei	r3,@rr4		; e3 35
210
211	ldepd	@rr2,r5		; f2 53
212
213	ldepi	@rr2,r5		; f3 53
214
215	ldw	rr2,rr4		; c4 c4 c2
216	ldw	rr2,64		; c4 40 c2
217	ldw	32,rr4		; c4 c4 20
218	ldw	32,64		; c4 40 20
219	ldw	rr2,@r4		; c5 c4 c2
220	ldw	rr2,@64		; c5 40 c2
221	ldw	32,@r4		; c5 c4 20
222	ldw	32,@64		; c5 40 20
223	ldw	rr2,#1024	; c6 c2 04 00
224	ldw	32,#1024	; c6 20 04 00
225
226	mult	rr2,r5		; 84 c5 c2
227	mult	rr2,64		; 84 40 c2
228	mult	32,r5		; 84 c5 20
229	mult	32,64		; 84 40 20
230	mult	rr2,@r5		; 85 c5 c2
231	mult	rr2,@64		; 85 40 c2
232	mult	32,@r5		; 85 c5 20
233	mult	32,@64		; 85 40 20
234	mult	rr2,#64		; 86 40 c2
235	mult	32,#64		; 86 40 20
236
237	next			; 0f
238
239	nop			; ff
240
241	or	r3,r5		; 42 35
242	or	r3,@r5		; 43 35
243	or	r3,64		; 44 40 c3
244	or	32,r5		; 44 c5 20
245	or	32,64		; 44 40 20
246	or	r3,@64		; 45 40 c3
247	or	32,@r5		; 45 c5 20
248	or	32,@64		; 45 40 20
249	or	r3,#64		; 46 c3 40
250	or	32,#64		; 46 20 40
251
252	pop	r3		; 50 c3
253	pop	32		; 50 20
254	pop	@r3		; 51 c3
255	pop	@32		; 51 20
256
257	popud	r3,@r5		; 92 c5 c3
258	popud	r3,@64		; 92 40 c3
259	popud	32,@r5		; 92 c5 20
260	popud	32,@64		; 92 40 20
261
262	popui	r3,@r5		; 93 c5 c3
263	popui	r3,@64		; 93 40 c3
264	popui	32,@r5		; 93 c5 20
265	popui	32,@64		; 93 40 20
266
267	push	r3 		; 70 c3
268	push	32 		; 70 20
269	push	@r3		; 71 c3
270	push	@32		; 71 20
271
272	pushud	@r3,r5		; 82 c3 c5
273	pushud	@r3,64		; 82 c3 40
274	pushud	@32,r5		; 82 20 c5
275	pushud	@32,64		; 82 20 40
276
277	pushui	@r3,r5		; 83 c3 c5
278	pushui	@r3,64		; 83 c3 40
279	pushui	@32,r5		; 83 20 c5
280	pushui	@32,64		; 83 20 40
281
282	rcf			; cf
283
284	rdr	#0a5h		; d5 a5
285
286	ret			; af
287
288	rl	r3		; 90 c3
289	rl	32		; 90 20
290	rl	@r3		; 91 c3
291	rl	@32		; 91 20
292
293	rlc	r3		; 10 c3
294	rlc	32		; 10 20
295	rlc	@r3		; 11 c3
296	rlc	@32		; 11 20
297
298	rr	r3		; e0 c3
299	rr	32		; e0 20
300	rr	@r3		; e1 c3
301	rr	@32		; e1 20
302
303	rrc	r3		; c0 c3
304	rrc	32		; c0 20
305	rrc	@r3		; c1 c3
306	rrc	@32		; c1 20
307
308	sb0			; 4f
309
310	sb1			; 5f
311
312	sbc	r3,r5		; 32 35
313	sbc	r3,@r5		; 33 35
314	sbc	r3,64		; 34 40 c3
315	sbc	32,r5		; 34 c5 20
316	sbc	32,64		; 34 40 20
317	sbc	r3,@64		; 35 40 c3
318	sbc	32,@r5		; 35 c5 20
319	sbc	32,@64		; 35 40 20
320	sbc	r3,#64		; 36 c3 40
321	sbc	32,#64		; 36 20 40
322
323	scf			; df
324
325	sra	r3		; d0 c3
326	sra	32		; d0 20
327	sra	@r3		; d1 c3
328	sra	@32		; d1 20
329
330	srp	#128		; 31 80
331	srp1	#128		; 31 81
332	srp0	#128+8		; 31 8a
333
334	sub	r3,r5		; 22 35
335	sub	r3,@r5		; 23 35
336	sub	r3,64		; 24 40 c3
337	sub	32,r5		; 24 c5 20
338	sub	32,64		; 24 40 20
339	sub	r3,@64		; 25 40 c3
340	sub	32,@r5		; 25 c5 20
341	sub	32,@64		; 25 40 20
342	sub	r3,#64		; 26 c3 40
343	sub	32,#64		; 26 20 40
344
345	swap	r3		; f0 c3
346	swap	32		; f0 20
347	swap	@r3		; f1 c3
348	swap	@32		; f1 20
349
350	tcm	r3,r5		; 62 35
351	tcm	r3,@r5		; 63 35
352	tcm	r3,64		; 64 40 c3
353	tcm	32,r5		; 64 c5 20
354	tcm	32,64		; 64 40 20
355	tcm	r3,@64		; 65 40 c3
356	tcm	32,@r5		; 65 c5 20
357	tcm	32,@64		; 65 40 20
358	tcm	r3,#64		; 66 c3 40
359	tcm	32,#64		; 66 20 40
360
361	tm	r3,r5		; 72 35
362	tm	r3,@r5		; 73 35
363	tm	r3,64		; 74 40 c3
364	tm	32,r5		; 74 c5 20
365	tm	32,64		; 74 40 20
366	tm	r3,@64		; 75 40 c3
367	tm	32,@r5		; 75 c5 20
368	tm	32,@64		; 75 40 20
369	tm	r3,#64		; 76 c3 40
370	tm	32,#64		; 76 20 40
371
372	xor	r3,r5		; b2 35
373	xor	r3,@r5		; b3 35
374	xor	r3,64		; b4 40 c3
375	xor	32,r5		; b4 c5 20
376	xor	32,64		; b4 40 20
377	xor	r3,@64		; b5 40 c3
378	xor	32,@r5		; b5 c5 20
379	xor	32,@64		; b5 40 20
380	xor	r3,#64		; b6 c3 40
381	xor	32,#64		; b6 20 40
382
383	wfi			; 3f
384
385	; test for condition codes
386
387	jp	f,128		; 0d 00 80
388	jp	z,128		; 6d 00 80
389	jp	nz,128		; ed 00 80
390	jp	eq,128		; 6d 00 80
391	jp	ne,128		; ed 00 80
392	jp	c,128		; 7d 00 80
393	jp	nc,128		; fd 00 80
394	jp	gt,128		; ad 00 80
395	jp	lt,128		; 1d 00 80
396	jp	ge,128		; 9d 00 80
397	jp	le,128		; 2d 00 80
398	jp	pl,128		; dd 00 80
399	jp	mi,128		; 5d 00 80
400	jp	nov,128		; cd 00 80
401	jp	ov,128		; 4d 00 80
402	jp	ugt,128		; bd 00 80
403	jp	ult,128		; 7d 00 80
404	jp	uge,128		; fd 00 80
405	jp	ule,128		; 3d 00 80
406
407	; defined register names
408
409	ld	r3,sym		; 38 de
410	ld	r3,imr		; 38 dd
411	ld	r3,irr		; 38 dc
412	ldw	rr2,ip		; c4 da c2
413	ld	r3,ipl		; 38 db
414	ld	r3,iph		; 38 da
415	ldw	rr2,sp		; c4 d8 c2
416	ld	r3,spl		; 38 d9
417	ld	r3,sph		; 38 da
418	ld	r3,rp1		; 38 d7
419	ld	r3,rp0		; 38 d6
420	ld	r3,flags	; 38 d5
421	ld	r3,p4		; 38 d4
422	ld	r3,p3		; 38 d3
423	ld	r3,p2		; 38 d2
424	ld	r3,p1		; 38 d1
425	ld	r3,p0		; 38 d0
426
427	; Bank 0 Special Registers
428
429	ld	r3,ipr		; 38 ff
430	ld	r3,emt		; 38 fe
431	ld	r3,p2bip	; 38 fd
432	ld	r3,p2aip	; 38 fc
433	ld	r3,p2dm		; 38 fb
434	ld	r3,p2cm		; 38 fa
435	ld	r3,p2bm		; 38 f9
436	ld	r3,p2am		; 38 f8
437	ld	r3,p4od		; 38 f7
438	ld	r3,p4d		; 38 f6
439	ld	r3,h1c		; 38 f5
440	ld	r3,h0c		; 38 f4
441	ld	r3,pm		; 38 f1
442	ld	r3,p1		; 38 d1
443	ld	r3,p0m		; 38 f0
444	ld	r3,uie		; 38 ed
445	ld	r3,urc		; 38 ec
446	ld	r3,utc		; 38 eb
447	if	0
448	ld	r3,sio		; 38 ea
449	ld	r3,sie		; 38 e9
450	ld	r3,srcb		; 38 e8
451	ld	r3,srca		; 38 e7
452	ld	r3,stc		; 38 e6
453	endif
454	ldw	rr2,c1c		; c4 e4 c2
455	ld	r3,c1cl		; 38 e5
456	ld	r3,c1ch		; 38 e4
457	ldw	rr2,c0c		; c4 e2 c2
458	ld	r3,c0cl		; 38 e3
459	ld	r3,c0ch		; 38 e2
460	ld	r3,c1ct		; 38 e1
461	ld	r3,c0ct		; 38 e0
462
463	; Bank 1 Special Registers
464
465	ld	r3,wumsk	; 38 ff
466	ld	r3,wumch	; 38 fe
467	ld	r3,umb		; 38 fb
468	ld	r3,uma		; 38 fa
469	ldw	rr2,ubg		; c4 f8 c2
470	ld	r3,ubgl		; 38 f9
471	ld	r3,ubgh		; 38 f8
472	ldw	rr2,dc		; c4 f0 c2
473	ld	r3,dcl		; 38 f1
474	ld	r3,dch		; 38 f0
475	if	0
476	ldw	rr2,syn		; c4 ee c2
477	ld	r3,synh		; 38 ef
478	ld	r3,synl		; 38 ee
479	ld	r3,smd		; 38 ed
480	ld	r3,smc		; 38 ec
481	ld	r3,smb		; 38 eb
482	ld	r3,sma		; 38 ea
483	ldw	rr2,sbg		; c4 e8 c2
484	ld	r3,sbgl		; 38 e9
485	ld	r3,sbgh		; 38 e8
486	endif
487	ldw	rr2,c1tc	; c4 e4 c2
488	ld	r3,c1tcl	; 38 e5
489	ld	r3,c1tch	; 38 e4
490	ldw	rr2,c0tc	; c4 e2 c2
491	ld	r3,c0tcl	; 38 e3
492	ld	r3,c0tch	; 38 e2
493	ld	r3,c1m		; 38 e1
494	ld	r3,c0m		; 38 e0
495
496	; upper case test
497
498	ld	r3,SYM		; 38 de
499	ld	r3,IMR		; 38 dd
500	ld	r3,IRR		; 38 dc
501	ldw	rr2,IP		; c4 da c2
502	ld	r3,IPL		; 38 db
503	ld	r3,IPH		; 38 da
504	ldw	rr2,SP		; c4 d8 c2
505	ld	r3,SPL		; 38 d9
506	ld	r3,SPH		; 38 d8
507	ld	r3,RP1		; 38 d7
508	ld	r3,RP0		; 38 d6
509	ld	r3,FLAGS	; 38 d5
510	ld	r3,P4		; 38 d4
511	ld	r3,P3		; 38 d3
512	ld	r3,P2		; 38 d2
513	ld	r3,P1		; 38 d1
514	ld	r3,P0		; 38 d0
515
516	; Bank 0 Special Registers
517
518	ld	r3,IPR		; 38 ff
519	ld	r3,P2BIP	; 38 fd
520	ld	r3,P2AIP	; 38 fc
521	ld	r3,P2DM		; 38 fb
522	ld	r3,P2CM		; 38 fa
523	ld	r3,P2BM		; 38 f9
524	ld	r3,P2AM		; 38 f8
525	ld	r3,P4OD		; 38 f7
526	ld	r3,P4D		; 38 f6
527	ld	r3,H1C		; 38 f5
528	ld	r3,H0C		; 38 f4
529	ld	r3,PM		; 38 f1
530	ld	r3,P1		; 38 d1
531	ld	r3,P0M		; 38 f0
532	ld	r3,UIE		; 38 ed
533	ld	r3,URC		; 38 ec
534	ld	r3,UTC		; 3S eb
535	if	0
536	ld	r3,SIO		; 38 ea
537	ld	r3,SIE		; 38 e9
538	ld	r3,SRCB		; 38 e8
539	ld	r3,SRCA		; 38 e7
540	ld	r3,STC		; 38 e6
541	endif
542	ldw	rr2,C1C		; c4 e4 c2
543	ld	r3,C1CL		; 38 e5
544	ld	r3,C1CH		; 38 e4
545	ldw	rr2,C0C		; c4 e2 c2
546	ld	r3,C0CL		; 38 e3
547	ld	r3,C0CH		; 38 e2
548	ld	r3,C1CT		; 38 e1
549	ld	r3,C0CT		; 38 e0
550
551	; Bank 1 Special Registers
552
553	ld	r3,WUMSK	; 38 ff
554	ld	r3,WUMCH	; 38 fe
555	ld	r3,UMB		; 38 fb
556	ld	r3,UMA		; 38 fa
557	ldw	rr2,UBG		; c4 f0 c2
558	ld	r3,UBGL		; 38 f9
559	ld	r3,UBGH		; 38 f0
560	ldw	rr2,DC		; c4 f0c 2
561	ld	r3,DCL		; 38 f1
562	ld	r3,DCH		; 38 f0
563	if	0
564	ldw	rr2,SYN		; c4 ee c2
565	ld	r3,SYNH		; 38 ef
566	ld	r3,SYNL		; 38 ee
567	ld	r3,SMD		; 38 ed
568	ld	r3,SMC		; 38 ec
569	ld	r3,SMB		; 38 eb
570	ld	r3,SMA		; 38 ea
571	ldw	rr2,SBG		; c4 e0 c2
572	ld	r3,SBGL		; 38 e9
573	ld	r3,SBGH		; 38 e0
574	endif
575	ldw	rr2,C1TC	; c4 e4 c2
576	ld	r3,C1TCL	; 38 e5
577	ld	r3,C1TCH	; 38 e4
578	ldw	rr2,C0TC	; c4 e2 c2
579	ld	r3,C0TCL	; 38 e3
580	ld	r3,C0TCH	; 38 e2
581	ld	r3,C1M		; 38 e1
582	ld	r3,C0M		; 38 e0
583
584	; test for condition codes
585
586	jp	f,128		; 0d 00 80
587
588	jp	z,128		; 6d 00 80
589	jp	nz,128		; ed 00 80
590	jp	eq,128		; 6d 00 80
591	jp	ne,128		; ed 00 80
592
593	jp	c,128		; 7d 00 80
594	jp	nc,128		; fd 00 80
595
596	jp	gt,128		; ad 00 80
597	jp	lt,128		; 1d 00 80
598	jp	ge,128		; 9d 00 80
599	jp	le,128		; 2d 00 80
600
601	jp	pl,128		; dd 00 80
602	jp	mi,128		; 5d 00 80
603
604	jp	nov,128		; cd 00 80
605	jp	ov,128		; 4d 00 80
606
607	jp	ugt,128		; bd 00 80
608	jp	ult,128		; 7d 00 80
609	jp	uge,128		; fd 00 80
610	jp	ule,128		; 3d 00 80
611
612	; symbolic bits
613
614	ldb	r3,0feh,#6	; 47 3c fe
615	ldb	r3,emt,#6	; 47 3c fe
616	ldb	r3,slow		; 47 3c fe
617
618	band	0edh,#5,r3	; 67 3b ed
619	band	UIE,#5,r3	; 67 3b ed
620	band	UBRKIE,r3	; 67 3b ed
621
622regbit	defbit	r3,4
623	bitc	r3,#4
624	bitc	regbit
625	btjrf	$,r3,#4
626	btjrf	$,regbit
627
628	; register pointers
629
630	assume	rp:20h		; sets RP0=20h, RP1=28h
631	ld	24h,#0aah	; translates to 'ld r4,...'
632	ld	2ch,#0aah	; translates to 'ld r12,...'
633	assume	rp1:30h
634	ld	24h,#0aah	; translates to 'ld r4,...'
635	ld	2ch,#0aah	; no mapping to work register
636	ld	34h,#0aah	; translates to 'ld r12,...'
637
638	end
639