; Initial startup routine for Aztec 'C' and ARP
; NB: This should allow access to all Aztec Features, math, etc.
;     Could be made smaller if only for CLI, only for Workbench,
;     Could be made smaller if only this or that.
;
; Created 11/08/87 by -+=SDB+=- from crt0.a68 file provided by Manx
; Copyright (c) 1987 by Scott Ballantyne, may be freely
; used by Arp Supporters/users
;
; 10-Mar-90:	Some minor rework for Aztec 5.0 release.
;		This should rather use rstart.asm code.
;

	include "exec/types.i"
	include "exec/alerts.i"
	include "libraries/arpbase.i"
	include	"exec/execbase.i"

call	macro
	xref	_LVO\1
	jsr	_LVO\1(a6)
	endm

	mc68881
	entry	.begin
	public	.begin
.begin
	bsr	_geta4			;get A4
	lea	__H1_end,a1
	lea	__H2_org,a2
	cmp.l	a1,a2			;check if BSS and DATA together
	bne	start			;no, don't have to clear
	move.w	#((__H2_end-__H2_org)/4)-1,d1
	bmi	start			;skip if no bss
	moveq	#0,d2

loop	move.l	d2,(a1)+                ;clear out memory
	dbra	d1,loop

start	move.l	sp,__savsp		;save stack pointer
	move.l	(4).w,a6		;get Exec's library base pointer
	move.l	a6,_SysBase		;put where we can get it
	movem.l d0/a0,-(sp)             ;save CLI command parameters

	move.w	AttnFlags(a6),d0
	btst	#AFB_68881,d0           ;check for 68881 flag in AttnFlags
	beq	1$			;skip if not
	lea	2$,a5
	call	Supervisor              ;do it in supervisor mode
	bra	1$

2$	clr.l	-(sp)
	frestore (sp)+                  ;reset the ffp stuff
	rte				;and return

1$	jsr	__main			;call the startup stuff

4$	addq.l	#8,sp			;pop args
	rts				;and return

	public	_geta4

_geta4:	far	data
	lea	__H1_org+32766,a4
	rts

	public	__main,__H0_org

	dseg

	public	_SysBase,__savsp ; ,_DOSBase
	public	__H1_org,__H1_end,__H2_org,__H2_end

	end
