.define .lino,.filn
.define EXIT,BRK,WRITE
.define	begtext,begdata,begbss
.define	EARRAY,ERANGE,ESET,EIDIVZ,EHEAP,EILLINS,ECASE,EBADGTO
.define	hol0,.reghp,.limhp,.trpim,.trppc
.sect .text
.sect .rom
.sect .data
.sect .bss



! runtime startof for 68020 machine


LINO_AD	= 0
FILN_AD	= 4

EARRAY	= 0
ERANGE	= 1
ESET	= 2
EIDIVZ	= 6
EHEAP	= 17
EILLINS	= 18
ECASE	= 20
EBADGTO = 27

	.sect .text
begtext:
	move.l	d0,(splimit)	! load splimit with the initial stack limit
	sub.l	#8,sp
	move.l	(8,sp),(sp)	! argc
	lea	(12,sp),a0
	move.l	a0,(4,sp)	! argv
	move.l	a0,a1
1:
	tst.l	(a0)+		! null args term?
	bne	1b
	cmp.l	(a1),a0		! end of 'argv[]' and in *argv[] strings?
	blt	2f		! skip if a0 is less than start of *argv[]
	sub.l	#4,a0		! else backup one to set env = 0 (NULL)
2:
	move.l	a0,(8,sp)	! env
!	move.l	a0, environ	! indir is 0 if no env; not 0 if env
!	jsr	(initfpu)	! call to dummy floating point init routine
	jsr	(__m_a_i_n)
	move.l	d0,(sp)		! no stack cleanup needed
EXIT:
	jsr	(__exit)

WRITE:
	jmp	(__write)
BRK:
	jmp	(__brk)

	.sect .data
begdata:
splimit:
	.data4 0		! may be at virtual address 0 with no problem
hol0:
.lino:
	.data4	0	! lino
.filn:
	.data4	0	! filn
.reghp:
	.data4	endbss
.limhp:
	.data4	endbss
.trppc:
	.data4	0
.trpim:
	.data4	0	! USED TO BE 2 BYTES; IS THIS RIGHT?


	.sect .bss
begbss: !initialization is not needed because ALL entries are in zero space!
