SCREEN (function)
From QB64 Wiki
The SCREEN function returns the ASCII code of a text character or the color attribute at a set text location on the screen.
- codeorcolor% = SCREEN (row%, column% [, colorflag%])
- row and column are the INTEGER text coordinates of the SCREEN mode used.
- Optional colorflag INTEGER value can be zero for ASCII code values or 1 for colors.
Usage:
- The code value returned is the ASCII code from 0 to 255. Returns 32(space) when no character is found at a coordinate.
- If the colorflag value is omitted or it is 0, the function returns the ASCII code of the text character at the position designated.
- When the flag value is greater than 0, the function returns the foreground color attribute of the text character position.
- QB64 can return color values in screen modes other than SCREEN 0. Qbasic returned the wrong color values in graphic screen modes!
Example 1: Reading the ASCII code and color of a text character using the SCREEN function. Graphic screen colors were not reliable in Qbasic!
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
Hello ASCII: 72 COLOR: 9
- Explanation: The SCREEN function returns the ASCII code for "H" and the color 9.
Example 2: SCREEN 0 will return the values for both foreground and background colors. The combined color attribute value is returned.
SCREEN 0 row = 10: column = 10 COLOR 9, 10: LOCATE row, column: PRINT "Hello" 'use the background color of bright green code% = SCREEN(row, column, 0) ' character code return parameter 0 attrib% = SCREEN(row, column, 1) ' character color return parameter 1 COLOR 14, 0: LOCATE 15, 10: PRINT "ASCII:"; code%, "COLOR:"; attrib% fg% = (attrib% AND &HF) 'get the lower nibble bg% = (attrib% AND &HF0) / 16 'get the upper nibble IF bg% > 7 THEN 'MSB set in the bg% nibble indicates blinking fg% fg% = fg% + 16 bg% = bg% - 8 END IF LOCATE 20, 10:PRINT "FG:"; fg%, "BG:"; bg%
Hello ASCII: 72 COLOR: 41 FG: 9 BG: 2
- Note: SCREEN 0 background colors are limited to colors 0 to 7 so COLOR 10 is converted to attribute 2 (8 less than the high intensity background color value of 10).
Example 3: Finding the current program path placed on the screen using FILES and the SCREEN function in SCREEN 0.
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 display using COLOR 0. The SCREEN 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: