.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
!--------------------------------------------------------------------------
!	Load constant , load local , store local
!--------------------------------------------------------------------------

loc_0:	mov	d6,-(sp)
	jmp	(a4)
loc_1:	loc_2:	loc_3:	loc_4:	loc_5:	loc_6:	loc_7:	loc_8:
loc_9:	loc_10:	loc_11:	loc_12:	loc_13:	loc_14:	loc_15:	loc_16:
loc_17:	loc_18:	loc_19:	loc_20:	loc_21:	loc_22:	loc_23:	loc_24:	
loc_25:	loc_26:	loc_27:	loc_28:	loc_29:	loc_30:	loc_31:	loc_32:
loc_33:
	asr.w	#2,d0		!make the multiplication undone
	mov	d0,-(sp)
	jmp	(a4)
loc__1:
	mov	#-1,-(sp)
	jmp	(a4)
loc_s0:	clr.w	d0
	move.b	(a3)+,d0
	mov	d0,-(sp)
	jmp	(a4)
loc_s_1:	mov	#-1,d0
	move.b	(a3)+,d0
	mov	d0,-(sp)
	jmp	(a4)
lpi_l:
	adroff
	move.w	(a5),d0
	move.l	d0,-(sp)
	jmp	(a4)
lpi_q:	jmp	(a4)

loc_q:	jmp	(a4)
#ifndef lword
	 bra	e_illins
#endif
loc_l:	adroff
	move.w	(a5),d0
	ext.l	d0
	mov	d0,-(sp)
	jmp	(a4)
ldc_0:	cl	-(sp)
	cl	-(sp)
	jmp	(a4)
ldc_l:
	adroff
	move.w	(a5),d0
	ext.l	d0		!ext works only on d register
4:	move.l	d0,-(sp)
#ifdef	lword
	bmi	0f
	clr.l	-(sp)
	bra	1f
0:	move.l	#-1,-(sp)
1:
#endif
	jmp	(a4)
ldc_q:
#ifdef lword
	tst.l	(sp)
	bmi	0f
	clr.l	-(sp)
	bra	1f
0:	move.l	#-1,-(sp)
1:
#endif
	jmp	(a4)

!-------------------------------------------------------------------------
!	offsets should be adapted for wordsize 4 .Use identifiers
!	l3 to l_8 for the offsets in lol_3W to lol__8 . Use the
!	preprocessor for conditional definitions .

lol_0:		mov	l0(a2),-(sp)	; jmp	(a4)
lol_1W:		mov	l1(a2),-(sp)	; jmp	(a4)
lol_2W:		mov	l2(a2),-(sp)	; jmp	(a4)
lol_3W:		mov	l3(a2),-(sp)	; jmp	(a4)
lol__1W:	mov	l_1(a2),-(sp)	; jmp	(a4)
lol__2W:	mov	l_2(a2),-(sp)	; jmp	(a4)
lol__3W:	mov	l_3(a2),-(sp)	; jmp	(a4)
lol__4W:	mov	l_4(a2),-(sp)	; jmp	(a4)
lol__5W:	mov	l_5(a2),-(sp)	; jmp	(a4)
lol__6W:	mov	l_6(a2),-(sp)	; jmp	(a4)
lol__7W:	mov	l_7(a2),-(sp)	; jmp	(a4)
lol__8W:	mov	l_8(a2),-(sp)	; jmp	(a4)
lol_w0:		clr.w	d0	
		move.b	(a3)+,d0
		asl.w	wmu,d0
		mov	l0(a2,d0),-(sp)	
		jmp	(a4)

lol_w_1:	move.l	#-1,d0
		move.b	(a3)+,d0
		asl.w	wmu,d0
		mov	0(a2,d0),-(sp)
		jmp	(a4)
lol_pw:		adroff
		move.w	(a5),d0
5:		asl.l	wmu,d0
		add.l	a2,d0
		move.l	d0,a0
#if	test
		locptr
7:		bra	e_badptr
6:
#endif
		mov	l0(a0),-(sp)
		jmp	(a4)

lol_nw:		adroff
		move.w	(a5),d0
		ext.l	d0
2:		asl.l	wmu,d0
		add.l	a2,d0
		move.l	d0,a0
#if	test
		locptr
7:		bra	e_badptr
6:
#endif
		mov	(a0),-(sp)
		jmp	(a4)
lol_qnw:	move.l	(sp)+,d0
		bra	2b
