Appendix C: Detailed Console Keywords
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.
|
|
|
|