Hilfe zur Verwendung der Startup-Codes SOZOBON/XDLIBS Im startup code sind einige globale Variablen enthalten, die z.T. von die Bibliotheksfunktionen verwendet werden. Aužerdem werden der Stack eingerichtet und die Funktion _initargs() aufgerufen (nicht von allen). Alle startup codes mit '_s' im Namen rufen main() ber die Bibliotheksfunktion _main() auf, die einiges fr die stdio Bibliothek initialisiert. Kann der gewnschte STACK nicht alloziert werden, beendet der startup code den Prozež mit dem Wert ENSMEM (-39) - das kann bei ACCs nicht passieren. Folgende Startup-Codes werden verteilt: STD_S -- normaler Startupcode fr TTPs, TOSs, APPs, GTPs, PRGs <_app> ist immer TRUE ACC_S -- nur fr Accessories, _STKSIZ ist unver„nderlich festgelegt auf 4K (wenn gewnscht kann das auch variabel gestaltet werden) Globale Variable <_app> ist 0; wenn als Programm gestartet, wird eine Fehlermeldung ausgegeben, und der Prozess mit -1 (ERROR) beendet. ACCAPP_S -- StartUp fr ACC's und Programme, die commandline wird nur fr Programme ausgewertet; fr Accessories ist _STKSIZ derzeit unver„nderlich 4K. Globale Variable <_app> ist 1 wenn PRG und 0 wenn ACC durch einfaches Umbenennen laufen die binaries sowohl als ACC als auch als PRG (!) Dieser Code enth„lt auch schon die Funktion teststack(). MIN_S -- fr Programme, die keine Argumente auswerten aber stdhio Funktionen benutzen. <_app> ist immer TRUE. argv aus main zeigt auf zwei NULL Pointer, argc ist 0. Die ARGV Variable aus dem Environment wird abgeschnitten. Das Environment ist normal verfgbar (_envp oder aus dem 3. main() Argument). Auf die Pexec commandline kann ber _base+0x80 zugegriffen werden. So kann ohne _initargs dort nach Argumenten gesucht werden. (Siehe Funktion getcmdln() in minimum.h) PROF_S -- fr Programme, die mit Profiling bersetzt wurden (nur V2.00x) entspricht std_s.o Dieser startup Code ist dafr zust„ndig, daž die Profiling Infos bei Beendung des Programmes via exit() oder return from main() automatisch in eine Datei geschrieben werden. DEBUG_S -- fr Programme, die mit Debugging bersetzt wurden (nur V2.00x) entspricht std_s.o Dieser Code ist dafr zust„ndig, daž bei einem Absturz die Nummer der verursachenden C-Source - Zeile sowie deren Dateiname ausge- geben wird. Er kann natrlich auch sonst verwendet werden, anstatt Bomben kommen dann Meldungen im Klartext. Dies kann wegen verbogener exception Vektoren zu Problemen fhren. ACCMIN -- nur fr Accessories, die keine stdio Funktionen benutzen; das Environment ist normal verfgbar (_envp oder aus dem 3. main() Argument. _STKSIZ ist unver„nderlich festgelegt auf 4K (wenn gewnscht kann das auch variabel gestaltet werden) Globale Variable <_app> ist 0; wenn als Programm gestartet, wird eine Fehlermeldung ausgegeben, und der Prozess mit -1 (ERROR) beendet. MINIMUM -- fr Programme, die keine Argumente auswerten und KEINE stdhio Funktionen benutzen. <_app> ist immer TRUE. argv aus main zeigt auf zwei NULL Pointer, argc ist 0. Die ARGV Variable aus dem Environment wird abgeschnitten. Das Environment ist normal verfgbar (_envp oder aus dem 3. main() Argument). Auf die Pexec commandline kann auch hier ber _base+0x80 zugegriffen werden. So kann ohne _initargs dort nach Argumenten gesucht werden. (Siehe Funktion getcmdln() in minimum.h) Anwendung: cc und C-Desk verwenden normalerweise 'std_s.o' als startup code. cc mit der Option -X verwendet 'debug.o' als startupcode. cc kann mit der Option '-s ' ein beliebiger startup code bergeben werden. In C-Desk kann ein solcher mit Mausklick ausgew„hlt werden. Der startup code muž immer die erste Datei sein, die dem Linker ld bergeben wird. cc und C-Desk machen dies automatisch richtig. Achtung: die vorligenden Startup's enthalten die Funktionen gemdos(), bios(), bdos() und xbios() nicht mehr, deshalb MUSS die XDlibs-Bibliothek verwendet werden! (bzw. xvdifast, xaesfast/aesfast) -eof