mirror of
https://github.com/QB64Official/qb64.git
synced 2024-09-28 11:17:47 +00:00
104 lines
3.2 KiB
Markdown
104 lines
3.2 KiB
Markdown
|
The **SCREEN** function returns the [ASCII](ASCII) code of a text character or the color attribute at a set text location on the screen.
|
||
|
|
||
|
## Syntax
|
||
|
|
||
|
> codeorcolor% = **SCREEN (*row%*, *column%*** [, colorflag%]**)**
|
||
|
|
||
|
## Parameter(s)
|
||
|
|
||
|
* *row* and *column* are the [INTEGER](INTEGER) text coordinates of the [SCREEN](SCREEN) mode used.
|
||
|
* Optional *colorflag* [INTEGER](INTEGER) value can be omitted or 0 for [ASCII](ASCII) code values or 1 for color attributes.
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
* The *code* value returned is the [ASCII](ASCII) code from 0 to 255. Returns 32([SPACE$](SPACE$)) when no character is found at a coordinate.
|
||
|
* If the *colorflag* value is omitted or it is 0, the function returns the [ASCII](ASCII) code of the text character at the position designated.
|
||
|
* When the *flag* value is greater than 0 in **SCREEN 0**, the function returns the foreground and background color attribute of text position.
|
||
|
* The foreground color(0 to 15) is the returned SCREEN color value AND 15: **FG = SCREEN(1, 1, 1) AND 15**
|
||
|
* The background color(0 to 7) is the returned SCREEN color value \ 16: **BG = SCREEN(1, 1, 1) \ 16**
|
||
|
* **QB64** can return color values in screen modes other than [SCREEN](SCREEN) 0. QBasic returned the wrong color values in graphic screen modes!
|
||
|
|
||
|
## Example(s)
|
||
|
|
||
|
Finding the text foreground and background colors in SCREEN 0 only:
|
||
|
|
||
|
```vb
|
||
|
|
||
|
SCREEN 0
|
||
|
COLOR 0, 15
|
||
|
CLS
|
||
|
|
||
|
PRINT "SCREEN ="; SCREEN(1, 1, 1)
|
||
|
PRINT "FG color:"; SCREEN(1, 1, 1) AND 15 'low nibble
|
||
|
PRINT "BG color:"; SCREEN(1, 1, 1) \ 16 'high nibble
|
||
|
|
||
|
```
|
||
|
|
||
|
```text
|
||
|
|
||
|
**SCREEN = 112**
|
||
|
**FG color: 0**
|
||
|
**BG color: 7**
|
||
|
|
||
|
```
|
||
|
|
||
|
> *Note:* How the SCREEN 0 background color can only be changed to colors 0 through 7! 7 * 16 = 112.
|
||
|
|
||
|
Reading the [ASCII](ASCII) code and color of a text character using the SCREEN function. Graphic colors were not reliable in QBasic!
|
||
|
|
||
|
```vb
|
||
|
|
||
|
SCREEN 12
|
||
|
row = 10: column = 10
|
||
|
|
||
|
COLOR 9: LOCATE row, column: PRINT "Hello"
|
||
|
code% = SCREEN(row, column, 0) ' character code return parameter 0
|
||
|
attrib% = SCREEN(row, column, 1) ' character color return parameter 1
|
||
|
COLOR 14: LOCATE 15, 10: PRINT "ASCII:"; code%, "COLOR:"; attrib%
|
||
|
END
|
||
|
|
||
|
```
|
||
|
|
||
|
```text
|
||
|
|
||
|
Hello
|
||
|
|
||
|
ASCII: 72 COLOR: 9
|
||
|
|
||
|
```
|
||
|
|
||
|
> *Explanation:* The SCREEN function returns the [ASCII](ASCII) code for "H" and the color 9.
|
||
|
|
||
|
Finding the current program path placed on the screen using [FILES](FILES) and the SCREEN function in SCREEN 0.
|
||
|
|
||
|
```vb
|
||
|
|
||
|
SCREEN 0, 0, 0, 0
|
||
|
CLS
|
||
|
PRINT "This is a directory test..."
|
||
|
SCREEN 0, 0, 1, 0
|
||
|
COLOR 0 'blank out the screen text
|
||
|
FILES "qb64.exe" 'the current program's filename can also be used
|
||
|
FOR i = 1 TO 80
|
||
|
a$ = a$ + CHR$(SCREEN(1, i)) 'scan the black text on the screen
|
||
|
NEXT
|
||
|
CLS
|
||
|
COLOR 7
|
||
|
a$ = RTRIM$(a$)
|
||
|
SLEEP
|
||
|
SCREEN 0, 0, 0, 0
|
||
|
LOCATE 3, 1: PRINT "The current directory is: "; a$
|
||
|
END
|
||
|
|
||
|
```
|
||
|
|
||
|
|
||
|
> *Explanation:* The SCREEN page one is used to hide the [FILES](FILES) display using COLOR 0. The [SCREEN (function)](SCREEN-(function)) function reads the top of the screen page text and creates the current path string. It is then printed on the visual page.
|
||
|
|
||
|
## See Also
|
||
|
|
||
|
* [PRINT](PRINT), [SCREEN](SCREEN)
|
||
|
* [COLOR](COLOR), [CHR$](CHR$), [POINT](POINT)
|
||
|
* [CSRLIN](CSRLIN), [POS](POS), [ASCII](ASCII)
|
||
|
* [Screen Memory](Screen-Memory)
|