MAG Disk (Jun 1990) : source / AltStartup.a

	       INCLUDE	  "exec/types.i"
	       INCLUDE	  "libraries/dos.i"
	       INCLUDE	  "libraries/dosextens.i"
	       INCLUDE	  "exec/execbase.i"
	       INCLUDE	  "exec/funcdef.i"
	       INCLUDE	  "exec/exec_lib.i"
	       INCLUDE	  "libraries/dos_lib.i"

AbsExecBase    EQU	  4
POPUPPRI       EQU	  5
POPUPSTACK     EQU	  2000
* Must use Kickstart 1.2 or higher
LIBVERSION     EQU	  33

	       xref	  _LinkerDB
	       xref	  @InitPopUpMenu
	       xref	  _PopUpTaskName

	       section	  text,code

Startup        MOVEM.L	  D2-D4/A2-A4/A6,-(A7)
	       LEA	  _LinkerDB,A4

* ------------ Open dos.
	       LEA	  DosName(PC),A1
	       MOVEQ.L	  #LIBVERSION,D0
	       MOVEA.L	  AbsExecBase.W,A6
	       JSR	  _LVOOpenLibrary(A6)
	       MOVE.L	  D0,_DOSBase(A4)

	       TST.L	  D0
	       BEQ.W	  NoDos

* ------------ Get pointer to our Process.
	       MOVEA.L	  ThisTask(A6),A3

* ------------ Find current output window.
	       MOVE.L	  #CurrWindow,D1
	       MOVE.L	  #MODE_OLDFILE,D2

* ------------ Run from Workbench ?
	       TST.L	  pr_CLI(A3)
	       BNE.B	  FromCLI

* ------------ Wait for Workbench startup-message.
	       LEA	  pr_MsgPort(A3),A0
	       JSR	  _LVOWaitPort(A6)
	       LEA	  pr_MsgPort(A3),A0
	       JSR	  _LVOGetMsg(A6)
	       MOVE.L	  D0,D3

* ------------ Open window on Workbench screen.
	       MOVE.L	  #WbWindow,D1
	       MOVE.L	  #MODE_NEWFILE,D2
FromCLI        MOVEA.L	  _DOSBase(A4),A6
	       JSR	  _LVOOpen(A6)
	       MOVE.L	  D0,_StdOut(A4)

	       MOVEA.L	  AbsExecBase.W,A6
	       TST.L	  D0
	       BEQ.B	  NoStdOut

* ------------ Don't unload segments.
	       CLR.L	  _PopUpSeg(A4)

* ------------ Set task priority.
	       MOVEA.L	  A3,A1
	       MOVEQ	  #POPUPPRI,D0
	       JSR	  _LVOSetTaskPri(A6)

* ------------ Start PopUpMenu-program.
	       JSR	  @InitPopUpMenu

* ------------ Must reply if started from workbench.
NoStdOut       TST.L	  pr_CLI(A3)
	       BNE.B	  Done
	       JSR	  _LVOForbid(A6)
	       MOVEA.L	  D3,A1
	       JSR	  _LVOReplyMsg(A6)
Done
NoDos	       MOVEQ	  #00,D0
	       MOVEM.L	  (A7)+,D2-D4/A2-A4/A6
	       RTS
* Put these data in our code-segment.
CurrWindow     dc.b	  '*',0
DosName        dc.b	  'dos.library',0
WbWindow       dc.b	  'CON:100/75/400/45/PopUpMenu',0

	       section	  __MERGED,bss

	       xref	  _DOSBase
	       xref	  _StdOut
	       xref	  _PopUpSeg

	       END