493 lines
		
	
	
	
		
			7.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			493 lines
		
	
	
	
		
			7.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| .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_l:		adroff
 | |
| 		clr.l	d1
 | |
| 		move.w	(a5),d1
 | |
| 		bra	8f
 | |
| loi_s0:		move.l	#0,d1
 | |
| 		move.b	(a3)+,d1
 | |
| 8:		cmp.w	#1,d1
 | |
| 		beq	loi_1
 | |
| 		cmp.w	#2,d1
 | |
| 		beq	2f
 | |
| 		move.w	d1,d0
 | |
| 		move.w	d7,d2
 | |
| 3:		asr.w	#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.w	#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
 |