    ttl     EXEC_OS v2.0 : Starten von GEM mit Environment Variablen
    llen    120
    list
*
* Starten von GEM aus dem AUTO-Ordner mit Environment Variablen
*
* Version 2.0 mit Environment Variablen im Programm
* 19.9.1989 Ralf Meister
*

*
* Die Makros frs Betriebssystem einbinden
*
        include "osbind.i"

*
* Symbolische Namen
*
p_tbase set $8              * Adresse des Programmcodes
p_tlen  set $c              * Offset L„nge TEXT in Basepage
p_dlen  set $14             * Offset L„nge DATA in Basepage
p_blen  set $1c             * Offset L„nge BSS in Basepage

exec_os equ $4fe            * Die Systemvariable EXEC_OS


        text

*
*   Einsprung in das Programm geschieht hier
*   Adresse der Base-Page ist auf dem Stack ber der Rckkehradresse
*

start   move.l  4(a7),a1        * Adresse der Basepage nach a1
        move.l  p_tlen(a1),d0   * L„nge des Programmcodes
        add.l   p_dlen(a1),d0   * + L„nge des Datenbereichs
        add.l   p_blen(a1),d0   * + L„nge der uninitialisierten Daten
        add.l   #$100,d0        * + L„nge der Basepage
        Mshrink a1,d0           * Den Platz fr's Programm verkleinern
        tst.l   d0              * Hat es geklappt ?
        bne.s   abort

        move.l  #start-4,a7     * Stack einfach in Basepage

        Cconws  #version        * Meldung ausgeben

        Pexec   #5,#0,#0,#env   * Eine Basepage mit Environment anlegen
        tst.l   d0              * Hat es geklappt ?
        bls.s   abort           * wenn <0 dann nicht
        move.l  d0,a5           * Die Basepage nach a5 (sicher vor GEMDOS)

        Super   #0              * In Supervisormode
        move.l  exec_os,p_tbase(a5) * Die Adresse eintragen
        Super   d0              * und in Usermode

        Pexec   #4,#0,a5,#0     * Und Programm starten

abort:  Pterm   d0              * Mit Fehlerkode d0 aus Programm
        bra.s   abort           * Sollte nie ausgefhrt werden 

        data

version dc.b    "EXEC_OS v2.0 Ralf Meister",$a,$d
        dc.b    "Booting shell (GEM) with environment:",$d,$a
env     dc.b    "PATH=.;C:\;C:\RESOURCE\",0,0

        end
