Umgang mit Bildern
Umgang mit Bildern

Seit Version 2.20515 ist TSB in der Lage, mit einigen verbreiteten Grafikformaten umgehen zu können: Standard-Bitmap, Doodle und Hi-Eddi im Hires-Bereich und Blazing Paddles sowie Artist64 im Multicolor-Bereich. Damit können sowohl gängige Bilder nach TSB importiert, wie auch TSB-generierte Bilder in gängige Formate exportiert werden, was vielleicht einen belebenden Effekt auf den Austausch zwischen Programmiersprachen und Bildeditoren haben könnte.

Verantwortlich dafür sind die beiden Befehle SCRLD und SCRSV, sowie deren "Zulieferer" SCRLD DEF und SCRSV DEF.


Vorgeschichte:

Ursprünglich waren SCRSV und SCRLD in Simons' Basic Befehle, die dazu dienten, Textbildschirme und deren Farben (sogenannte Bildschirmmasken) abzuspeichern bzw. zu laden. Sehr früh schon veröffentlichte dann Hans Haberl (der Autor von Print- und Pagefox) einen Patch für die Befehle, der es erlaubte. auch Bitmaps (ohne Farben) auf Diskette zu bringen. Dieser Patch wurde in TSB übernommen.

Dann tat sich lange Zeit nichts, bis ich auf die Idee kam, mit ein paar POKEs die Eigenschaften der gespeicherten bzw. geladenen Daten zu modifizieren (siehe die drei Möglichkeiten bei den Tipps zu Zeichensätzen). Schließlich ergänzte Peter Hagemann den Reigen an zusätzlichen SCRSV-Fähigkeiten mit der Einführung der Sekundäradresse 5 für das Speichern von Bitmaps einschließlich ihrer Farben.

Nicht überschaubare POKE-Wüsten würden den Spaß an diesen neuen Fähigkeiten sicherlich verderben, daher setzte Peter Hagemann schließlich noch zwei neue TSB-Befehle oben drauf, die dem Programmierer die POKEerei abnehmen: eben SCRSV/SCRLD DEF und SCRSV/SCRLD RESTORE.

Und damit zu den Tipps:


Bilder in gängigen Grafikformaten laden und speichern

Mit SCRSV kann man nun Bilder in einigen der gängigen Dateiformate abspeichern. Dabei muss man wissen, dass SCRSV die Daten pageweise (in Blöcken zu je 256 Bytes) verarbeitet. Daher fällt leider das wichtigste C64-Bildformat heraus (Koala), denn dort werden nur die tatsächlich erforderlichen Daten gespeichert (die sich am 40×25 (gleich 1000) Kacheln großen Bildschirm orientieren).

Wichtig: Alle mit SCRSV/SCRLD DEF vorgenommenen Einstellungen müssen nach Ausführung des zugehörigen SCRSV/SCRLD mit dem Befehl SCRSV/SCRLD RESTORE wieder auf die Vorgabewerte zurückgestellt werden. Die SCR-Befehle können alle - anders als LOAD - mitten im laufenden Programm verwendet werde, ohne den Programmlauf damit zu beenden oder zu unterbrechen.


Hires-Formate Laden Speichern
TSB-Format SCRLD 1,dr,5,"name" SCRSV 1,dr,5,"name,p,w"
Bitmap (monochrom) SCRLD 1,dr,3,"name" SCRSV 1,dr,3,"name,p,w"
Zeichensätze nach MEM
(2048 Bytes lang, nach $E000)
SCRLD DEF $E0,8,0,3
SCRLD 1,dr,3,"name"
SCRSV DEF $E0,8,0,3
SCRSV 1,dr,3,"name,p,w"
Hi-Eddi (mit Farbe, 37 Blocks) SCRLD DEF $C0,4,1,2
SCRLD 1,dr,5,"name"
SCRSV DEF $C0,4,1,2
SCRSV 1,dr,5,"name,p,w"
Doodle Doodle laden
mit SCRLD nicht in einem
Durchgang möglich
SCRSV DEF $C0,4,1,2
SCRSV 1,dr,2,"name,p,w"
SCRSV DEF $E0,32,2,3
SCRSV 1,dr,3,"name,p,a"

Multicolor-Formate Laden Speichern
TSB-Format SCRLD 1,dr,5,"name"
(Hintergrundfarbe aus
dem Namen oder aus
der Datei auslesen)
SCRSV 1,dr,5,"name,p,w"
(Hintergrundfarbe im
Namen oder im Dateiraum
vermerken)
Bitmap (Multicolor) SCRLD 1,dr,3,"name" SCRSV 1,dr,3,"name,p,w"
Blazing Paddles
(auch Artist64)
Blazing Paddles laden
mit SCRLD nicht in einem
Durchgang möglich
SCRSV DEF $C0,4,1,2
SCRSV 1,dr,5,"name,p,w"
SCRSV DEF $D8,4,2,2
SCRSV 1,dr,2,"name,p,a"

Allgemein: zusammenhängende Daten Laden Speichern
eine Page
(256 Bytes, hier: ab $C000)
SCRLD DEF $C0,1,0,3
SCRLD 1,dr,3,"name"
SCRSV DEF $C0,1,0,3
SCRSV 1,dr,3,"name,p,w"
ein Basic-Programm
(hier: 3 KB lang)
SCRLD DEF $08,12,0,3
SCRLD 1,dr,3,"name"
SCRSV DEF $08,12,0,3
SCRSV 1,dr,3,"name,p,w"