Hallo,
für den STe 1040/TOS 2.06 (deutsch) möchte ich gern direkt beim Systemstart die Farbtabelle ändern, wenn der Bildschirmmodus 0 ist (also geringe Auflösung mit 16 Farben gleichzeitig).
Dazu habe ich ein kleines Pascal-Programm geschrieben.
Wird das Programm manuell gestartet, funktioniert es wie gewünscht. Befindet es sich im AUTO-Ordner, dann wird es zwar ausgeführt (die eingebaute Meldung ist beim Start zu sehen), jedoch wird die Tabelle (bzw. in diesem Fall das eine Farbregister) nicht modifiziert.
Nun habe ich schon in verschiedenen Büchern nachgesehen, ob AUTO-Programme irgendeine Spezifikation einhalten müssen, aber leider nichts gefunden.
Meine Vermutung ist, daß das Register zwar manipuliert wird, aber an dieser Stelle das System noch nicht vollständig geladen ist und nach der Abarbeitung des Programms das Register vom System auf den Standardwert zurückgesetzt wird.
Kann mir bitte jemand weiterhelfen?
Ev. ist ja meine Vermutung falsch und ich muß im Programm nur eine Systemfunktion aufrufen, so daß die Manipulation des Registers dauerhaft ist.
Anbei der Code des Programms:
--------------------
PROGRAM Farbtabelle;
CONST {$I TRIXCONS.PAS}
CONST {$I GEMCONST.PAS}
TYPE {$I TRIXTYPE.PAS}
TYPE {$I GEMTYPE.PAS}
VAR iAlteFarbe, event, d : integer;
msg : message_buffer;
{$I TRIXSUBS.PAS}
{$I GEMSUBS.PAS}
FUNCTION SETCOLOR(iFarbnummer, iFarbe : integer) : integer;
XBIOS(7);
FUNCTION GETREZ:INTEGER;
XBIOS(4);
BEGIN
IF GETREZ = 0 THEN
BEGIN
{Die eigentlichen Farb-Registernummern entsprechen nicht der}
{fortlaufenden Nummerierung.}
{Register 15, hellrosa}
iAlteFarbe := SETCOLOR(13, 0);
writeln('Farbtabelle fuer Atari STe 1040.');
END;
END.
--------------------
Danke.
-R.