SCRSV-LD DEF (TSB)

Aus C64-Wiki
Zur Navigation springenZur Suche springen
SCRSV-LD DEF (TSB)
Syntax:
  • SCRSV DEF <hi>,<bl>,<m>,<sa>
  • SCRLD DEF <hi>,<bl>,<m>,<sa>
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:
  • sCdef
  • scRdef
Token: Für zwei Schlüsselwörter:
  • $64 $6d $96 (100 109 150) für SCRSV DEF
  • $64 $6e $96 (100 110 150) für SCRLD DEF
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 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

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.