1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-16 22:25:14 +00:00
qb64/internal/help/SCREEN-(function).md

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)