Commodore‎ > ‎BASIC‎ > ‎Keywords‎ > ‎


Keyword Abbreviation Token (hex) Version(s) Classification
WINDOW W{Shift+I} FE 1A 7.0 Command and Statement

WINDOW left , top , right , bottom
Parameters Type Legal Value(s) Default Value Note(s)
left Unsigned Byte 0 ~ width -1 width is 40 for VIC-II or 80 for VDC; whichever is the active text editor
top Unsigned Byte 0 ~ 24  
right Unsigned Byte left ~ width -1 width is 40 for VIC-II or 80 for VDC; whichever is the active text editor
bottom Unsigned Byte top ~ 24  
Editor state management.  Define a text window.

WINDOW allows an easy to way to set-up a text window in BASIC.  Although WINDOW is only valid v7.0, text windows are available on older CBM machines, like the TED series and the CBM-II series.  On those machines, setting up a window is a bit more work in BASIC.  The general method for them is to position the cursor at the top-left corner and PRINT an ESC T and then position the cursor at the bottom-right corner and PRINT an ESC B (see Escape Codes).
All parameters are physical (0-based) screen ordinates (not relative to any current window).  If any parameter is omitted or is an invalid expression, or if any extra parameter(s) are given, then SYNTAX ERROR occurs.  If any parameter is not numeric, TYPE MISMATCH ERROR occurs; you may manually convert a string with VAL.  Any floating-point parameter is automatically converted with INT.  If the result is not a Legal Value (see table above), ILLEGAL QUANTITY ERROR occurs.  In particular, the right and bottom parameters must not be less than the left and top parameters, respectively.
An important thing to note when setting up a new window (using WINDOW or escape codes) is that all line-links are destroyed.  This is mostly relevant in direct mode.  It means that any lines that extend beyond one physical line (a so-called logical line) will be interpretted as two seperate lines after the new window is set-up.  So if you try to edit an existing program line, half of it will be cut-off (assuming it originally spanned multiple lines).  The screen line-links are maintained by the KERNAL / Editor so you can't blame BASIC for this!
Although you can use WINDOW to define the full-screen as the active window, it is much simpler to PRINT HOME HOME [or more verbosely, PRINT CHR$(19) CHR$(19)].
Some interesting (perhaps helpful) mathematical relations:
  (new) width = right - left + 1
  (new) height = bottom - top + 1
  right = (desired) width + left - 1
  bottom = (desired) height top - 1
BASIC v7.0 provides RWINDOW to determine some properties of the active window; mainly the not-so-useful values of width-1 and height-1.  So in any version of BASIC, if you need to read the current settings of left, top, right, or bottom, then you will have to PEEK at secret variable(s).
WINDOW 0,0,19,9 : REM 20 column X 10 line window at top-left of screen

WINDOW 10,5,29,14 : REM 20 column X 10 line window centered on 40-column screen

WINDOW 0,0,39,24 : REM full-screen (40-columns)

WINDOW 0,0,79,24 : REM full-screen (80-columns)

?ILLEGAL QUANTITY ERROR            example executed in 40-column mode
  Compare With  
  Contrast With  
  See Also  

© H2Obsession, 2014