[comp.sys.atari.st] Gulam auto-boot

egisin@orchid.UUCP (12/05/87)

I offered this program a while ago, but only received a few requests so I
replied to them by mail. Because the topic came up again, I'm posting it.

Here is my program to initialize the VDI and Aline then execute \bin\gulam.prg.
This program does NOT allow you to return to the desktop by exiting Gulam.
I tried to fix this, but the ST crashes so horribly I can't get to the debugger.

Command.uue contains a uuencoded Command.prg which should be put in the \auto folder
(or in \command.prg if you set up the disk to boot that way).
Gulam must be in \bin\gulam.prg.
The self-contained source (does not need VDI library) is also included
for Mark Johnson C. The vdi function needs to be translated for other C's.

	Eric Gisin, egisin@Waterloo.EDU, egisin@orchid.uucp

=== command.c ===
/*
 * Initialize VDI and run \bin\gulam.prg. By Eric Gisin, Oct 1987.
 * So you can run Gulam and VDI applications from command.prg or \auto\*.prg.
 * Does not allow AES applications to be run from Gulam or \auto.
 * (If anyone knows how to do that let me know <egisin@Waterloo.EDU>)
 */

#define	MJC				/* Mark Johnson C ONLY */

#ifdef MJC
#include "\lib\osbind.h"
#else
#include <osbind.h>
#endif

short control [12] = {1, 0, 0, 11, 0, 0, 0};	/* VDI/AES control block */
short intin [11] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2};
short ptsin [4];
short intout [47];
short ptsout [16];
short * params [6] = {			/* VDI/AES parameter block */
	control, intin, ptsin, intout, ptsout, 0L
};

main(argc, argv, envp)
	char ** argv, * envp;
{
	control[0] = 1;	vdi();		/* v_opnwk(&h) */
	return Pexec(0, "\\bin\\gulam.prg", "", envp);
	/* we have to close the screen to return to the desktop */
	/* I couldn't get this to work, maybe it isn't function 2 */
	control[0] = 2;	vdi();		/* v_clswk(h) */
}

#ifdef MJC

vdi() {
	/* load address of vdi parameter block into a0 */
	asm(lag params 0);	/* lea params, A0 */
	asm(tad 0 1);		/* move.l A0, D1 */
	asm(ldw 115 0);		/* move.w $115, D0 */
	asm(trp 2);		/* trap 2 */
}

#endif

