Rapid-Q Documentation by William Yu (c)1999-2000 Appendix C: Detailed Console Keywords


Detailed Console Keywords

Most of these have the same functionality as QBasic, so you could just as easily look them up there. Again, when I refer to Unix, I mean Linux & Unix. The following keywords are all encapsulated in the CONSOLE object, so Console.PRINT is the same as PRINT.

CLS CONSOLE Statement Windows/Unix

Clears console screen of all text, and fills the console with the currect background color. CLS also returns the cursor to the home position in the top left corner of the screen.

Syntax: CLS
CLS

Details:
Under Windows, CLS is a CONSOLE statement, under Linux/Unix, CLS is implemented as a system call to clear, so you can safely call CLS without compiling as CONSOLE under Linux/Unix.


COLOR CONSOLE Statement Windows/Unix

Sets the current display colors for the console screen.
  • Foreground is the text color (range = 0-31)
  • Background is the screen color (range = 0-7)
0 = black  4 = red       8 = grey        12 = light red
1 = blue   5 = magenta   9 = light blue  13 = light magenta
2 = green  6 = brown    10 = light green 14 = yellow
3 = cyan   7 = white    11 = light cyan  15 = bright white


Syntax: COLOR [foreground][,background]
COLOR 15
COLOR 10, 3
COLOR ,1
COLOR


CONSOLE.INPUTHANDLE CONSOLE Statement Windows

Returns the console input handle for use in API calls.

Syntax: CONSOLE.INPUTHANDLE
hnd = CONSOLE.INPUTHANDLE


CONSOLE.OUTPUTHANDLE CONSOLE Statement Windows

Returns the console output handle for use in API calls.

Syntax: CONSOLE.OUTPUTHANDLE
hnd = CONSOLE.OUTPUTHANDLE


CSRLIN CONSOLE Function Windows/Unix

Returns the current line (row) position of the cursor.

Syntax: CSRLIN
Row% = CSRLIN


GET$ CONSOLE Function Windows/Unix

This function is mainly used in CGI programs, but can be used as a general purpose read function. It will read the STDIN.

Syntax: GET$(numeric-expression)
A$ = GET$(10)


Details:
GET$ under Linux/Unix is not a console function. To use GET$, compile your application as CONSOLE or CGI under Windows.


INKEY$ CONSOLE Function Windows/Unix

Returns a one- or two-byte string containing a character read from standard input (console). An empty string is returned if no character is waiting there.

Syntax: INKEY$
A$ = INKEY$


Details:
Extended keys start with CHR$(27) and are 2 bytes in length. Extended keys are arrow keys, page up/down, home, end, insert, delete, and F1-F12 keys. You can also trap the shift, ctrl, alt, caps/num/scroll lock keys under Windows.


INPUT CONSOLE Statement Windows/Unix

Reads a whole line of input from the. This statement causes the program to pause and wait for data until a carriage return is pressed.

Syntax: INPUT ["Prompt string"{;|,}] variable
INPUT A$
INPUT "Enter name: "; A$


Details:
INPUT for Rapid-Q is not exactly compatible with QBasic's INPUT. It is more like LINE INPUT. The return variable can be a string or numeric variable. Under Windows, INPUT is implemented as a CONSOLE function. Under Linux/Unix INPUT is not considered a CONSOLE function so there's no need to compile as CONSOLE.


LOCATE CONSOLE Statement Windows/Unix

Moves cursor to specified position.

Syntax: LOCATE [row][,column][,cursor]
LOCATE 10, 1
LOCATE ,10
LOCATE 5
LOCATE 1,,80

Details:
Under Windows you can assume that Row 25 is the last row and Column 80 as the last column. Under Linux/Unix this is dependent on your terminal, but you can use the internal variables Screen.ConsoleX and Screen.ConsoleY to determine the max column and row respectively. The first row and first column always starts at (1,1). The cursor argument is optional, and can take a range of values from 0 to 100 indicating the percentage of the character cell that is filled by the cursor. ie. specifying a value of 0 completely hides the cursor. The default cursor value is 1.


PCOPY CONSOLE Statement Windows

Copies one screen page to another.

Syntax: PCOPY sourcepage, destinationpage
PCOPY 0, 1
PCOPY 1, 5


