HSAVE (SBX)
|
Dieser Artikel beschreibt das Simons'-Basic-Extension-Schlüsselwort HSAVE.
HSAVE speichert den hochauflösenden Grafikschirm auf Diskette oder Kassette. Das Dateiformat besteht aus einer 8000 Bytes großen Bitmap ab $E000 plus einem 2×1000 Bytes langen Farbteil, der byteweise abwechselnd das Video-RAM ab $C000 und das Farb-RAM ab $D800 aufsteigend in einem 250-Byte-Abstand enthält. Auf Diskette belegt der Grafikschirm damit 40 Blöcke. Eine Startadresse wird nicht mit gespeichert.
Der Befehl benötigt die gleichen Parameter, die auch der BASIC-Befehl OPEN verwendet:
- eine logische Dateinummer <fn>, (1 bis 255)
- eine Laufwerksangabe <dr>, 1 (Datasette) bzw. 8 bis 11 (Diskettenlaufwerke)
- eine Sekundäradresse <sa>, wobei diese Zahl vom angeschlossenen Gerät abhängt; bei Floppys sind Werte von 2 bis 14 zulässig, eine Datasette benötigt hier 1 oder 2
- ein Dateiname <name>, mit einer Maximallänge von 16 Zeichen
- eine Angabe über den gewünschten Dateityp <ft> der Datei, "S" = SEQ, "U" = USR und "P" = PRG; da keine Startadresse gespeichert wird, ist hier der Wert "S" sinnvoll.
- die letzte Angabe muss "W" (für "Write") lauten, sonst wird nicht gespeichert
Fehlermeldungen sind die gleichen, die SAVE bzw. OPEN verursachen würden.
- Es ist nicht möglich, nur eine Bitmap oder nur eine Hires-Grafik mit Farbe aus dem Video-RAM (ohne das Farb-RAM) zu sichern.
- Hintergrundfarbe und Rahmenfarbe werden nicht gespeichert. Da die Hintergrundfarbe bei Multicolour-Bildern wichtig sein kann, sollte sie in diesem Fall als Teil des Dateinamens mit gespeichert werden. Siehe dazu das Multicolour-Beispiel.
Beispiele[Bearbeiten | Quelltext bearbeiten]
Die folgenden Beispiele basierten auf dem im Simons' Basic Extension Handbuch angegebenen Programm.
Hires-Grafik
10 HIRES 15,0 20 FOR R=10 TO 90 STEP 5 30 CIRCLE 160,100,R,100-R,1 40 NEXT 50 WAIT 198,1 60 NRM:PRINT"SAVING ..."; 70 HSAVE 2,8,2,"CIRCLES.PIC,S,W"
Multicolor-Grafik (mit Fehlerabfrage)
100 COLOUR 6,0 110 HIRES 15,0: MULTI 2,6,7 120 FOR R=10 TO 50 STEP 5 130 CIRCLE 80,50,R,50-R,1 140 CIRCLE 80,100,R,50-R,2 150 CIRCLE 80,150,R,50-R,3 160 NEXT 170 COLOUR 14,0:WAIT 198,1:COLOUR 6,0 180 HSAVE 2,8,2,"3CIRCLES 0,S,W" 190 COLOUR 6,15:NRM 200 PRINT CHR$(147)CHR$(144):REM BLACK 210 EXEC FEHLER 220 IF FF>0 THEN PRINT FF;FB$ 230 END 240 PROC FEHLER 250 OPEN 1,8,15 260 INPUT#1,FF,FB$,SP,SE 270 CLOSE 1 280 END PROC
* | ADD ALL | ADD ARR | ALTER | BACK | BARRIER | BCKFLASH | BEEP | BIN$ | CALCX | CALCY | CCOL | CHAIN | CHANGE | CLEAR | CONTINUE | COPY ARR | CREATE | DEEK | DEG | DELETE | DIV ALL | DIV ARR | DOKE | DRAW TO | DS$ | ECOL | ELEMENTS | EVAL | FILTER | FIND | FONT | FORCE | GRAD | GRID | HELP | HEX$ | HIMEM | HLIN | HLOAD | HSAVE | INFO | INIT | INPUT ARR | INVERT | LABEL | LOMEM | LOW RES | MAX | MCOL | MIN | MODE | MUL ALL | MUL ARR | NORMAL | ON DETECT | PREPARE | PRINT ARR | PROTECT | PULL | PULSE | PUSH | READ ARR | RENUMBER | REVERSE | ROTATE | SCALE | SCHR | SCOL | SCRATCH | SCREEN | SCX | SCY | SET ARR | SHOW | SORT | SPRITE | SPR LOC | SPRX | SPRY | START | SUB ALL | SUB ARR | SUM | TICK | TRANSFER | UPPER | VLIN | XVEC | YVEC | ZER ARR |