lol_qpw:	move.l	(sp)+,d0
		bra	5b


!--------------------------------------------------------------------------

ldl_0:		mov	l1(a2),-(sp)	!offset code
		mov	l0(a2),-(sp)	!offset code
		jmp	(a4)
ldl_w_1:	move.l	#-1,d0
		move.b	(a3)+,d0
2:		asl.l	wmu,d0
		add.l	a2,d0
		move.l	d0,a0
#if	test
		locptr
7:		bra	e_badptr
6:
#endif
		mov	word(a0),-(sp)
		mov	(a0),-(sp)
		jmp	(a4)
ldl_pw:		adroff
		move.w	(a5),d0
5:		asl.l	wmu,d0
		add.l	a2,d0
		move.l	d0,a0
#if	test
		locptr
7:		bra	e_badptr
6:
#endif
		mov	l1(a0),-(sp)
		mov	l0(a0),-(sp)
		jmp	(a4)
ldl_nw:		adroff
		move.w	(a5),d0
		ext.l	d0
		bra	2b
ldl_qpw:	move.l	(sp)+,d0
		bra	5b
ldl_qnw:	move.l	(sp)+,d0
		bra	2b

!-------------------------------------------------------------------------
loe_lw:		adroff
		move.w	(a5),d0
		bra	1f
loe_qw:		move.l	(sp)+,d0
		bra	1f

loe_w0:		loe_w1:		loe_w2:		loe_w3:		loe_w4:
		sub.w	#624,d0
		asl.w	#6,d0
		move.b	(a3)+,d0
1:		asl.l	wmu,d0
		add.l	a6,d0
		move.l	d0,a0
#if	test
		extptr
7:		bra	e_badptr
6:
#endif
		mov	(a0),-(sp)
		jmp	(a4)

lde_lw:		adroff
		move.w	(a5),d0
		bra	1f
lde_qw:		move.l	(sp)+,d0
		bra	1f

lde_w0:		clr.w	d0
		move.b	(a3)+,d0
1:		asl.l	wmu,d0		
		add.l	a6,d0
		move.l	d0,a0
#if	test
		extptr
7:		bra	e_badptr
6:
#endif
		mov	word(a0),-(sp)
		mov	(a0),-(sp)
		jmp	(a4)

!------------------------------------------------------------------------------
lil_0:		move.l	l0(a2),a0
#if	test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		mov	(a0),-(sp)
		jmp	(a4)
lil_1W:		move.l	l1(a2),a0
#if	test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		mov	(a0),-(sp)
		jmp	(a4)
lil_pw:		adroff
		move.w	(a5),d0
		bra	1f
lil_qpw:	move.l	(sp)+,d0
		bra	1f

lil_w0:		clr.w	d0
		move.b	(a3)+,d0
1:		asl.l	wmu,d0
		add.l	a2,d0
		move.l	d0,a0
#if	test
		locptr
7:		bra	e_badptr
6:
#endif
		move.l	l0(a0),a0
#if	test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		mov	(a0),-(sp)
		jmp	(a4)

lil_nw:		adroff
		move.w	(a5),d0
		ext.l	d0
		bra	1f
lil_qnw:	move.l	(sp)+,d0
		bra	1f

lil_w_1:	move.l	#-1,d0
		move.b (a3)+,d0
1:		asl.l	wmu,d0	
		add.l	a2,d0
		move.l	d0,a0
#if	test
		locptr
7:		bra	e_badptr
6:
#endif
		move.l	(a0),a0
#if	test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		mov	(a0),-(sp)
		jmp	(a4)

!---------------------------------------------------------------------------
lof_s0:		move.l	d6,d0
		move.b	(a3)+,d0
		bra	1f
lof_l:		adroff
		move.w	(a5),d0
		ext.l	d0
		bra	1f
lof_q:		move.l	(sp)+,d0
		bra	1f
lof_1W:		move.l	wrd,d0
1:		move.l	(sp)+,a0
		add.l	d0,a0
#if	test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		mov	(a0),-(sp)
		jmp	(a4)
lof_2W:		move.l	wrd+word,d0	;	bra	1b
lof_3W:		move.l	wrd+word+word,d0	;	bra	1b
lof_4W:		move.l	wrd+word+word+word,d0	;	bra	1b
ldf_l:		adroff
		move.w	(a5),d0
		ext.l	d0
2:		move.l	(sp)+,a0
		add.l	d0,a0
