Page 21 of 62
SBasic User's Manual SBasic Version 2.7 Page 21
Printed: December 5, 1999
Data tables
SBasic allows you to store tables of data in ROM, for access by your
program at run-time. This technique is used often for storing pre-
defined information, such as lookup tables for motor speeds or
mathematical functions.
To store 16-bit values in a data table, use the DATA statement.
Follow the DATA statement with a list of values to be written into
ROM. For example:
data 0, 1, 2, 3 ' store 4 16-bit values in table
SBasic will generate suitable assembly language source to store the
values into code memory at the current location. For the 68hc11, this
example would generate assembly language source similar to:
fdb 0,1,2,3
To store 8-bit values in a data table, use the DATAB statement.
Follow the DATAB statement with a list of values to be written into
ROM. For example:
datab $ff, 123, 256, 'z' ' store 4 8-bit values
SBasic will generate suitable assembly language source to store the
values into code memory at the current location. For the 68hc11, this
example would generate assembly language source similar to:
fcb 255,123,0,122
Note that the third value appears in the SBasic source as 256, but is
converted to 0 in the output source file. This happens because SBasic
only writes the low eight bits of a DATAB list item to the output
file.
In order to access items within a DATA (or DATAB) table, you must
provide a label at the start of the list. Your program can then use
this label to find the first item in the list. For example:
declare n
declare sum
foo:
data 1,2,3,4
data 5,6,7,8
main:
sum = 0
for n = 0 to 7
sum = sum + peek(addr(foo) + n * 2)
next