1	cpu	mb90500
2	page	0
3
4;----------------------------------------------------------------
5; some preliminaries to keep the source code in acceptable size
6; you didn't see this - you didn't see this - ignore it
7
8#define R8MODES r0,r1,r2,r3,r4,r5,r6,r7
9#define R16MODES rw0,rw1,rw2,rw3,rw4,rw5,rw6,rw7
10#define R32MODES rl0,(rl0),rl1,(rl1),rl2,(rl2),rl3,(rl3)
11#define MEM1MODES @rw0,@rw1,@rw2,@rw3
12#define MEM1AMODES @rw0+,@rw1+,@rw2+,@rw3+
13#define MEM2MODES @rw0+10,@rw1-10,@rw2+20,@rw3-30,@rw4+40,@rw5-50,@rw6+60,@rw7-70,@rw0+1000,@rw1-1000,@rw2+2000,@rw3-3000,@rw0+rw7,@rw1+rw7,@pc+5,1234h
14
15enum8_x macro memo
16	irp	var,R8MODES
17	memo	var
18	endm
19	irp	var,MEM1MODES,MEM1AMODES
20	memo	var
21	endm
22	irp	var,MEM2MODES
23	memo	var
24	endm
25	endm
26
27enum16_x macro memo
28	irp	var,R16MODES
29	memo	var
30	endm
31	irp	var,MEM1MODES,MEM1AMODES
32	memo	var
33	endm
34	irp	var,MEM2MODES
35	memo	var
36	endm
37	endm
38
39enum32_x macro memo
40	irp	var,R32MODES
41	memo	var
42	endm
43	irp	var,MEM1MODES,MEM1AMODES
44	memo	var
45	endm
46	irp	var,MEM2MODES
47	memo	var
48	endm
49	endm
50
51enum8_px macro memo,par
52	irp	var,R8MODES
53	memo	par,var
54	endm
55	irp	var,MEM1MODES,MEM1AMODES
56	memo	par,var
57	endm
58	irp	var,MEM2MODES
59	memo	par,var
60	endm
61	endm
62
63enum16_px macro memo,par
64	irp	var,R16MODES
65	memo	par,var
66	endm
67	irp	var,MEM1MODES,MEM1AMODES
68	memo	par,var
69	endm
70	irp	var,MEM2MODES
71	memo	par,var
72	endm
73	endm
74
75enum32_px macro memo,par
76	irp	var,R32MODES
77	memo	par,var
78	endm
79	irp	var,MEM1MODES,MEM1AMODES
80	memo	par,var
81	endm
82	irp	var,MEM2MODES
83	memo	par,var
84	endm
85	endm
86
87enum8_xp macro memo,par
88	irp	var,R8MODES
89	memo	var,par
90	endm
91	irp	var,MEM1MODES,MEM1AMODES
92	memo	var,par
93	endm
94	irp	var,MEM2MODES
95	memo	var,par
96	endm
97	endm
98
99enum16_xp macro memo,par
100	irp	var,R16MODES
101	memo	var,par
102	endm
103	irp	var,MEM1MODES,MEM1AMODES
104	memo	var,par
105	endm
106	irp	var,MEM2MODES
107	memo	var,par
108	endm
109	endm
110
111enum32_xp macro memo,par
112	irp	var,R32MODES
113	memo	var,par
114	endm
115	irp	var,MEM1MODES,MEM1AMODES
116	memo	var,par
117	endm
118	irp	var,MEM2MODES
119	memo	var,par
120	endm
121	endm
122
123enum8_xpp macro memo,par1,par2
124	irp	var,R8MODES
125	memo	var,par1,par2
126	endm
127	irp	var,MEM1MODES
128	memo	var,par1,par2
129	endm
130	irp	var,MEM2MODES
131	memo	var,par1,par2
132	endm
133	endm
134
135enum16_xpp macro memo,par1,par2
136	irp	var,R16MODES
137	memo	var,par1,par2
138	endm
139	irp	var,MEM1MODES
140	memo	var,par1,par2
141	endm
142	irp	var,MEM2MODES
143	memo	var,par1,par2
144	endm
145	endm
146
147enumseg macro 	memo
148	irp	var,pcb,dtb,adb,spb
149	memo	var
150	endm
151	endm
152
153;----------------------------------------------------------------
154; let's go...
155
156	add	a,#12h
157	add	a,123h
158	enum8_px add,a
159	enum8_xp add,a
160
161	addc	a
162	enum8_px addc,a
163
164	enum16_px addcw,a
165
166	adddc	a
167
168	addl	a,#12345678h
169	enum32_px addl,a
170
171	addsp	#20
172	addsp	#-20
173	addsp	#200
174	addsp	#-200
175
176	addw	a
177	addw	a,#1234h
178	enum16_px addw,a
179	enum16_xp addw,a
180
181	and	a,#12h
182	and	a,123h		; translates to 16 bit!
183	enum8_px and,a
184	enum8_px and,a
185	and	ccr,#12h
186
187	enum32_px andl,a
188
189	andw	a
190	andw	a,#1234h
191	enum16_px andw,a
192	enum16_xp andw,a
193
194	asr	a,r0
195	asrl	a,r0
196	asrw	a
197	asrw	a,r0
198
199	bbc	80h:4,$+2
200	bbc	180h:4,$+2
201	bbc	280h:4,$+2
202
203	bbs	80h:4,$+2
204	bbs	180h:4,$+2
205	bbs	280h:4,$+2
206
207	bz	$+2
208	beq	$+2
209	bnz	$+2
210	bne	$+2
211        bc	$+2
212	blo	$+2
213	bnc	$+2
214	bhs	$+2
215	bn	$+2
216        bp	$+2
217	bv	$+2
218	bnv	$+2
219	bt	$+2
220	bnt	$+2
221        blt	$+2
222	bge	$+2
223	ble	$+2
224	bgt	$+2
225	bls	$+2
226        bhi	$+2
227	bra	$+2
228
229	call	0ff1234h
230	call	@rw0
231	call	@rw1
232	call	@rw2
233	call	@rw3
234	call	@rw4
235	call	@rw5
236	call	@rw6
237	call	@rw7
238	call	@@rw0
239	call	@@rw1
240	call	@@rw2
241	call	@@rw3
242	call	@@rw0+
243	call	@@rw1+
244	call	@@rw2+
245	call	@@rw3+
246	call	@@rw0+10
247	call	@@rw1-10
248	call	@@rw2+20
249	call	@@rw3-30
250	call	@@rw4+40
251	call	@@rw5-50
252	call	@@rw6+60
253	call	@@rw7-70
254	call	@@rw0+1000
255	call	@@rw1-1000
256	call	@@rw2+2000
257	call	@@rw3-3000
258	call	@@rw0+rw7
259	call	@@rw1+rw7
260	call	@@pc+5
261	call	@1234h
262
263	callp	0123456h
264	callp	@rl0
265	callp	@(rl0)
266	callp	@rl1
267	callp	@(rl1)
268	callp	@rl2
269	callp	@(rl2)
270	callp	@rl3
271	callp	@(rl3)
272	callp	@@rw0
273	callp	@@rw1
274	callp	@@rw2
275	callp	@@rw3
276	callp	@@rw0+
277	callp	@@rw1+
278	callp	@@rw2+
279	callp	@@rw3+
280	callp	@@rw0+10
281	callp	@@rw1-10
282	callp	@@rw2+20
283	callp	@@rw3-30
284	callp	@@rw4+40
285	callp	@@rw5-50
286	callp	@@rw6+60
287	callp	@@rw7-70
288	callp	@@rw0+1000
289	callp	@@rw1-1000
290	callp	@@rw2+2000
291	callp	@@rw3-3000
292	callp	@@rw0+rw7
293	callp	@@rw1+rw7
294	callp	@@pc+5
295	callp	@1234h
296
297	callv	#10
298
299	cbne	a,#12,$
300	enum8_xpp cbne,#12,$
301
302	clrb	80h:4
303	clrb	180h:4
304	clrb	280h:4
305
306	cmp	a
307	cmp	a,#12h
308	enum8_px cmp,a
309
310	cmpl	a,#12345678h
311	enum32_px cmpl,a
312
313	cmpw	a
314	cmpw	a,#1234h
315	enum16_px cmpw,a
316
317	cmr
318
319	cwbne	a,#1234,$
320	enum16_xpp cwbne,#1234,$
321
322	enum8_xp dbnz,$
323
324	enum8_x dec
325
326	enum32_x decl
327
328	enum16_x decw
329
330	div	a
331	enum8_px div,a
332
333	enum16_px divw,a
334
335	divu	a
336	enum8_px divu,a
337
338	enum16_px divuw,a
339
340	enum16_xp dwbnz,$
341
342	ext
343	extw
344
345	enum8_x inc
346
347	enum32_x incl
348
349	enum16_x incw
350
351	enumseg fils
352	enumseg filsi
353	enumseg filsw
354	enumseg filswi
355
356	int	0ff1234h
357	int	#11
358
359	int9
360
361	intp	123456h
362
363	jctx	@a
364
365	jmp	@a
366	jmp	0ff1234h
367	jmp	@rw0
368	jmp	@rw1
369	jmp	@rw2
370	jmp	@rw3
371	jmp	@rw4
372	jmp	@rw5
373	jmp	@rw6
374	jmp	@rw7
375	jmp	@@rw0
376	jmp	@@rw1
377	jmp	@@rw2
378	jmp	@@rw3
379	jmp	@@rw0+
380	jmp	@@rw1+
381	jmp	@@rw2+
382	jmp	@@rw3+
383	jmp	@@rw0+10
384	jmp	@@rw1-10
385	jmp	@@rw2+20
386	jmp	@@rw3-30
387	jmp	@@rw4+40
388	jmp	@@rw5-50
389	jmp	@@rw6+60
390	jmp	@@rw7-70
391	jmp	@@rw0+1000
392	jmp	@@rw1-1000
393	jmp	@@rw2+2000
394	jmp	@@rw3-3000
395	jmp	@@rw0+rw7
396	jmp	@@rw1+rw7
397	jmp	@@pc+5
398	jmp	@1234h
399
400	jmpp	0123456h
401	jmpp	@rl0
402	jmpp	@(rl0)
403	jmpp	@rl1
404	jmpp	@(rl1)
405	jmpp	@rl2
406	jmpp	@(rl2)
407	jmpp	@rl3
408	jmpp	@(rl3)
409	jmpp	@@rw0
410	jmpp	@@rw1
411	jmpp	@@rw2
412	jmpp	@@rw3
413	jmpp	@@rw0+
414	jmpp	@@rw1+
415	jmpp	@@rw2+
416	jmpp	@@rw3+
417	jmpp	@@rw0+10
418	jmpp	@@rw1-10
419	jmpp	@@rw2+20
420	jmpp	@@rw3-30
421	jmpp	@@rw4+40
422	jmpp	@@rw5-50
423	jmpp	@@rw6+60
424	jmpp	@@rw7-70
425	jmpp	@@rw0+1000
426	jmpp	@@rw1-1000
427	jmpp	@@rw2+2000
428	jmpp	@@rw3-3000
429	jmpp	@@rw0+rw7
430	jmpp	@@rw1+rw7
431	jmpp	@@pc+5
432	jmpp	@1234h
433
434	link	#10
435
436	lsl	a,r0
437	lsll	a,r0
438	lslw	a
439	lslw	a,r0
440
441	lsr	a,r0
442	lsrl	a,r0
443	lsrw	a
444	lsrw	a,r0
445
446	mov	a,#123
447	mov	a,@a
448	mov	a,@rl0+10
449	mov	a,@rl1-20
450	mov	a,@rl2+30
451	mov	a,@rl3-40
452	mov	a,12h
453	mov	a,123h
454	mov	a,dtb
455	mov	a,adb
456	mov	a,ssb
457	mov	a,usb
458	mov	a,dpr
459	mov	a,pcb
460	enum8_px mov,a
461	mov	123h,a
462	mov	@rl0+10,a
463	mov	@rl1-20,a
464	mov	@rl2+30,a
465	mov	@rl3-40,a
466	mov	12h,a
467	mov	dtb,a
468	mov	adb,a
469	mov	ssb,a
470	mov	usb,a
471	mov	dpr,a
472        enum8_xp mov,a
473	mov	rp,#12
474	mov	ilm,#12
475	mov	123h,#12
476	mov	23h,#12
477	enum8_xp mov,#12
478	enum8_px mov,r2
479	enum8_xp mov,r2
480	mov	@a,t
481	mov	@al,ah
482
483	movb	a,123h:4
484	movb	a,23h:4
485	movb	a,1234h:4
486	movb	123h:4,a
487	movb	23h:4,a
488	movb	1234h:4,a
489
490	enum16_px movea,a
491	enum16_px movea,rw2
492
493	movl	a,#12345678h
494	enum32_px movl,a
495	enum32_xp movl,a
496
497	movn	a,#4
498
499	irp	reg2,pcb,dtb,adb,spb
500	 irp	 reg1,pcb,dtb,adb,spb
501	  movs	  reg1,reg2
502	  movsi	  reg1,reg2
503	  movsd	  reg1,reg2
504	  movsw	  reg1,reg2
505	  movswi  reg1,reg2
506	  movswd  reg1,reg2
507	 endm
508	endm
509
510	movw	a,#1234h
511	movw	a,@a
512	movw	a,sp
513	movw	a,@rl0+10
514	movw	a,@rl1-20
515	movw	a,@rl2+30
516	movw	a,@rl3-40
517	movw	a,23h
518	movw	a,123h
519	enum16_px movw,a
520	movw	@rl0+10,a
521	movw	@rl1-20,a
522	movw	@rl2+30,a
523	movw	@rl3-40,a
524	movw	sp,a
525	movw	23h,a
526	movw	123h,a
527	enum16_xp movw,a
528	enum16_xp movw,#1234h
529	enum16_px movw,rw2
530	enum16_xp movw,rw2
531	movw	23h,#1234h
532        movw    @a,t
533        movw    @al,ah
534
535	movx	a,#12h
536	movx	a,@a
537	movx	a,@rl0+10
538	movx	a,@rl1-20
539	movx	a,@rl2+30
540	movx	a,@rl3-40
541	movx	a,23h
542	movx	a,123h
543	enum8_px movx,a
544
545	mul	a
546	enum8_px mul,a
547
548	mulw	a
549	enum16_px mulw,a
550
551	mulu	a
552	enum8_px mulu,a
553
554	muluw	a
555	enum16_px muluw,a
556
557	ncc
558
559	neg	a
560	enum8_x	neg
561
562	negw	a
563	enum16_x negw
564
565	nop
566
567	not	a
568	enum8_x	not
569
570	notw	a
571	enum16_x notw
572
573	nrml	a,r0
574
575	or	a,#12h
576	or	a,123h		; translates to 16 bit!
577	enum8_px or,a
578	enum8_xp or,a
579	or	ccr,#12h
580
581	enum32_px orl,a
582
583	orw	a
584	orw	a,#1234h
585	enum16_px orw,a
586	enum16_xp orw,a
587
588	popw	a
589	popw	ah
590	popw	ps
591	popw	rw4
592	popw	rw4,rw6
593	popw	rw1,rw3-rw4
594	popw	rw6-rw2,rw4
595
596	pushw	a
597	pushw	ah
598	pushw	ps
599	pushw	rw4
600	pushw	rw4,rw6
601	pushw	rw1,rw3-rw4
602	pushw	rw6-rw2,rw4
603
604	ret
605	reti
606	retp
607
608	rolc	a
609	enum8_x rolc
610
611	rorc	a
612	enum8_x rorc
613
614	sbbs	1234h:4,$
615
616	enumseg sceqd
617	enumseg sceqi
618	enumseg scweqd
619	enumseg scweqi
620
621	setb	80h:4
622	setb	180h:4
623	setb	280h:4
624
625	sub	a,#12h
626	sub	a,123h
627	enum8_px sub,a
628	enum8_xp sub,a
629
630	subc	a
631	enum8_px subc,a
632
633	enum16_px subcw,a
634
635	subdc	a
636
637	subl	a,#12345678h
638	enum32_px subl,a
639
640	subw	a
641	subw	a,#1234h
642	enum16_px subw,a
643	enum16_xp subw,a
644
645	swap
646	swapw
647
648	unlink
649
650	wbtc	34h:7
651
652	wbts	34h:7
653
654	enum8_px xch,a
655	enum8_xp xch,a
656	enum8_px xch,r2
657	enum8_xp xch,r2
658
659	enum16_px xchw,a
660	enum16_xp xchw,a
661	enum16_px xchw,rw2
662	enum16_xp xchw,rw2
663
664	xor	a,#12h
665	xor	a,123h		; translates to 16 bit!
666	enum8_px xor,a
667	enum8_xp xor,a
668
669	enum8_px xorl,a
670
671	xorw	a
672	xorw	a,#1234h
673	enum16_px xorw,a
674	enum16_xp xorw,a
675
676	zext
677	zextw
678
679;-------------------------------------------------------------------------
680; automatic extension
681
682	mov	1234h,r4	; normal
683	mov	123h,r4		; extend dir->abs
684	mov	12h,r4		; extend io->abs
685
686	movw	1234h,rw4	; normal
687	movw	123h,rw4	; extend dir->abs
688	movw	12h,rw4		; extend io->abs
689
690	movw	1234h,#5678h	; normal
691	movw	123h,#5678h	; extend dir->abs
692	movw	12h,#5678h	; normal, exception!
693
694;-------------------------------------------------------------------------
695; check banking
696
697	assume	pcb:0
698	assume	dtb:1
699	assume	adb:2
700	assume	usb:3
701	assume	ssb:4
702
703	pcb
704	mov	a,02000h
705	mov	a,12000h
706	adb
707	mov	a,22000h
708	spb
709	mov	a,32000h
710	supmode on
711	spb
712	mov	a,42000h
713