SCRSV-LD DEF (TSB)
SCRSV-LD DEF (TSB) | |
Syntax: |
|
Parameter | |
hi: High-Byte der Speicheradresse | |
bl: Anzahl der zu übertragenden Blöcke | |
m: Modus (0,1 oder 2) | |
sa: Sekundäradresse (2, 3 oder 5) | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Ein- / Ausgabe |
Aufgabe: | Modifizierung von SCRSV und SCRLD |
Abkürzung: |
|
Token: | Für zwei Schlüsselwörter:
|
Verwandte Befehle | |
SCRSV RESTORE , SCRLD RESTORE, SCRSV, SCRLD |
Dieser Artikel beschreibt die TSB-Schlüsselwörter SCRSV DEF und SCRLD DEF, die zusammen mit SCRSV RESTORE oder SCRLD RESTORE eine erweiterte Nutzung von SCRSV und SCRLD möglich machen.
Es gibt keine entsprechenden Simons'-Basic-Schlüsselwörter.
Typ: Anweisung Syntax: SCRSV DEF <hi>,<bl>,<m>,<sa> SCRLD DEF <hi>,<bl>,<m>,<sa> oder SCRSVDEF <hi>,<bl>,<m>,<sa> SCRLDDEF <hi>,<bl>,<m>,<sa>
SCRSV DEF bzw. SCRLD DEF werden vor SCRSV bzw. SCRLD ausgeführt und definieren den Speicherbereich - Adresse und Größe - und den Modus für das Speichern bzw. Laden. Diese Befehle stehen mit der TSB-Version v2.20515 zur Verfügung.
Tatsächlich bewirken beide Befehle dasselbe, sind also austauschbar. Für die bessere Lesbarkeit des BASIC-Programms ist es aber sinnvoll, SCRSV DEF immer SCRSV und SCRLD DEF immer SCRLD zuzuordnen.
Parameter[Bearbeiten | Quelltext bearbeiten]
Hier verwendete Begriffe:
Farbbereich 1: Color-RAM (ab $D800, 1024 Bytes)
Farbbereich 2: Video-RAM (standardmäßig ab $0400, 1024 Bytes)
Die vier Parameter von SCRLD/SV DEF sind Byte-Werte und modifizieren den SCRLD-/SCRSV-Befehl. Sie haben die folgende Bedeutung:
- <hi>: Das High-Byte des Speicherbereichs (das Low-Byte ist immer $00). Ist dieser Wert 0, wird keine Modifizierung durchgeführt, egal wie die weiteren Parameter lauten.
- Ist <sa> = 2, wird das High-Byte des Farbbereichs 2 laut <hi> modifiziert (Normalwert: $04). Farbbereich 1 bleibt davon unberührt.
- Ist <sa> = 3 oder 5, wird das High-Byte des Bitmap-Speichers laut <hi> modifiziert (Normalwert: $E0).
- <bl>: Die Anzahl der 256 Bytes großen Datenblöcke (Pages), die verarbeitet werden sollen.
- Ist <sa> = 2, wird die Größe der Farbbereiche laut <bl> modifiziert (Normalwert: 4).
- Ist <sa> = 3 oder 5, wird die Größe des Bitmap-Speichers laut <bl> modifiziert (Normalwert: 32).
- <m>: Der Modus für die Verarbeitung.
- <m> = 0: Keine Änderung gegenüber der normalen Verarbeitung von SCRLD/SV. Bei <sa> = 2 oder 5 werden also beide Farbbereiche verarbeitet.
- <m> = 1: Nur der Farbspeicher 2 wird berücksichtigt, Farbspeicher 1 wird nicht verarbeitet.
- <m> = 2 oder größer: wie bei 1, aber zusätzlich wird keine Startadresse gespeichert. Dies braucht man beim Speichern in zwei getrennten SCRSV-Durchgängen, wenn die zweite Datei mit Append (",P,A") an die erste anhängt werden soll. Modus 2 hat bei SCRLD keine Auswirkungen (SCRLD geht immer davon aus, dass die Datei eine Startadresse aufweist).
- <sa>: Die Sekundäradresse beeinflusst die Art der Modifizierung. Sie muss zur Sekundäradresse des zugehörigen SCRLD/SV-Befehls passen.
- <sa> = 2: Das High-Byte des Farbbereichs 2 wird modifiziert. Beim zugehörigen SCRLD/SV muss <sa> = 2 (oder <sa> = 5) sein, damit die Modifikation eine Wirkung hat.
- <sa> = 3 oder 5: Das High-Byte des Bitmap-Speichers wird modifiziert. Die Sekundäradresse beim zugehörigen SCRLD/SV wird in der Regel <sa> = 3 sein. Für <sa> = 5 (zusätzliches Verwenden der Farbbereiche) gibt es kaum eine sinnvolle Anwendung.
- <sa> = 2 und <sa> = 3 in zwei getrennten SCRSV-LD DEF-Befehlen: Bitmap-Speicher und Farbbereich 2 werden modifiziert. Beim zugehörigen SCRLD/SV muss sa=5 sein.
Hinweise:
- Farbbereich 1 kann mit SCRSV-LD DEF nicht modifiziert werden. Das Farb-RAM kann aber durch Modifizierung von Farbbereich 2 erreicht werden, z.B. mit:
SCRSV DEF $d8,4,1,2
- Wegen des beschränken Speicherplatzes ist die Routine reduziert auf Funktionalität. Es gibt keine Abfragen auf sinnvolle Werte. Speziell bei den Parametern <hi> und <bl> muss der Benutzer selbst darauf achten, dass beim Laden keine wichtigen Speicherbereiche überschrieben werden.
Anwendung[Bearbeiten | Quelltext bearbeiten]
Man sollte sicherheitshalber nach jedem SCRSV/LD DEF und SCRSV/LD ein SCRSV/LD RESTORE durchführen und damit die modifizierten Werte wieder zurücksetzen, also z.B. folgende Formate benutzen:
SCRSV DEF <hi>,<bl>,<m>,<sa> | SCRLD DEF <hi>,<bl>,<m>,<sa> SCRSV 2,8,sa,"dateiname" | SCRLD 2,8,sa,"dateiname" SCRSV RESTORE | SCRLD RESTORE
Textschirm nach MEM speichern[Bearbeiten | Quelltext bearbeiten]
SCRSV DEF $CC,4,0,2 SCRSV 2,8,2,"TRI-CC.SRC,P,W" SCRSV RESTORE
Nach MEM liegt das Video-RAM bei $CC00 (<hi>=$CC) mit unveränderter Größe (<bl>=4). Es sollen Video-RAM und Farb-RAM gespeichert werden (<m>=0). Die Modifizierungen beziehen sich auf die Farbspeicher (<sa>=2).
Zeichensatz laden[Bearbeiten | Quelltext bearbeiten]
Der folgende Programmteil lädt den Zeichensatz "god.set" aus GoDot:
100 MEM 110 SCRLD DEF $E0,16,0,3 120 SCRLD 3,8,3,"GOD.SET" 130 SCRLD RESTORE
Der komplette Zeichensatz (Groß-/Klein- und Groß-Grafik-Schrift) wird nach $E000 (<hi>=$E0) geladen mit einer Größe von 4KB (<bl>=16). Er soll wie eine Bitmap (<sa>=3) geladen werden. Der Modus spielt hier keine Rolle und kann deshalb <m>=0 bleiben.
Grafik speichern im Format Hi-Eddi[Bearbeiten | Quelltext bearbeiten]
SCRSV DEF $C0,4,1,2 SCRSV 2,8,5,"hires.hed,P,W" SCRSV RESTORE
Das Video-RAM bei TSB-Grafik liegt bei $C000 (<hi>=$C0) und ist 1KB = 4*256 Bytes groß (<bl>=4). Es soll nur das Video-RAM gespeichert werden (<m>=1). Die Modifizierung bezieht sich auf die Farbspeicher (<sa>=2). SCRSV mit sa=5 speichert die Bitmap (default: 8192 Bytes ab $E000) und den Farbspeicher, der durch die SCRSV DEF-Parameter nur aus dem Video-RAM bei $C000 besteht. Es entsteht eine 37KB große Hires-Datei im Hi-Eddi-Format.
Das Laden dieser Grafik geht ganz entsprechend mit SCRLD statt SCRSV, aber ohne das ",P,W" hinter dem Dateinamen.
Grafik speichern im Format Doodle[Bearbeiten | Quelltext bearbeiten]
Doodle speichert das Video-RAM vor die Bitmap.
120 SCRSV DEF $C0,4,1,2 130 SCRSV 2,8,2,"CIRCLES.DD,P,W" 140 SCRSV RESTORE ... 180 SCRSV DEF $E0,32,2,3 190 SCRSV 3,8,3,"CIRCLES.DD,P,A" 200 SCRSV RESTORE
Zeile 120: Video-RAM bei $C000 (<hi>=$C0) in normaler Größe (<bl>=4). Nur das Video-RAM soll gespeichert werden, das Farb-RAM nicht (<m>=1). Die Modifizierungen beziehen sich auf die Farbspeicher (<sa>=2).
Zeile 180: Bitmap $E000 (<hi>=$E0) in normaler Größe (<bl>=32). Die Bitmap soll an die Datei angehängt werden (<m>=2). Die Modifizierungen beziehen sich auf die Bitmap (<sa>=3).
Leider kann dieses Format nicht mit SCRLD geladen werden, da hierbei immer die Daten der Bitmap als erste erwartet werden.
Anders ist das, wenn das Doodle-Format in zwei getrennte Dateien gespeichert wird, also in obigem Beispiel die Zeilen 180 und 190 wie folgt ändern:
180 SCRSV DEF $E0,32,0,3 190 SCRSV 3,8,3,"CIRCLES-BMP.DD,P,W"
Dann lassen sich die zwei Dateien mit SCRLD und den gleichen Parametern wie beim Speichern auch laden.