
		SECTION code,CODE
		
		;Was program started from CLI ?
			MOVE.L	4.w,a6
			SUB.L	a1,a1
			JSR		_LVOFindTask(a6)
			MOVE.L	d0,a4
			CLR.L	d0
			TST.L	pr_CLI(a4)
			BNE		StartedFromCLI
			
		;Store the task pointer
			MOVE.L	a4,TaskPtr
			
		;Run the program
			BRA		StartedFromWB
			
		;Version string
			DC.B	"$VER: TTX 1.0 (23.8.99)",0
			EVEN
			
			
StartedFromCLI:
		
		;Exit to dos
			CLR.L	d0
			RTS
			
			
StartedFromWB:

		;Get a message from the workbench
			LEA		pr_MsgPort(a4),a0
			JSR		_LVOWaitPort(a6)
			JSR		_LVOGetMsg(a6)
			MOVE.L	d0,WBmsg
			
		;Open dos.library
			LEA		DosName,a1
			CLR.L	d0
			JSR		_LVOOpenLibrary(a6)
			MOVE.L	d0,DosLB		
			
		;Open icon.library
			LEA		IconName,a1
			CLR.L	d0
			JSR		_LVOOpenLibrary(a6)
			MOVE.L	d0,IconLB				
			
		;Remember the current directory lock
			MOVE.L	TaskPtr,a0
			MOVE.L	pr_CurrentDir(a0),OrigDir
						
		;Get the pointer to the Dir & Program from WB
			MOVE.L	WBmsg,a0
			MOVE.L	$24(a0),a0
			
		;Move to the Directory passed from WB
			MOVE.L	DosLB,a6
			MOVE.L	8(a0),d1
			JSR		_LVOCurrentDir(a6)
			MOVE.L	d0,-(a7)
			
		;Load the Disk Object file
			MOVE.L	IconLB,a6
			MOVE.L	WBmsg,a0
			MOVE.L	$24(a0),a0
			MOVE.L	12(a0),a0
			JSR		_LVOGetDiskObject(a6)
			
		;Check there was an icon file
			MOVE.L	d0,DiskObj
			BEQ		NoIconFile
			
		;Search for TTX_BEFORE tool types
TTXB_Loop:	MOVE.L	DiskObj,a0
			MOVE.L	do_ToolTypes(a0),a0
			LEA		TTX_BEFORE,a1
			MOVE.L	IconLB,a6
			JSR		_LVOFindToolType(a6)
			MOVE.L	d0,ToolTypeVal
			BEQ		NoTTX_BEFORE
			
		;We must execute the ToolType value as a CLI command
			MOVE.L	DosLB,a6
			MOVE.L	ToolTypeVal,d1
			CLR.L	d2
			CLR.L	d3
			JSR		_LVOExecute(a6)
		
		;Check if there is another.
			MOVE.L	ToolTypeVal,a0
			MOVE.B	#'X',-1(a0)	
			BRA.S	TTXB_Loop
			
NoTTX_BEFORE:		

		;Execute the program with the same name as the project icon.
			MOVE.L	DosLB,a6
			MOVE.L	WBmsg,a0
			MOVE.L	$24(a0),a0
			MOVE.L	12(a0),d1
			CLR.L	d2
			CLR.L	d3
			JSR		_LVOExecute(a6)	
			
		;Search for TTX_AFTER tool types
TTXA_Loop:	MOVE.L	DiskObj,a0
			MOVE.L	do_ToolTypes(a0),a0
			LEA		TTX_AFTER,a1
			MOVE.L	IconLB,a6
			JSR		_LVOFindToolType(a6)
			MOVE.L	d0,ToolTypeVal
			BEQ		NoTTX_AFTER
			
		;We must execute the ToolType value as a CLI command
			MOVE.L	DosLB,a6
			MOVE.L	ToolTypeVal,d1
			CLR.L	d2
			CLR.L	d3
			JSR		_LVOExecute(a6)
		
		;Check if there is another.
			MOVE.L	ToolTypeVal,a0
			MOVE.B	#'X',-1(a0)	
			BRA.S	TTXA_Loop
			
NoTTX_AFTER:		
		
		;Free the disk object
			MOVE.L	IconLB,a6
			MOVE.L	DiskObj,a0
			JSR		_LVOFreeDiskObject(a6)
			
			
NoIconFile:
		;Restore the original directory
			MOVE.L	DosLB,a6
			MOVE.L	(a7)+,d1
			JSR		_LVOCurrentDir(a6)

		;Close the Dos Library
			MOVE.L	4.w,a6
			MOVE.L	DosLB,a1
			JSR		_LVOCloseLibrary(a6)
			
		;Close the Icon Library
			MOVE.L	4.w,a6
			MOVE.L	IconLB,a1
			JSR		_LVOCloseLibrary(a6)

ExitToWB:
		;Reply to the Workbench StartUp Message
			MOVE.L	4.w,a6
			JSR		_LVOForbid(a6)
			MOVE.L	WBmsg,a1
			JSR		_LVOReplyMsg(a6)
			
		;Exit with return code of ZERO.
			CLR.L	d0
			RTS
		

		SECTION	data,DATA
		
WBmsg:			DC.L	0
TaskPtr:		DC.L	0
OrigDir:		DC.L	0
DosLB:			DC.L	0
IconLB:			DC.L	0
DiskObj:		DC.L	0
ToolTypeVal:	DC.L	0

		
DosName:		DC.B	"dos.library",0
IconName:		DC.B	"icon.library",0
TTX_BEFORE:		DC.B	"TTX_BEFORE",0
TTX_AFTER:		DC.B	"TTX_AFTER",0


_LVOGetDiskObject	EQU		-78
_LVOFindToolType	EQU		-96
_LVOFreeDiskObject	EQU		-90