.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
!---------------------------------------------------------------------
!		STORE GROUP
!---------------------------------------------------------------------

stl_pw:		adroff
		move.w	(a1),d0
3:		asl.l	wmu,d0
		add.l	a2,d0
		move.l	d0,a0
#if test
		locptr
7:		bra	e_badptr
6:
#endif
		mov	(sp)+,l0(a0)	
		jmp	(a4)
stl_qpw:	move.l	(sp)+,d0
		bra	3b

stl_nw:		adroff
		move.w	(a1),d0
		ext.l	d0
		bra	1f
stl_qnw:	move.l	(sp)+,d0
		bra	1f
stl_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
		mov	(sp)+,(a0)
		jmp	(a4)
stl_0:		mov	(sp)+,l0(a2)	; jmp	(a4)
stl_1W:		mov	(sp)+,l1(a2)	; jmp	(a4)
stl__1W:	mov	(sp)+,l_1(a2)	; jmp	(a4)
stl__2W:	mov	(sp)+,l_2(a2)	; jmp	(a4)
stl__3W:	mov	(sp)+,l_3(a2)	; jmp	(a4)
stl__4W:	mov	(sp)+,l_4(a2)	; jmp	(a4)
stl__5W:	mov	(sp)+,l_5(a2)	; jmp	(a4)
sdl_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	(sp)+,(a0)
		mov	(sp)+,word(a0)
		jmp	(a4)
sdl_nw:		adroff
		move.w	(a1),d0
		ext.l	d0
		bra	2b
sdl_qnw:	move.l	(sp)+,d0
		bra	2b
sdl_qpw:	move.l	(sp)+,d0
		bra	4f
sdl_pw:		adroff
		move.w	(a1),d0
4:		asl.l	wmu,d0
		add.l	a2,d0
		move.l	d0,a0
#if test
		locptr
7:		bra	e_badptr
6:
#endif
		mov	(sp)+,l0(a0)
		mov	(sp)+,l1(a0)
		jmp	(a4)

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

sde_q:		move.l	(sp)+,d0
		bra	1f
sde_l:		adroff
		move.w	(a1),d0
1:		add.l	a6,d0
		move.l	d0,a0
#if test
		extptr
7:		bra	e_badptr
6:
#endif
		mov	(sp)+,(a0)
		mov	(sp)+,word(a0)
		jmp	(a4)
ste_qw:		move.l	(sp)+,d0
		bra	1f
ste_lw:		adroff
		move.w	(a1),d0
		bra	1f
ste_w2:		move.w	#512,d0		; bra	0f
ste_w1:		move.w	#256,d0		; bra	0f
ste_w0:		clr.w	d0
0:		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	(sp)+,(a0)
		jmp	(a4)

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

stf_q:		move.l	(sp)+,a0
		bra	0f
stf_l:		adroff
		move.l	#0,a0
		move.w	(a1),a0
		bra	0f
stf_2W:		move.l	wrd+word,d0	;	move.l	d0,a0
		bra	0f
stf_s0:		clr.w	d0
		move.b	(a3)+,d0
		move.l	d0,a0
		bra	0f
stf_1W:		move.l	wrd,d0		;	move.l	d0,a0
0:		add.l	(sp)+,a0
#if test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		mov	(sp)+,(a0)
		jmp	(a4)
sdf_q:		move.l	(sp)+,a0
		bra	1f
sdf_l:		adroff
		move.l	d6,a0
		move.w	(a1),a0
1:		add.l	(sp)+,a0
#if test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		mov	(sp)+,(a0)+
		mov	(sp)+,(a0)
		jmp	(a4)


!-----------------------------------------------------------------------------
sil_w0:		move.w	d6,d0
		move.b	(a3)+,d0
5:		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	(sp)+,(a0)
		jmp	(a4)
sil_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
		move.l	(a0),a0
#if test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		mov	(sp)+,(a0)
		jmp	(a4)
sil_pw:		adroff
		move.w	(a1),d0
		bra	5b
sil_qpw:	move.l	(sp)+,d0
		bra	5b
sil_nw:		adroff
		move.w	(a1),d0
		ext.l	d0
		bra	2b
sil_qnw:	move.l	(sp)+,d0
		bra	2b

!----------------------------------------------------------------------------
sti_1:		move.l	(sp)+,a0
#if test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		move.b	word-1(sp),(a0)
		add.l	wrd,sp
		jmp	(a4)
sti_l:		adroff		;	move.w	(a1),d0	;	bra	0f
sti_s0:		clr.w	d0	;	move.b	(a3)+,d0
0:		asr.l	#1,d0	;	bne	1f
		bcs	sti_1	;	bra	e_oddz
1:		bcs	e_oddz
#ifdef	lword
		asr.l	#1,d0	;	bne	2f
		move.l	(sp)+,a0;	lea	2(sp),sp
#if test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
		move.w	(sp)+,(a0);	jmp	(a4)
2:		bcs	e_oddz
#endif
		sub.w	#1,d0	;	bra	3f
sti_1W:		sti_2W:		sti_3W:		sti_4W:
		sub.w	#876,d0	;	asr.w	#2,d0
3:		move.l	(sp)+,a0
#if test
		locptr
		heaptr
		extptr
7:		bra	e_badptr
6:
#endif
4:		mov	(sp)+,(a0)+
		dbra	d0,4b
		jmp	(a4)
sts_l:		adroff	;		move.w	(a1),d0
6:		checksize
4:		move.l	(sp)+,d0;	bra	0b
2:		move.w	(sp)+,d0;	bra	0b
sts_z:		mov	(sp)+,d0
		bra	6b

!------------------------------------------------------------------------------
!		POINTER ARITHMETIC
!------------------------------------------------------------------------------
adp_l:		adroff		;	move.w	(a1),d0
		ext.l	d0
		add.l	d0,(sp);	jmp	(a4)
adp_q:		move.l	(sp)+,d0 ;	add.l	d0,(sp)
		jmp	(a4)
adp_1:		add.l	#1,(sp);	jmp	(a4)
adp_2:		add.l	#2,(sp);	jmp	(a4)
adp_s0:		move.l	d6,d0	;	move.b	(a3)+,d0
		add.l	d0,(sp);	jmp	(a4)
adp_s_1:	move.l	#-1,d0	;	move.b	(a3)+,d0
		add.l	d0,(sp)	;	jmp	(a4)
ads_l:		adroff		;	move.w	(a1),d0
		bra	0f
ads_z:		mov	(sp)+,d0
0:		checksize
4:		move.l	(sp)+,d1 ;	add.l	d1,(sp)	;	jmp (a4)
2:		move.w	(sp)+,d1 ;	ext.l	d1
		add.l	d1,(sp)	;	jmp	(a4)
ads_1W:		mov	(sp)+,d0
		extend	d0
		add.l	d0,(sp);	jmp	(a4)
sbs_l:		adroff		;	move.w	(a1),d0
		bra	0f
sbs_z:		mov	(sp)+,d0		!d0 contains objectsize
0:		checksize
4:		move.l	(sp)+,d1 ;	sub.l	d1,(sp)
		jmp	(a4)
2:		move.l	(sp)+,d1 ;	sub.l	d1,(sp)
		clr.w	(sp)+	;	jmp	(a4)