#if	test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		mov	word(a0),-(sp)
		mov	(a0),-(sp)
		jmp	(a4)
ldf_q:		move.l	(sp)+,d0
		bra	2b

!-------------------------------------------------------------------------

lal_p:		adroff
		move.w	(a5),d0
		bra	1f
lal_qp:		move.l	(sp)+,d0
1:		add.l	#0+l0,d0
		bra	4f
lal_0:		pea	l0(a2)
		jmp	(a4)	
lal_w0:		clr.w	d0
		move.b	(a3)+,d0
		asl.l	wmu,d0
		add.l	#0+l0,d0
		bra	3f
lal_n:		adroff
		move.w	(a5),d0
		ext.l	d0
		bra	4f
lal_qn:		move.l	(sp)+,d0
4:		add.l	a2,d0
		move.l	d0,-(sp)
		jmp	(a4)
lal__1:		move.l	#-1,d0
3:		pea	0(a2,d0)
		jmp	(a4)
lal_w_1:	move.l	#-1,d0
2:		move.b	(a3)+,d0
		asl.l	wmu,d0
		bra	3b
lal_w_2:	move.l	#-512,d0
		bra	2b

lae_l:		adroff
		move.w	(a5),d0
1:		add.l	a6,d0
		move.l	d0,-(sp)
		jmp	(a4)
lae_q:		move.l	(sp)+,d0
		bra	1b
lae_w0:		lae_w1:		lae_w2:		lae_w3:		lae_w4:
lae_w5:		lae_w6:
		sub.w	#484,d0
		asl.w	#6,d0
		move.b	(a3)+,d0
		asl.w	wmu,d0
		pea	0(a6,d0)
		jmp	(a4)

!---------------------------------------------------------------------------
lxl_1:		move.l	l0(a2),-(sp)
		jmp	(a4)
lxl_l:		adroff
		move.w	(a5),d0
		beq	5f
		bgt	1f
		blt	e_oddz
1:		sub.l	#1,d0
		bra	2f
lxl_2:		move.l	#1,d0
2:		move.l	a2,a0
3:		move.l	l0(a0),a0
#if	test
		locptr
7:		bra	e_badptr
6:
#endif
		dbra	d0,3b
		move.l	a0,-(sp)
		jmp	(a4)
5:		move.l	a2,-(sp)
		jmp	(a4)

lxa_1:		move.l	#0,d0
		bra	3f
lxa_l:		adroff
		move.w	(a5),d0
		bgt	1f
		blt	e_oddz
		pea	l0(a2)
		jmp	(a4)
1:		sub.l	#1,d0
3:		move.l	a2,a0
2:		move.l	l0(a0),a0
#if	test
		locptr
7:		bra	e_badptr
6:
#endif
		dbra	d0,2b
		pea	l0(a0)
		jmp	(a4)

!-----------------------------------------------------------------------

loi_q:		move.l	(sp)+,d1;	bra	8f
loi_l:		adroff
		clr.l	d1
		move.w	(a5),d1
		bra	8f
loi_s0:		move.l	#0,d1
		move.b	(a3)+,d1
8:		cmp.l	#1,d1
		beq	loi_1
		cmp.l	#2,d1
		beq	2f
		move.l	d1,d0
		move.w	d7,d2
3:		asr.l	#1,d0	;	dbcs	d2,3b
		bcs	e_oddz
		bra	5f
loi_1W:		loi_2W:		loi_3W:		loi_4W:
		asr.w	#2,d0
		sub.w	#168,d0
		move.l	d0,d1
		asl.w	wmu,d1
5:		move.l	(sp)+,a0
		add.l	d1,a0
#if	test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		sub.l	#1,d0
1:		mov	-(a0),-(sp)
		dbra	d0,1b
		jmp	(a4)
2:		move.l	(sp)+,a0
#if	test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		move.w	(a0),d0
		mov	d0,-(sp)
		jmp	(a4)
loi_1:		move.l	(sp)+,a0
		move.w	d6,d0
#if	test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		move.b	(a0),d0
		mov	d0,-(sp)
		jmp	(a4)

los_z:		mov	(sp)+,d0
		bra	0f
los_l:		adroff
		move.w	(a5),d0
0:		checksize
2:		move.l	#0,d1	;	move.w	(sp)+,d1 ;	bra	8b
4:		move.l	(sp)+,d1 ;	bra	8b
