# DATA Example

Syntax: DATA

NOTE: The example below is written for the BS2 and will run on any of the BS2-family modules. Modify the $STAMP directive (as required) before downloading to the BS2e, BS2sx, BS2p, BS2pe, or BS2px.

    ' DATA.BS2
    ' This program stores a number of large text strings into EEPROM with the
    ' DATA directive and then sends them, one character at a time via the DEBUG
    ' command.  This is a good demonstration of how to save program space by
    ' storing large amounts of data in EEPROM directly, rather than embedding
    ' the data into DEBUG commands.

    ' {$STAMP BS2}
    ' {$PBASIC 2.5}

    idx             VAR     Word            ' current location number
    phrase          VAR     Nib             ' current phrase number
    char            VAR     Byte            ' character to print

    ' ----- Define all text phrases (out of order, just for fun!) -----
    '
    Text1           DATA    "Here is the first part of a large chunk of textual "
                    DATA    "data ", CR, "that needs to be transmitted.  There's "
                    DATA    "a 5 second delay", CR, "between text paragraphs. ", CR
                    DATA    CR, 0

    Text3           DATA    "The alternative (having multiple DEBUGs or SEROUTs, "
                    DATA    "each ", CR, "with their own line of text) consumes "
                    DATA    "MUCH more EEPROM ", CR, "(program) space. ", CR
                    DATA    CR, 0

    Text6           DATA    "The 255 is used by this program to indicate we've "
                    DATA    "reached the ", CR, "End of Text.  The Main routine "
                    DATA    "pauses in between each block of ", CR, "text, and then "
                    DATA    "uses a LOOKUP command TO retrieve the location ", CR
                    DATA    "of the next desired block of text to print. ", 0

    Text4           DATA    CLS, "This program also demonstrates retrieving data "
                    DATA    "out of order ", CR, "in relation TO the way it is "
                    DATA    "stored in EEPROM.  Additionally, ", CR, "control codes "
                    DATA    "(like carriage-returns, clear-screens, etc) can ", CR
                    DATA    "be embedded right in the data, as it is here. ", CR
                    DATA    CR, 0

    Text2           DATA    "This is an example of a good way to save space in "
                    DATA    "your ", CR, "BASIC Stamp's program by storing data "
                    DATA    "into EEPROM and ", CR, "retrieving it, one byte at a "
                    DATA    "time, and transmitting it ", CR, "with just a single "
                    DATA    "DEBUG (or SEROUT) command.", CR, CR, 0

    Text5           DATA    "The Print_It routine simply takes the Index variable, "
                    DATA    "retrieves ", CR, "the character at the EEPROM location "
                    DATA    "pointed to by it, and ", CR, "prints it to the screen "
                    DATA    "unti it finds a byte with a value of 255.", CR, CR, 0

    Main:
      DEBUG CLS                             ' Clear DEBUG window
      FOR phrase = 1 TO 6                   ' Print blocks one by one
        LOOKUP (phrase - 1),
               [Text1, Text2, Text3, Text4, Text5, Text6], idx
        GOSUB Print_It
        PAUSE 5000                          ' Pause for 5 seconds
      NEXT
      END

    Print_It:
      DO
        READ idx, char                      ' Get next character
        idx = idx + 1                       ' Point to next location
        IF (char = 0) THEN EXIT             ' If 0, we're done with block
        DEBUG char                          ' Otherwise, transmit it
      LOOP
      RETURN                                ' Return to the main routine

Go to Welcome page

BASIC Stamp Help Version 2.5.4

Copyright © Parallax Inc.

8/8/2012