Structures¶

Structures are used to keep complex data in one place. Classical use cases are records.

To use structures, load the file lib/forth200x/structure.frt into the controller. It has no further dependencies.

\ simple test example for forth200x structures
\ define a new data structure named list.

begin-structure list
field: l.p  \ previous
field: l.n  \ next
field: l.d  \ data
end-structure

\ create an instance of the datastructure list
\ named listroot

list buffer: listroot

\ access an element from the instance
$55aa listroot l.d ! \ place a structure at a special place begin-structure atmega-port cfield: PIN cfield: DDR cfield: PORT end-structure \ Atmegas have 3 addresses per port, use \ the lowest one here$39 constant PORT-A

\ set all pins to output
\$ff PORT-A DDR c!

The example shows a few aspects that should be known:

• field names are global entries in the dictionary, one should choose good names for them. Names like a are a no-go. One possibility is the schema structure-name->fieldname
• structures keep definitions in flash, the data goes to RAM.

The package works with amforth version 4.0 and newer.