191 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			191 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
!---------------------------------------------------------------------
 | 
						|
!		STORE GROUP
 | 
						|
!---------------------------------------------------------------------
 | 
						|
 | 
						|
stl_pw:	adroff
 | 
						|
		move.w	(a1),d0
 | 
						|
3:		asl.l	wmu,d0
 | 
						|
		mov	(sp)+,16(a2,d0)	
 | 
						|
		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
 | 
						|
		mov	(sp)+,0(a2,d0)
 | 
						|
		jmp	(a4)
 | 
						|
stl_0:		mov	(sp)+,16(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
 | 
						|
		mov	(sp)+,0(a2,d0)
 | 
						|
		mov	(sp)+,word(a2,d0)
 | 
						|
		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
 | 
						|
		mov	(sp)+,l0(a2,d0)
 | 
						|
		mov	(sp)+,l1(a2,d0)
 | 
						|
		jmp	(a4)
 | 
						|
 | 
						|
!------------------------------------------------------------------------
 | 
						|
 | 
						|
sde_q:		move.l	(sp)+,d0
 | 
						|
		bra	1f
 | 
						|
sde_l:		adroff
 | 
						|
		move.w	(a1),d0
 | 
						|
1:		mov	(sp)+,0(a6,d0)
 | 
						|
		mov	(sp)+,word(a6,d0)
 | 
						|
		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
 | 
						|
		mov	(sp)+,0(a6,d0)
 | 
						|
		jmp	(a4)
 | 
						|
 | 
						|
!-------------------------------------------------------------------------
 | 
						|
 | 
						|
stf_q:		move.l	(sp)+,a0
 | 
						|
		bra	6f
 | 
						|
stf_l:		adroff
 | 
						|
		move.l	#0,a0
 | 
						|
		move.w	(a1),a0
 | 
						|
		bra	6f
 | 
						|
stf_2W:		move.l	wrd,a0	;	add.l	a0,a0
 | 
						|
		bra	6f
 | 
						|
stf_s0:		clr.w	d0
 | 
						|
		move.b	(a3)+,d0
 | 
						|
		move.l	d0,a0
 | 
						|
		bra	6f
 | 
						|
stf_1W:		move.l	wrd,a0
 | 
						|
6:		add.l	(sp)+,a0
 | 
						|
		mov	(sp)+,(a0)
 | 
						|
		jmp	(a4)
 | 
						|
sdf_q:		move.l	(sp)+,a0
 | 
						|
		bra	7f
 | 
						|
sdf_l:		adroff
 | 
						|
		move.l	d6,a0
 | 
						|
		move.w	(a1),a0
 | 
						|
7:		add.l	(sp)+,a0
 | 
						|
		mov	(sp)+,(a0)+
 | 
						|
		mov	(sp)+,(a0)
 | 
						|
		jmp	(a4)
 | 
						|
 | 
						|
 | 
						|
!-----------------------------------------------------------------------------
 | 
						|
sil_w0:		move.w	d6,d0
 | 
						|
		move.b	(a3)+,d0
 | 
						|
		asl.l	wmu,d0
 | 
						|
5:		move.l	16(a2,d0),a0
 | 
						|
		mov	(sp)+,(a0)
 | 
						|
		jmp	(a4)
 | 
						|
sil_w_1:	move.l	#-1,d0
 | 
						|
		move.b	(a3)+,d0
 | 
						|
		asl.l	wmu,d0
 | 
						|
2:		move.l	0(a2,d0),a0
 | 
						|
		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
 | 
						|
		move.b	word-1(sp),(a0)		!lsb,msb goed?
 | 
						|
		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
 | 
						|
		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
 | 
						|
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
 | 
						|
#ifndef lword
 | 
						|
		ext.l	d0
 | 
						|
#endif
 | 
						|
		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)
 |