=== command.uue ===
table
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 command.prg
M8!H   =R        (8@                  "Q/("X !"/    /<D_Y   /|
M<DZY    ]@ !       +                       !  $  0 !  $  0 !|
M  $  0 !  (    8    ,   #W8   ]^   /W     !.5@  ,#P  4'Y    |
M&#(\  ##_  ",8 8 $ZY    X" N  XO $'Y    WB (+P!!^0   ,X@""\ |
M,#P  #\ ,#P 2S\ 3D'>_  03EY.=3 \  1!^0   !@R/   P_P  C& & !.|
MN0   .!.7DYU7&)I;EQG=6QA;2YP<F<     3E8  $'Y    1B((,#P <TY"|
M3EY.=4Y6_^8@+@ (+4#_YB N_^8@0# \  /!_  $(# ( "(N_^8@03(\  7#|
M_  $(C 8 -"!(B[_YB!!,CP !\/\  0B,!@ T($R/ $ 2,'0@2U _^H@+O_J|
M+P @+@ (+P P/   /P P/ !*/P!.0=[\  Q*@&<  !(P//__/P!.N0  !F3>|
M_  ",#P  3/    /_$'Y   %QB (0?D   _^,CP  ,/\  0A@!@ ("[_YB! |
M,#P "\'\  0@, @ (\   !#&("X "#(\ (%(P="!+4#__" \     "U __ M|
M0/_T("[__"! $!!* &<  08@+O_\($ 0$$H 9P  (B N__P@0! 0,CP ($B |
ML$%N   .("[__%*N__Q@ /_4("[__"U __@@+O_\($ 0$$H 9P  (B N__P@|
M0! 0,CP ($B L$%O   .("[__%*N__Q@ /_4("[__"! $!!* &<  !(P/   |
M(B[__%*N__P@01" ("[_^"! $! R/  \2("P068  !8@+O_X,CP  4C!T($M|
M0/_T8   6" N__@@0! 0,CP /DB L$%F   6("[_^#(\  %(P="!+4#_\&  |
M # P.0  #_PR/  RL$%L   @("[_^$'Y   /_C(Y   /_%)Y   /_,/\  0A|
M@!@ 8 #^\" \     $'Y   /_C(Y   /_,/\  0A@!@ ,#P  #U _^XP+O_N|
M,CP !K!!;   7F    XP+O_N4F[_[F  _^0P/   0?D  !#*,B[_[L/\! 9!|
M\!@ $( P/   0?D  !#*,B[_[L/\! 9!\!@ ,4  !$'Y   0RC(N_^[#_ 0&|
M0? 8 #%   )@ /^J0?D  !#*,#P  ,'\! 9!\ @ ( @CP   *.XP/   (CD |
M "CN($$10  !0?D  !#*,#P  <'\! 9!\ @ ( @CP   */(P/  !(CD  "CR|
M($$10  !0?D  !#*,#P  L'\! 9!\ @ ( @CP   */8P/  %(CD  "CV($$1|
M0  !,#P  R(Y   H]B!!$( B.0  */(@01" (CD  "CN($$0@" N__1*@&< |
M %PP/   /P @+O_T+P P/  ]/P!.0=[\  @]0/_N(CD  "CN($$10  !,#P |
M 2(Y   H[B!!$( P+O_N,CP  +!!;   &# N_^X_ " N__0O $ZY   %RM[\|
M  8@+O_P2H!G  #2("[_\"! $! R/  ^2("P06<  "XP/   /P @+O_P+P P|
M/  \/P!.0=[\  @]0/_N(CD  "CR($$10  !8   8# \  $_ %*N__ @+O_P|
M+P P/  ]/P!.0=[\  @]0/_N(CD  "CR($$10  !,"[_[C(\  "P06T  "8P|
M/  "/P P+O_N/P @/      O # \ $(_ $Y!WOP "CU _^XP/  "(CD  "CR|
M($$0@# N_^XR/   L$%L   8,"[_[C\ ("[_\"\ 3KD   7*WOP !B Y   0|
MQB\ 0?D   _^( @O # Y   /_#\ 3KD   !>WOP "CU _^X@+O_T2H!G   4|
M(#D  "CN+P!.N0  !G[>_  $("[_\$J 9P  %" Y   H\B\ 3KD   9^WOP |
M!# N_^X_ $ZY   &9-[\  ).7DYU>6,  $Y6  !!^0  !AH@""\ 3KD   8N|
MWOP !" N  @O $ZY   &+M[\  1!^0  !BH@""\ 3KD   8NWOP !# N  P_|
M $ZY   &9-[\  ).7DYU8V%N)W0@<F5D:7)E8W0@  H-  !.5@  ("X ""! |
M$!!* &<  "(@+@ (4JX ""! $!!(@#\ ,#P  C\ 3D'>_  $8 #_U$Y>3G5.|
M5@  ,"X "#\ ,#P 3#\ 3D'>_  $3EY.=4Y6   @+@ ((CP     L(%G  !<|
M("X ""! $! R/  "2("P068  !(@+@ (+P!.N0  !O#>_  $("X ""! $"@ |
M 4H 9P  '" N  @@0! H  %(@#\ ,#P /C\ 3D'>_  $,#P  "(N  @@01" |
M3EY.=4Y6__X@+@ (($ P*  ",CP  +!!;P  /" N  @@0$'H  8@""\ ("X |
M""! ,"@  DC +P @+@ (($ 0*  !2( _ # \ $ _ $Y!WOP ##U __XP/   |
M(BX ""!!,4   C N__XR/   L$%N   *,#S__V    8P+O_^3EY.=4Y>3G4 |
M   (!@8R! 0$!!(2# HD$B".#@8() $&% 8&& 8X&!8:% H,% H,% H0"@HP|
7$"1$,$(D"@@*"!@(% @0%@H0"@H0H  &|
 |
end
sum 36253

martin@lakesys.UUCP (Martin Wiedmeyer) (12/06/87)

Thank you, Eric for posting your solution to the Gulam auto-boot problem!
Now when I don't want to go thru a full GEM boot I'm not forced to.

	Thanks again,

	  Marty

P.S. It's also nice to see code for MJC! :-)

-- 
|	Martin Wiedmeyer - Lake Systems, Milwaukee, WI                        |
|       UUCP: {ihnp4,uwvax}!uwmcsd1!lakesys!martin                            |
|       Disclaimer: "I take the heat for my own (mis)statements!"             |