atari-home.de - Foren
Software => Coding => Thema gestartet von: rainers am Mo 25.03.2013, 11:33:33
-
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.
-
Der GEM-Desktop setzt die Defaultpalette nochmal. Mir wäre keine saubere Lösung bekannt, außer die neue Palette im DESKTOP.INF zu speichern und übers Kontrollfeld einzuspielen.
Wenn du einen technisch anderen Weg findest, bitte hier dokumentieren :) Es würde mich auch interessieren, ob es anders gehen würde.
-
Da Du TOS 2.06 hast kannst Du das Program als Autostartanwendung anmelden (Newdesk.INF speichern nicht vergessen). Das sollte im Gegensatz zum AUTO-Ordner funktionieren da dies z.B. auch mit GEM Programmen funktioniert.
-
@simonsunnyboy: Meinst Du damit Arthurs Vorschlag? Wenn nicht, wie speichert man die Farbtabelle in der DESKTOP.INF ?
@Arthur: Dolle Sache. Das hatte ich nun gar nicht mehr versucht. Funktioniert prima. Danke.
-R.
-
schau mal hier (http://www.atari-forum.com/wiki/index.php?title=DESKTOP.INF_DOCUMENTATION)
-
Klasse Link!
Gruß, Dennis
-
@simonsunnyboy: Meinst Du damit Arthurs Vorschlag? Wenn nicht, wie speichert man die Farbtabelle in der DESKTOP.INF ?
@Arthur: Dolle Sache. Das hatte ich nun gar nicht mehr versucht. Funktioniert prima. Danke.
-R.
Naja, Kontrollfeld und dann Desktop speichern, wie schon Anno 1987. Das genaue Format ist ASCII lesbar, IIRC wird alles in eine Zeile codiert. Das Prolem ist halt, daß man das RAM fressende Kontrollfeld laden muss.
-
Danke für die Antworten.
Habe, wie geschrieben, Arthurs Vorschlag umgesetzt. Ist meiner Meinung nach die beste Idee.
Wie die Farbtabelle in der DESKTOP.INF codiert gespeichert wird, ist mir jetzt auch klar. Danke an HamSTer.
Aber wie sie über das Kontrollfeld und "Desktop speichern" dort hinein kommt, nicht.
Bei Deiner "Erklärung" simonsunnyboy komm ich nicht mit. Du weißt, von was Du sprichst, ich leider nicht. Ich weiß zum Beispiel auch nicht, was IIRC ist.
-
Was IIRC und andere Abkürzungen bedeuten steht zB hier (http://pc.net/slang/)
-
Ah. Danke für den Link.
Aber nichts für ungut. Ich habe nicht umsonst 13 Jahre lang die deutsche Sprache gelernt, um mich dann per unverständlicher Abkürzungen zu verständigen und schon gar nicht per englischer Abkürzungen.
Das mag für viele spießig klingen, aber so ist das eben.
Ich hasse zum Beispiel solche Abkürzungen wie: MFG, VG, LG.
So, nun genug abseits vom Thema. Ihr habt mir geholfen, dafür danke ich Euch.
-
Das Kontrolfeld speichert die Daten intern irgendwie weg, k.A. wohin, vllt direkt in die Palettenregister.
Desktop speichern ist halt der Menüpunkt, der Dir das DESKTOP.INF anlegt oder mit neuen Inhalten füllt, der Punkt heisst je nach TOS-Version etwas anders. Beim TOS 1.62 z.B. unter Extras > Arbeit sichern
Allerdings wird die im DESKTOP.INF gespeicherte Farbinformation nur vom Kontrollfeld wieder ausgelesen.
-
Ah, langsam wird's heller ;) Danke Dir.
-
Mit einigen Bootselektoren kann man unterschiedliche Desktop.inf oder Newdesk.inf verwalten.
Vielleicht wäre das etwas für Dich, damit Du nicht auf eine Farbtabelle beschränkt bist.
-
Hallo jens,
danke für den Tip. Das probiere ich mal aus.
-R.