/ (lgl-
/ 	Mark Williams C for the Atari ST Version 1.0
/ 	Copyright (c) 1984-1986 by Mark Williams Company, Chicago.
/ 	All rights reserved. May not be copied without permission.
/ -lgl)
/
/ ST C run time startup.
/
/ Stripped version for gem tos/aes/vdi environment:
/	main called with argc == argv == envp == 0,
/	getenv will not work
/	file handle 2 left pointing where ever it does,
/
	.prvd
	.globl	errno_
	.globl	environ_
	.globl	_stksize_
	.globl	_start_
errno_:		.word 0
environ_:	.long 0

/
/	a1 = end of bssd
/	a5 = base page pointer
/	_stksize_ = a long size for stack allocation
/		overwritten at runtime to make a stack limit
/	_start_ = program text base
/

	.shri
_start_:
	movea.l	4(a7), a5		/ Fetch base page pointer
	movea.l	24(a5), a1		/ Fetch bss base
	adda.l	28(a5), a1		/ + size of bss
/ Allocate stack, a1 points beyond vectors
	move.l	a1, d0			/ Save stack limit
	adda.l	_stksize_, a1		/ Allocate _stksize_ bytes of stack
	move.l	d0, _stksize_		/ Save stack limit
	movea.l	a1, a7			/ Set the initial stack.
	move.l	a1, 4(a5)		/ Save current brk for sbrk
/ Push arguments for main(argc, argv, envp)
	move.l	a5, -(a7)		/ basepage
	clr.l	-(a7)			/ envp[]
	clr.l	-(a7)			/ argv[]
	clr	-(a7)			/ argc
/ Release unused memory to the system pool.
	suba.l	a5, a1			/ Compute size of retained memory
	move.l	a1, -(a7)
	move.l	a5, -(a7)		/ Base of retained memory
	clr	-(a7)			/ Must be zero
	move	$0x4A, -(a7)		/ Mshrink opcode
	trap	$1			/ Gemdos
	adda	$12, a7			/ Pop arguments
/ Call main(argc, argv, envp)
	suba	a6, a6			/ Zero frame pointer
	jsr	main_			/ Call main line
	adda	$10, a7			/ Pop arguments
/ Exit with return from main
	move	d0, -(a7)		/ Push status
	jsr	exit_			/ Call extended exit()
	move	$0x4C, -(a7)		/ Terminate
	trap	$1
