	Tst.L	_FileName		;have we already got a filename
	Beq.S	.UseASL

	Tst.L	_WBMessage		;were the arguments from Workbench?
	Bne.S	.UseIcons

;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
	Move.L	_FileName(PC),A0
	Move.L	A0,_CurrentName

	Moveq	#0,D0
.RDLoop	Addq	#1,D0
	Cmp.L	#0,(A0)+
	Bne.S	.RDLoop

	Subq	#1,D0
	Beq	LaunchFinished
	Move.W	D0,_LoopCount

	Clr.L	_FileName
	Move.W	#ARGS_READARG,_ArgMode
	Bra	.FileNameFound

;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
.UseIcons	Move.L	_WBMessage(PC),A0
	Move.L	sm_ArgList(A0),A1
	Move.L	sm_NumArgs(A0),D0

	Addq	#8,A1
	Move.L	A1,_CurrentName
	Subq	#1,D0
	Beq	LaunchFinished
	Move.W	D0,_LoopCount

	Clr.L	FileName
	Move.W	#ARGS_ICONS,_ArgMode
	Bra	.FileNameFound

;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
.UseASL	Tst.B	_UseAppIcon
	Bne	.UseAppIcon

	Move.W	#ASLOPENERR,_ErrorCode

	Lea	ASLLibrary(PC),A1
	Moveq	#38,D0
	CALL	OpenLibrary,EXEC
	Move.L	D0,_ASLBase
	Beq	LaunchDone

	Move.W	#ASLREQERR,_ErrorCode

	Moveq	#ASL_FileRequest,D0
	Sub.L	A0,A0
	CALL	AllocAslRequest,ASL
	Move.L	D0,_Requestor
	Beq	LaunchDone

	Clr.W	_ErrorCode

	Move.L	_Requestor(PC),A0
	Lea	_ASLTags(PC),A1
	CALL	AslRequest
	Cmp.L	#FALSE,D0
	Beq.S	.FileNameFound

	Move.L	_Requestor(PC),A0
	Move.L	fr_ArgList(A0),_CurrentName
	Move.L	fr_NumArgs(A0),D0
	Move.W	D0,_LoopCount
	Beq	LaunchDone

	Clr.L	_FileName
	Move.W	#ARGS_ASLREQ,_ArgMode
	Bra.S	.FileNameFound

;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
.UseAppIcon	Clr.W	_ErrorCode
	Clr.L	_FileName
	Clr.W	_ArgMode

;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
.FileNameFound
