Strings are used to contain text. You can define a plain strings or escape code strings like this:
// Plain strings
.var message = "Hello World"
.text message // Gives .text "Hello world"
.const file="c:\newstuff"
// String with escape codes ('\esc') start with @
.print @"First line.\nSecond line." // Using newline
.print @“He said: \"Hello World\"" // Using " inside the string
.text @"This text will loop now\$ff" // placing hex values ($ff) in the text
@ in front of a string means you can use escape characters. Notice how '\n' in "c:\newstuff" is not a newline while '\n' in @"First line.\nSecond line." is. (Note: This is the opposite of C# and is this way to avoid breaking file references in old sources).
The supported escape codes are:
Table 4.2. Escape codes
| Code | Example | Description |
|---|---|---|
| \b | @"\b" | Backspace |
| \f | @"\f" | Form feed |
| \n | @"Line1\nLine2" | Newline |
| \r | @"\r" | Carriage return |
| \t | .print @"Hello\tWorld" | Tab |
| \\ | @"c:\\tmp\\myfile.txt” | Backslash |
| \" | @"It's called \"Bodiam Castle\"" | Double quotes |
| \$ | @"Hello world\$ff" | Two digit hex values |
Every object has a string representation and you can concatenate strings with the + operator. For example:
.var x=25 .var myString= “X is “ + x // Gives myString = "X is 25"
You can use the .print directive to print a string to the console while assembling. This is useful when debugging. Printing x and y can be done like this:
.print "x="+x
.print "y="+y
You can also print labels to see which location they refer to. If you do this, it's best to convert the label value to hexadecimal notation first:
.print “int1=$”+toHexString(int1)
int1: sta regA+1
stx regX+1
sty regY+1
lsr $d019
// Etc.
Here is a list of functions/operators defined on strings:
Table 4.3. String Values
| Function/Operator | Description |
|---|---|
| + | Appends two strings. |
| asBoolean() | Converts the string to a boolean value (eg, “true”.asBoolean()). |
| asNumber() | Converts the string to a number value. Ex, “35”.asNumber(). |
| asNumber(radix) | Converts the string to a number value with the given radix (16=hexadecimal, 2=binary etc.). Ex, “f”.asNumber(16) will return 15. |
| charAt(n) | Returns the character at position n. |
| size() | Returns the number of characters in the string. |
| substring(i1,i2) | Returns the substring beginning at i1 and ending at i2 (char at i2 not included). |
| toLowerCase() | Return the lower version of the string. |
| toUpperCase() | Return the uppercase version of the string. |
Here are the functions that take a number value and convert it to a string:
Table 4.4. Numbers to Strings
| Function | Description |
|---|---|
| toIntString(x) | Return x as an integer string (eg x=16.0 will return “16”). |
| toIntString(x,minSize) | Return x as an integer string space-padded to reach the given minsize. (eg toIntString(16,5) will return “ 16”). |
| toBinaryString(x) | Return x as a binary string (eg x=16.0 will return “10000”). |
| toBinaryString(x,minSize) | Return x as a binary string zero-padded to reach the given minSize (eg toBinaryString(16,8) will return “00010000”). |
| toOctalString(x) | Return x as an octal string (eg x=16.0 will return “20”). |
| toOctalString(x,minSize) | Return x as an octal string zero-padded to reach the given minSize (eg toBinaryString(16,4) will return “0020”). |
| toHexString(x) | Return x as a hexadecimal string (eg x=16.0 will return “10”). |
| toHexString(x,minSize) | Return x as an hexadecimal string zero-padded to reach the given minSize (eg toBinaryString(16,4) will return “0010”). |
You can get the string representation of an arbitrary value by using the general .string() function. Eg.
.print 1234.string().charAt(2) // Prints 3





