WINDOW

Aus C64-Wiki
Zur Navigation springenZur Suche springen
WINDOW
Syntax: WINDOW <linker Rand>, <oberer Rand>, <rechter Rand>, <unterer Rand>, [<löschen>]
Parameter
<linker Rand>: numerischer Ausdruck im Wertebereich von 0 bis Bildschirmbreite - 1
<oberer Rand>: numerischer Ausdruck im Wertebereich von 0 bis 24
<rechter Rand>: numerischer Ausdruck im Wertebereich von 0 bis Bildschirmbreite - 1
<unterer Rand>: numerischer Ausdruck im Wertebereich von 0 bis 24
<löschen>: numerischer Ausdruck im Wertebereich von 0 bis 1
Einordnung
Typ: Anweisung
Kontext: Ein/Ausgabe
Aufgabe: Bildschirmbereich für die Ausgabe im Textmodus festlegen
Abkürzung: wI
Token: $fe $1a (254 26)
Verwandte Befehle
RWINDOW

Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl WINDOW ab Commodore BASIC V7.0 oder höher.

Die Anweisung WINDOW legt einen Bildschirmbereich (ein Fenster) für die Ausgabe im Textmodus fest und löscht ihn bei Bedarf.

Die Parameter sind:

  • <linker Rand>: erlaubte Werte von 0 bis Bildschirmbreite - 1
  • <oberer Rand>: erlaubte Werte von 0 bis 24
  • <rechter Rand>: erlaubte Werte von 0 bis Bildschirmbreite - 1
  • <unterer Rand>: erlaubte Werte von 0 bis 24
  • <löschen>: Dieser Parameter ist optional; erlaubte Werte sind 0 (Bereich nicht löschen) und 1 (Bereich löschen)

Liegen die Parameter außerhalb der erlaubten Bereiche oder ist der rechte Rand kleiner als der linke bzw. der untere Rand kleiner als der obere, so wird ein ?ILLEGAL QUANTITY ERROR ausgegeben.

Die Bildschirmbreite (entweder 40 oder 80 Zeichen) sowie die aktuelle Breite und Höhe des Ausgabefensters kann mit der RWINDOW-Funktion ermittelt werden, nicht aber die genaue Position des Fensters.

Alternativ kann das Ausgabefenster auch durch Steuercodes festgelegt werden:

  • {ESC} + T: linke, obere Ecke festlegen
  • {ESC} + B: rechte, untere Ecke festlegen
  • {HOME} + {HOME}: Standardausgabebereich (=gesamter Bildschirm) wieder herstellen und Cursor in die obere, linke Ecke positionieren

Beispiele[Bearbeiten | Quelltext bearbeiten]

Einfach[Bearbeiten | Quelltext bearbeiten]

10 WINDOW 5, 6, RWINDOW(2) - 5, 20, 1
20 PRINT "TEXT IM FENSTER";CHR$(19);CHR$(19)

Bei diesem Beispiel wird zuerst ein Ausgabefenster definiert, das an der 6. Spalte in der 7. Zeile beginnt und 4 Spalten vom rechten Bildschirmrand entfernt in der 21. Zeile endet. Zusätzlich wird der Inhalt des Fensters gelöscht. In der darauffolgenden Zeile wird der Text TEXT IM FENSTER ausgegeben und anschließend der Fensterbereich aufgehoben und der Cursor in die obere, linke Ecke positioniert.

Window-Demo für 40 und 80 Zeichen[Bearbeiten | Quelltext bearbeiten]

10 REM WINDOW DEMO
20 SCNCLR 0:SCNCLR 5
30 PRINT"40 ZEICHEN (1) ODER 80 ZEICHEN(2)!"
40 GETKEY A$:IF INSTR("12",A$)=0 THEN40
50 IF A$="1" THEN M=1:ELSE M=2
60 GRAPHIC 5
70 IF M=1 THEN SLOW:GRAPHIC 0:ELSE:FAST:GRAPHIC 5
80 COLOR 0,1:COLOR 1,5:COLOR 4,1
90 SCNCLR
100 PRINT""TAB(9*M)"W I N D O W EXAMPLE"
120 SPACE$="                              "
140 :X1=1:Y1=4:X2=37:Y2=22:REM WINDOW-KOORDINATEN
150 :CHAR,X1*M-1,Y1-1,CHR$(111)
160 :FOR ZZ=X1*M TO X2*M
170 ::PRINT CHR$(183);
180 :NEXT ZZ
190 :PRINT CHR$(112)
200 :FOR ZZ=Y1 TO Y2
210 ::PRINT TAB(X1*M-1)CHR$(180)TAB(X2*M+1)CHR$(167)
220 :NEXT ZZ
230 PRINT TAB(X1*M-1)CHR$(108);
240 :FOR ZZ=X1*M TO X2*M
250 ::PRINT CHR$(175);
260 :NEXT ZZ
270 ::PRINT CHR$(186);
280 :WINDOWX1*M,Y1,X2*M,Y2,1
290 :PRINTCHR$(27)+"@"
300 :PRINT"HIER BIST DU IM FENSTER";CHR$(19);CHR$(19)
310 GRAPHIC CLR