The '''SCREEN''' function returns the [[ASCII]] code of a text character or the color attribute at a set text location on the screen.


{{PageSyntax}}
:: codeorcolor% = '''SCREEN (''row%'', ''column%''''' [, colorflag%]''')'''


{{PageParameters}}
* ''row'' and ''column'' are the [[INTEGER]] text coordinates of the [[SCREEN]] mode used.
* Optional ''colorflag'' [[INTEGER]] value can be omitted or 0 for [[ASCII]] code values or 1 for color attributes.



''Usage:''
* The ''code'' value returned is the [[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]] 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: '''{{text|FG &lt;nowiki>=&lt;/nowiki> SCREEN(1, 1, 1) AND 15|green}}'''
:: * The background color(0 to 7) is the returned SCREEN color value \ 16: '''{{text|BG &lt;nowiki>=&lt;/nowiki> SCREEN(1, 1, 1) \ 16|green}}'''
* '''QB64''' can return color values in screen modes other than [[SCREEN]] 0. QBasic returned the wrong color values in graphic screen modes!


''Example 1:'' Finding the text foreground and background colors in SCREEN 0 only:
{{CodeStart}} '' ''
{{Cl|SCREEN}} 0
{{Cl|COLOR}} 0, 15
{{Cl|CLS}}

{{Cl|PRINT}} "{{Cl|SCREEN}} ="; {{Cl|SCREEN (function)|SCREEN}}(1, 1, 1)
{{Cl|PRINT}} "FG color:"; {{Cl|SCREEN (function)|SCREEN}}(1, 1, 1) {{Cl|AND (boolean)|AND}} 15 'low nibble
{{Cl|PRINT}} "BG color:"; {{Cl|SCREEN (function)|SCREEN}}(1, 1, 1) \ 16 'high nibble '' ''
{{CodeEnd}}
{{TextStart}}'''SCREEN = 112'''
'''FG color: 0'''
'''BG color: 7'''
{{TextEnd}}
: ''Note:'' How the SCREEN 0 background color can only be changed to colors 0 through 7! 7 * 16 = 112.


''Example 2:'' Reading the [[ASCII]] code and color of a text character using the SCREEN function. Graphic colors were not reliable in QBasic!
{{CodeStart}} '' ''
{{Cl|SCREEN (statement)|SCREEN}} 12
row = 10: column = 10

{{Cl|COLOR}} 9: {{Cl|LOCATE}} row, column: {{Cl|PRINT}} "Hello"
code% = {{Cl|SCREEN (function)|SCREEN}}(row, column, 0)     ' character code return parameter 0
attrib% = {{Cl|SCREEN (function)|SCREEN}}(row, column, 1)   ' character color return parameter 1
{{Cl|COLOR}} 14: {{Cl|LOCATE}} 15, 10: {{Cl|PRINT}} "ASCII:"; code%, "COLOR:"; attrib%
{{Cl|END}} '' ''
{{CodeEnd}}
{{OutputStart}}
{{Text|         Hello|blue}}



{{Text|         ASCII: 72     COLOR: 9|yellow}}
{{OutputEnd}}
:''Explanation:'' The SCREEN function returns the [[ASCII]] code for "H" and the color 9.


''Example 3:'' Finding the current program path placed on the screen using [[FILES]] and the SCREEN function in SCREEN 0.
{{CodeStart}} '' ''
{{Cl|SCREEN}} 0, 0, 0, 0
{{Cl|CLS}}
{{Cl|PRINT}} "This is a directory test..."
{{Cl|SCREEN}} 0, 0, 1, 0
{{Cl|COLOR}} 0 'blank out the screen text
{{Cl|FILES}} "qb64.exe"        'the current program's filename can also be used
{{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} 80
  a$ = a$ + {{Cl|CHR$}}({{Cl|SCREEN (function)|SCREEN}}(1, i)) 'scan the black text on the screen
{{Cl|NEXT}}
{{Cl|CLS}}
{{Cl|COLOR}} 7
a$ = {{Cl|RTRIM$}}(a$)
{{Cl|SLEEP}}
{{Cl|SCREEN (statement)|SCREEN}} 0, 0, 0, 0
{{Cl|LOCATE}} 3, 1: {{Cl|PRINT}} "The current directory is: "; a$
{{Cl|END}} '' ''
{{CodeEnd}}
{{small|Code by Pete from the N54 QB site}}
:''Explanation:'' The SCREEN page one is used to hide the [[FILES]] display using COLOR 0. The [[SCREEN (function)|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:'' 
* [[PRINT]], [[SCREEN]]
* [[COLOR]], [[CHR$]], [[POINT]]
* [[CSRLIN]], [[POS]], [[ASCII]]
* [[Screen Memory]]


{{PageNavigation}}
