300 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			300 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| .sect .text
 | |
| .sect .rom
 | |
| .sect .data
 | |
| .sect .bss
 | |
| .sect .text
 | |
| !---------------------------------------------------------------------
 | |
| !		STORE GROUP
 | |
| !---------------------------------------------------------------------
 | |
| 
 | |
| stl_pw:		adroff
 | |
| 		move.w	(a5),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	(a5),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	(a5),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	(a5),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	(a5),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	(a5),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	(a5),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	(a5),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	(a5),d0
 | |
| 		bra	5b
 | |
| sil_qpw:	move.l	(sp)+,d0
 | |
| 		bra	5b
 | |
| sil_nw:		adroff
 | |
| 		move.w	(a5),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_q:		move.l	(sp)+,d0;	bra	0f
 | |
| sti_l:		adroff		;	move.w	(a5),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.l	#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	(a5),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	(a5),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	(a5),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	(a5),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)
 |