You are here: Home DOCUMENTATION information SBASIC Manual - Page 54

Technological Arts Inc.

Your Shopping Cart

Your Cart is currently empty.

SBASIC Manual - Page 54

Article Index
SBASIC Manual
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
Page 8
Page 9
Page 10
Page 11
Page 12
Page 13
Page 14
Page 15
Page 16
Page 17
Page 18
Page 19
Page 20
Page 21
Page 22
Page 23
Page 24
Page 25
Page 26
Page 27
Page 28
Page 29
Page 30
Page 31
Page 32
Page 33
Page 34
Page 35
Page 36
Page 37
Page 38
Page 39
Page 40
Page 41
Page 42
Page 43
Page 44
Page 45
Page 46
Page 47
Page 48
Page 49
Page 50
Page 51
Page 52
Page 53
Page 54
Page 55
Page 56
Page 57
Page 58
Page 59
Page 60
Table of Contents
Index
All Pages

     SBasic User's Manual     SBasic Version 2.7             Page 54
     Printed:  December 5, 1999
     known variables, constants, and labels.  If found, the underscore and
     following characters are replaced with SBasic's internal name.  Since
     this internal name is what the assembler will use to resolve operands,
     the SBasic name will be understood by the assembler.  In the above
     example, SBasic would convert the string "_time" to something like
     "var009."

     SBasic can handle multiple occurences of underscores within a source
     line.  For example, it will properly resolve a line such as:

         ldx   #_main+2*_cons0               uses a label and a constant

     If SBasic cannot resolve the character string following an underscore
     into the name of a variable, constant, or label, the line is passed
     unchanged to the output file.  This will usually result in an
     assembler error message, but it will not cause an SBasic error!  This
                                  it will not cause an SBasic error!
     means that if you use inline assembly language, you must check not
     only for SBasic errors but for assembler errors as well.  SBasic will
     not know that the assembler could not resolve the label.

     It is easy to lose track of which addresses are known to SBasic and
     which are known to the assembler.  Remember that labels known to
     SBasic are automatically converted to an internal label before SBasic
     writes them to the output file.  Thus, your SBasic source may refer to
     a label WAMPUM, but it will be converted to something like lbl010
     before the assembler sees it.

     To refer to standard assembler labels such as I/O registers, make sure
     that you make them known to the assembler by including them within an
     ASM section.  The above example could have been written:

         foo:
         asm                            ' switch to assembly language

         iobase  equ   $1000            address of I/O regs
         tcnt    equ   $0e              offset to TCNT reg
                 ldx   #ioregs          point x at i/o regs
                 ldd   tcnt,x           get 16-bit counter TCNT
                 std   _time            save in variable TIME

         endasm                         ' switch back to SBasic
         return                         ' and return