Commodore‎ > ‎BASIC‎ > ‎Keywords‎ > ‎

ASC

Keyword Abbreviation Token (hex) Version(s) Classification
ASC A{Shift+S} C6 1.0+ Function

  Syntax  
ASC string )
 
Parameters Type Legal Value(s) Default Value Note(s)
string String
any
In version 2.x and earlier, the string must not be empty.
 
Returns Type Value(s) Note(s)
code Integer
0 to 255
 
  Purpose  
Return the numerical code for a text character.

 
  Remarks  
The ASC function simply returns the code for the first character in the string.  In BASIC 2.x and earlier, using an empty string generates an ILLEGAL QUANTITY ERROR.  In later versions, an empty string will return the value zero.  This is important because BASIC will assign an empty-length string to a variable when using GET or GET# and the device returns a zero code.  For some devices this means no data available (which might be considered an error), but for binary data transfers, a zero code is quite normal and is definately not an error.  Examples show how to over-come this problem in old BASIC versions.  (The way I see it, it is not this function that needed to be fixed, but the GET/GET#.)
 
For a list of codes for the uppercase/graphics character set, see the ASCII-X page.  For a list of codes for the lowercase/uppercase character set, see the PETSCII page.  Actually the computer doesn't care which character set is used; but to the human viewing the characters, it can make a huge difference!  Also note those tables have some duplicates; for those characters, the ones marked "Primary" are used to determine the returned code.
 
The ASC function is especially usefull for working with codes that do not correspond to a printable character (a control code).  This allows you to test for RETURN or DELETE for example.  For normal characters, you could simply use a standard comparison: IF A$="Y" THEN...
 
You will get TYPE MISMATCH ERROR with a numeric expression or variable supplied as a "string".
  
Examples (uppercase/graphics character set):
PRINT ASC("2")
 50
 
READY.
PRINT ASC(2)

?TYPE MISMATCH ERROR
READY.
PRINT ASC("A")
 65

READY.
  
Examples (lowercase/uppercase character set):
print asc("2")
 50
 
ready.
print asc(2)

?type mismatch error
ready.
print asc("A")
 193

ready.
  
Examples with empty string (older BASIC versions):
A$="" : REM this might result from reading a device
 
READY.
PRINT ASC(A$)

?ILLEGAL QUANTITY ERROR
READY.
N$ = CHR$(0) : REM create a non-empty string

READY.
PRINT ASC(A$+N$)
 0

READY.
A$="@" : PRINT ASC(A$+N$) : REM try a different string value
 64

READY.
  
 
  Compare With  
 
  Contrast With  
 
  See Also  
=, GET 

© H2Obsession, 2014
Comments