SCRLD (TSB)
SCRLD (TSB) | |
Syntax: | SCRLD <fn>,<dr>,<sa>,<name> [+",<ft>,R"] |
Parameter | |
fn: Dateinummer | |
dr: Laufwerk | |
sa: Sekundäradresse (2, 3 oder 5) | |
name: Dateiname | |
ft: Dateityp (U, S, P) | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Ein- / Ausgabe |
Aufgabe: | lädt einen Textbildschirm oder eine Grafik |
Abkürzung: | keine |
Token: | $64 $6e (100 110) |
Verwandte Befehle | |
SCRSV - MERGE - LIN - LOAD - SAVE |
Dieser Artikel beschreibt das TSB-Schlüsselwort SCRLD (TSB).
Das entsprechende Simons'-Basic-Schlüsselwort lautet ebenfalls SCRLD.
Typ: Anweisung Syntax: SCRLD <fn>,<dr>,<sa>,<name> [+",<ft>,R"]
Beschreibung[Bearbeiten | Quelltext bearbeiten]
1. Alternative
Siehe den gleichlautenden Simons'-Basic-Befehl SCRLD, allerdings sollte dann die Sekundäradresse 0 oder 2 (oder eine beliebige gerade Zahl) sein. Diese Alternative lädt einen mit dem TSB-Befehl SCRSV gespeicherten Textbildschirm inklusive seiner Farben.
SCRSV von Simons' Basic erzeugt ein anderes Dateiformat als der TSB-Befehl. Ein so gespeicherter Bildschirm kann deshalb mit SCRLD (TSB) nicht erfolgreich geladen werden. Siehe dazu das Beispiel Simons' Basic Bildschirm in TSB.
2. Alternative
Der TSB-Befehl SCRLD ist zusätzlich in der Lage, ein Grafikbild zu laden. Dazu muss die Sekundäradresse ungerade sein. Es gibt zwei Versionen:
- Nur die Bitmap lädt man mit der Sekundäradresse <sa> "3". TSB lädt 8192 Bytes, d.h. den kompletten Grafikpuffer (unter TSB ab $E000), erwartet also eine 33 Blöcke große Datei. Siehe dazu das Beispiel Bitmap laden.
- Bitmap und Farben lädt man mit der Sekundäradresse <sa> "5". Zusätzlich zu den 8192 Bytes der Bitmap werden hierbei auch die Farbinformationen aus dem Farb-RAM und dem Video-RAM geladen, weshalb TSB hier eine 41 Blöcke große Datei erwartet. Siehe dazu das Beispiel Grafik mit Farben laden.
- Diese Option steht seit TSB 2.20220 zur Verfügung.
Beachten:
- Entgegen der TSB-Eigenschaft, bei Befehlen, die die Floppy-Laufwerke ansprechen, die Gerätenummer wegfallen lassen zu können, muss sie bei SCRLD (genau wie bei OPEN) ausdrücklich mit angegeben werden. Intern greift TSB jedoch immer auf die mit USE eingestellte Diskette zu. Ist deren Laufwerk nicht vorhanden, produziert dieser Zugriff einen Floppy-Error.
- Ein Bandlaufwerk wird mit USE 1 unterstützt, wenn man unmittelbar vor dem LOAD-Befehl in den Speicherstellen $B2 und $B3 den Zeiger $033C auf den Kassettenpuffer, den TSB intern für andere Zwecke verwendet, rekonstruiert. Ein Ladebefehl für ein Programm von Band würde also
USE 1: POKE $B2,$3C: POKE $B3,3: LOAD Return
lauten. - Der Befehl wird auch dann ausgeführt (allerdings nicht mit dem gewünschten Ergebnis), wenn die angegebene Datei auf der Diskette nicht gefunden wurde. Um dies anzuzeigen, muss man den Fehlerkanal auslesen. Siehe dazu die Beispiele.
Erweiterte Nutzung[Bearbeiten | Quelltext bearbeiten]
Die beiden zusätzlichen (ab TSB v2.200515 verfügbaren) Befehle
erweitertn die Möglichkeiten von SCRLD (TSB). Sie funktionieren durch Selbstmodifikation der SCRLD/SCRSV-Routine und machen damit die bisher nötigen POKEs überflüssig.
Mit SCRLD DEF kann man Modifikationen mit den folgenden Wirkungen erstellen:
- Die Anzahl der 256KB Blöcke für die Bitmap-Größe wird von 32 auf einen vorgegebenen Wert gesetzt
- Die Anzahl der 256KB Blöcke für Video-RAM bzw. Farb-RAM wird von 4 auf einen vorgegebenen Wert gesetzt
- Die Verarbeitung des Farb-RAMs wird unterdrückt
- Das High-Byte der Speicheranfangsadresse vom Video-RAM wird von $04 auf einen vorgegebenen Byte-Wert gesetzt
- Das High-Byte der Speicheranfangsadresse der Bitmap wird von $E0 auf einen vorgegebenen Byte-Wert gesetzt
Wie das im Einzelnen geht, ist bei der Beschreibung der Parameter in SCRSV-LD DEF erklärt.
Mit SCRLD RESTORE werden die Werte wieder zurückgesetzt.
Eine typische erweiterte Nutzung hat dann die folgende Form:
SCRLD DEF hi,bl,m,sa SCRLD 2,8,2,"dateiname" SCRSV RESTORE
- Es ist wie bisher möglich, eine Grafik zu laden, die mit SCRSV in zwei Dateien - einer mit der Bitmap, einer anderen mit den Farben - gespeichert wurde. Siehe dazu das Beispiel Grafik laden aus zwei Dateien.
- Ein Textbildschirm kann auch in den alternativen Bildschirmspeicher bei $CC00, der nach MEM aktiv ist, geladen werden:
SCRLD DEF $CC,4,0,2: SCRLD 2,8,2,"dateiname": SCRLD RESTORE
. - Wenn man in SCRLD DEF mit dem Modus 1 die Verarbeitung des Farbbereichs 1 (Farb-RAM) unterdrückt, kann man ein Bild im Format von Hi-Eddi+ laden. Siehe dazu das Beispiel Hi-Eddi+ Grafik in TSB laden.
- Mit Hilfe von SCRLD DEF ist es möglich, einen Speicherbereich von wählbarer Grö0e (in 256-Byte-Blöcken) - z.B. ein Zeichensatz - an einen beliebigen frei zugänglichen Speicherplatz zu laden. Ein 2K großer Zeichensatz wird an die Adresse $3000 geladen mit
SCRLD DEF $30,8,1,3: SCRLD 3,8,3,"zeichensatz": SCRLD RESTORE
.
Beispiele[Bearbeiten | Quelltext bearbeiten]
Textbildschirm laden[Bearbeiten | Quelltext bearbeiten]
100 PRINT CHR$(147) 110 SCRLD 2,8,2,"TRICOLOR-TSB.SRC,P,R" 120 FEHLER 130 IF FF>0 THEN PRINT FF;FB$:END 140 WAIT 198,1:END 150 PROC FEHLER 160 OPEN 1,8,15 170 INPUT#1,FF,FB$,SP,SE 180 CLOSE 1 190 END PROC
Lädt einen mit SCRSV (TSB) gespeicherten Textbildschirm. Eine Unterroutine zum Auslesen des Fehlerkanals ist eingefügt.
Bitmap laden[Bearbeiten | Quelltext bearbeiten]
100 HIRES 15,0 110 SCRLD 3,8,3,"BITMAP3,P,R" 120 FEHLER 130 IF FF>0 THEN NRM:PRINT FF;FB$:END 140 COLOUR 12,12: WAIT 198,1 145 COLOUR 11,12: NRM: END 150 PROC FEHLER 160 OPEN 1,8,15 170 INPUT#1,FF,FB$,SP,SE 180 CLOSE 1 190 END PROC
Grafik mit Farben laden[Bearbeiten | Quelltext bearbeiten]
100 HIRES 15,0 110 SCRLD 3,8,5,"HIRES5,P,R" 120 FEHLER 130 IF FF>0 THEN NRM:PRINT FF;FB$:END 140 COLOUR 12,12: WAIT 198,1 145 COLOUR 11,12: NRM: END 150 PROC FEHLER 160 OPEN 1,8,15 170 INPUT#1,FF,FB$,SP,SE 180 CLOSE 1 190 END PROC
Grafik laden aus zwei Dateien[Bearbeiten | Quelltext bearbeiten]
1550 PROC TSBLOAD 1560 CSET 2: MULTI ON 1565 SCRLD 1,I8,3,"IMAGE *" 1570 SCRLD DEF $C0,4,0,2 1575 SCRLD 1,I8,2,"IMAGETOOLS" 1580 SCRLD RESTORE 1585 COLOUR BG 1590 END PROC
Lädt eine mit SCRSV (TSB) gespeicherte Multicolor-Grafik samt Farben unter dem angegebenen Namen in zwei Dateien von Diskette. Die Variable BG enthält die Nummer der Hintergrundfarbe aus dem Dateinamen "IMAGE"+STR$(BG).
Hi-Eddi+ Grafik in TSB laden[Bearbeiten | Quelltext bearbeiten]
100 HIRES 15,0 110 SCRLD DEF $04,4,1,2: REM MODUS 1 = KEIN FARB-RAM 120 SCRLD 3,8,5,"HIRES5,P,R" 130 SCRLD RESTORE 135 POKE $FFFA,$18:POKE $FFFB,$81: REM NMI RESTORE 140 FEHLER 150 IF FF>0 THEN NRM:PRINT FF;FB$:END 160 COLOUR12,12:WAIT 198,1 170 COLOUR11,12:NRM:END 180 PROC FEHLER 190 OPEN 1,8,15 200 INPUT#1,FF,FB$,SP,SE 210 CLOSE 1 220 END PROC
Simons' Basic Bildschirm in TSB[Bearbeiten | Quelltext bearbeiten]
10 IF A=0 THEN A=1:LOAD "SCRLD-SB",8,1 20 PRINT CHR$(147) 30 OPEN 2,8,2,"TRICOLOR.SCR,S,R" 40 SYS $C000 50 WAIT 198,1 60 SCRSV 2,8,2,"TRICOLOR-TSB.SCR,P,W"
Lädt mit Hilfe der Maschinenspracheroutine "SCRLD-SB" einen mit Simons-Basic-SCRSV gespeicherten Textschirm und speichert ihn im TSB-Format.
ACME-Quellcode von SCRLD-SB:
;SCRLD-SB in TSB !ct pet !to "scrld-sb.prg", cbm *= $c000 ;OPEN 2,8,2,"filename,s,r" muss vorher ausgeführt sein ldx $b8 jsr $ffc6 ldx #00 loop jsr $ffcf sta $0400,x jsr $ffcf sta $d800,x jsr $ffcf sta $04fa,x jsr $ffcf sta $d8fa,x jsr $ffcf sta $05f4,x jsr $ffcf sta $d9f4,x jsr $ffcf sta $06ee,x jsr $ffcf sta $daee,x inx cpx #$fa bne loop jsr $ffcc lda $b8 jsr $ffc3 rts
$$ | %% | AT | CALL | CENTRE | CHECK | COLD | COLOUR | COPY | CLS | CSET | D! | D!PEEK | DIR | DISK | DISPLAY | DIV | DO | DO NULL | DRAW TO | DUMP | DUP | ELSE | ERROR | EXEC | FETCH | GRAPHICS | INSERT | INST | JOY | KEY | KEYGET | LIN | MEMCONT | MEMDEF | MEMLEN | MEMLOAD | MEMOR | MEMPEEK | MEMPOS | MEMREAD | MEMRESTORE | MEMSAVE | MERGE | MOB ON/OFF | MOD | MOVE | MULTI | NRM | ON ERROR | ON KEY | OUT | PAGE | PAINT | PAUSE | PLACE | RENUMBER | RESUME | RETRACE | SCRLD | SCRSV | SOUND | TEXT | TRACE | USE | WAVE