Details:
The visible (on-screen) page is always 0. There are 7 off-screen pages (1 to 7). You can copy from any page onto any other page.


PEEK CONSOLE Function Windows

Returns the current character/attribute pair stored at a specified location on the console screen.

Syntax: PEEK([#pagenum,] address)
A% = PEEK(2000) '-- Peek location 2000 on current page
A% = PEEK(1, 2000) '-- Peek location 2000 on page 1


Details:
To understand how to compute the address, use this handy function:
   Char$ = CHR$(PEEK((Row%-1)*160+(Col%-1)*2))
   Attr = PEEK((Row%-1)*160+(Col%-1)*2+1)
As you may notice, all the even memory addresses contain the character, and all the odd numbered addresses contain the attribute. The attribute contains information about the foreground and background color.
   ForeGround% = Attr AND &HF
   BackGround% = Attr SHR 4
Why all the trouble? This is implemented for compatibility with QBasic. The only difference is that you don't use DEF SEG under Rapid-Q, and PEEK only works at the console level.


POKE CONSOLE Statement Windows

Writes a byte to the console page.

Syntax: POKE [#pagenum,] address, byte
POKE 2000, ASC("A") '-- Pokes an "A" character at location 2000
POKE 2001, 95 '-- Pokes attribute 95 to location 2000
POKE 1, 2001, 95 '-- Same as above but pokes to page 1


Details:
To understand how to compute the address, use this handy function:
   ChAddress = (Row%-1)*160+(Col%-1)*2
   AttrAddress = (Row%-1)*160+(Col%-1)*2+1
As you may notice, all the even memory addresses contain the character, and all the odd numbered addresses contain the attribute. The attribute contains information about the foreground and background color. To calculate the attribute, try this:
   Attr = (BackGround% SHL 4) OR ForeGround%
Why all the trouble? This is implemented for compatibility with QBasic. The only difference is that you don't use DEF SEG under Rapid-Q, and POKE only works at the console level.


POS CONSOLE Function Windows/Unix

Returns the current horizontal (column) position of the cursor.

Syntax: POS(0)
Column% = POS(0)


Details:
Please note that I did not make this function up (ie. its weird syntax), it's implemented for compatibility with QBasic.


PRINT CONSOLE Statement Windows/Unix

PRINT outputs data to the screen (or standard output).

Syntax: PRINT [#pagenum,][expressions][{;|,}]
PRINT "Number: "; 45
PRINT A$
PRINT #1, "This prints to screen page 1"


Details:
Expressions can be any string, number, or function. You can optionally use ; or , to print out more expressions. Under QBasic, PRINT can format your data if you use the comma, however, under Rapid-Q the comma and semi-colon have the same effect. Again, under Windows, PRINT is implemented as a CONSOLE function. Under Linux/Unix you do not need to compile as CONSOLE.


SCREEN CONSOLE Function Windows

Returns the ASCII character or attribute at (row, col) on the current console screen.

Syntax: SCREEN(row, col [, colorflag])
A% = SCREEN(1, 1) '-- Get character located on the first row and column
A% = SCREEN(5, 3, 1) '-- Get attribute of character located at (5,3)


Details:
The SCREEN function is very similar to the PEEK function, except that it's much easier to use. If you supply the function with a colorflag parameter, the function returns the attribute (ie. color), otherwise it returns the ASCII character. The SCREEN function only works on the current console screen and not on any hidden pages.


SETCONSOLETITLE CONSOLE Statement Windows

SetConsoleTitle is implemented as a WinAPI call to SetConsoleTitle but is called as a statement rather than a function (ie. no return value). If you would like a return value, you'll have to call the API function directly.

Syntax: SETCONSOLETITLE string-expression
SETCONSOLETITLE "Hello World!"


SLEEP CONSOLE Statement Windows/Unix

Suspends execution of the application for a specified amount of time.

Syntax: SLEEP seconds
SLEEP .5 '-- Delay for half a second


Details:
SLEEP requires a parameter, unlike QBasic. SLEEP waits until the number of seconds specified has elasped. You cannot break out of it by pressing a key (unlike QBasic). Under Windows, SLEEP is implemented as a console function. Under Linux/Unix, you do not need to compile as CONSOLE.




Prev Chapter Contents Next Chapter