
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.cocopedia.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wayne</id>
	<title>CoCopedia - The Tandy/Radio Shack Color Computer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.cocopedia.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wayne"/>
	<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/Special:Contributions/Wayne"/>
	<updated>2026-06-09T06:30:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6607</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6607"/>
		<updated>2013-11-29T20:46:00Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Source Listings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
&lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
&lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
&lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
&lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
&lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
&lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 SysCall comparisons between OS-9 Level 2 and NOS-9 Level 1 and Level 2&lt;br /&gt;
 ===================&lt;br /&gt;
 The NitrOS-9 Level 1 and Level 2 versions of SysCall are identical. The OS-9&lt;br /&gt;
 Level 2 version has differences from the NitrOS-9 versions, as follows:&lt;br /&gt;
 &lt;br /&gt;
 Attributes/Revision byte 81 changed to 80&lt;br /&gt;
 Header Parity byte 7B changed to 7A&lt;br /&gt;
 CRC F37B74 changed to 8583E2&lt;br /&gt;
&lt;br /&gt;
=== Source Listings ===&lt;br /&gt;
&lt;br /&gt;
Source listings for use with asm/rma.&lt;br /&gt;
&lt;br /&gt;
* [[Inkey.asm Level 1]]&lt;br /&gt;
* [[Inkey.asm Level 2]]&lt;br /&gt;
* [[SysCall.asm Level 1]]&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 2 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== SysCall Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 SysCall Listing&lt;br /&gt;
 November 1984, Volume 4, Number 4 of The Rainbow Magazine&lt;br /&gt;
 Page 281, under the segment title &amp;quot;Microware&#039;s Third Annual OS-9 Users Seminar&amp;quot;&lt;br /&gt;
 Mid-page, center column, there is a call-out that says:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;SysCall ... lets you program OS-9 system calls directly in your BASIC09 program.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Lower-right corner of the page, the last part of the 3rd column:&lt;br /&gt;
 &lt;br /&gt;
 Two Useful Routines&lt;br /&gt;
 &lt;br /&gt;
 We&#039;re printing two useful routines this month. SysCall is an assembly language subroutine designed to work&lt;br /&gt;
 with BASIC09. It lets you program OS-9 system calls directly in your BASIC09 program. One of the handiest&lt;br /&gt;
 tools you&#039;ll ever find, it was written by Robert Doggett at Microware.&lt;br /&gt;
 &lt;br /&gt;
 Also, we are presenting three BASIC09 procedures that show you how to create and use pipes. The procedure&lt;br /&gt;
 &amp;quot;POpen&amp;quot; creates a pipe by DUPEing one of the standard paths and using it as the path for the pipe that will&lt;br /&gt;
 go to or from the FORKed pipeline process. It uses SysCall.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;OutPipe&amp;quot; calls POpen to create a pipe to a spooler. The pipe lets the output of OutPipe be&lt;br /&gt;
 read and printed by the spooler. If you do not have a spooler program, you can open a path to any other&lt;br /&gt;
 program by changing the parameters in the RUN statement.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;InPipe&amp;quot; calls POpen to create a pipe from the OS-9 MDIR utility command to itself. InPipe can&lt;br /&gt;
 then read the standard output path from MDIR and display its output.&lt;br /&gt;
 &lt;br /&gt;
 Special thanks to Bill Pierce for finding this jewel and bringing it to this collection. The listing below&lt;br /&gt;
 appears exactly as it appears in the Rainbow&#039;s article on page 284. The extra comments between lines 00007&lt;br /&gt;
 and 00008 are mine. I made a correction to the procedure listing for filesize.&lt;br /&gt;
&lt;br /&gt;
 THE PROCEDURE SYSCALL&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 001&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00001        ***************************************&lt;br /&gt;
 00002        * SYSCALL - a powerful subroutine for use with Basic09&lt;br /&gt;
 00003        * A special thanks to Robert Doggett for writing this routine.&lt;br /&gt;
 00004        &lt;br /&gt;
 00005        * Basic09 calling suquence:&lt;br /&gt;
 00006        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00007        * DIM regs:Registers&lt;br /&gt;
              *&lt;br /&gt;
              * There is no DIM statement for code, which must be a BYTE or INTEGER value,&lt;br /&gt;
              * and a non-DIM&#039;d variable in Basic09 is either a type REAL or, with a $ as the&lt;br /&gt;
              * last character of the name, a 32-character STRING.&lt;br /&gt;
              * DIM code:BYTE&lt;br /&gt;
              *&lt;br /&gt;
 00008        * RUN SysCall(code,registers)&lt;br /&gt;
 00009        &lt;br /&gt;
 00010        * SysCall will allow you to execute ANY OS-9 System call from&lt;br /&gt;
 00011        * your Basic09 programs. BE WARNED!!! SysCall can be VERY&lt;br /&gt;
 00012        * dangerous, since it permits you to do things you may not want&lt;br /&gt;
 00013        * done during program execution (like format disks, write&lt;br /&gt;
 00014        * thousands of bytea all at once, and so on). However, it can&lt;br /&gt;
 00015        * also be very useful, IF you know what you are doing.&lt;br /&gt;
 00016        &lt;br /&gt;
 00017        * NOTE: This version of SysCall will cause a Basic09 runtime&lt;br /&gt;
 00018        * error to occur if your system call returns an error. This can&lt;br /&gt;
 00019        * be easily overcome, as noted below. If you do this, you&lt;br /&gt;
 00020        * must check &amp;quot;regs.CC&amp;quot; to see if a system error has occurred.&lt;br /&gt;
 00021        &lt;br /&gt;
 00022        * Here is an example of one possible use you may have for SysCall&lt;br /&gt;
 00023        *&lt;br /&gt;
 00024        * PROCEDURE filesize&lt;br /&gt;
 00025        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00026        * DIM regs:Registers&lt;br /&gt;
 00027        * DIM path,callcode:BYTE \(* or INTEGER *)&lt;br /&gt;
 00028        * OPEN #path,&amp;quot;test&amp;quot;:READ&lt;br /&gt;
 00029        * regs.A:=path&lt;br /&gt;
 00030        * regs.B:=2 \(* I$GetStt code *)&lt;br /&gt;
 00031        * RUN SysCall(callcode,regs)&lt;br /&gt;
 00032        * CLOSE #path&lt;br /&gt;
 00033        * PRINT USING &amp;quot;filesize = 0&#039;,2(h4)&amp;quot;,regs.X; regs.U&lt;br /&gt;
 00034        &lt;br /&gt;
 00035                           USE  /d0/defs/os9defs&lt;br /&gt;
 00421                           opt  1&lt;br /&gt;
 00422        &lt;br /&gt;
 00423        &lt;br /&gt;
 00424   0021          TYPE      set  SBRTN+ONJCT&lt;br /&gt;
 00425   0081          REVS      set  REENT+1&lt;br /&gt;
 00426   0000 87CD005E           mod  SyCalEnd,SyCalNam,TYPE,REVS,SyCalEnt,0&lt;br /&gt;
 00427   000D 53797343 SyCalNam  fcs  &amp;quot;SysCall&amp;quot;&lt;br /&gt;
 00428   0014 02                 fcb  2          edition number&lt;br /&gt;
 00429        &lt;br /&gt;
 00430   0038          E$Paras   equ  56         Basic09&#039;s parameter error code&lt;br /&gt;
 00431   103F          M.OS9     equ  $103F      OS-9 system call machine code&lt;br /&gt;
 00432   0039          M.RTS     equ  $39        rts machine code&lt;br /&gt;
 00433        &lt;br /&gt;
 00434 D 0000                    org  0          stacked variable&lt;br /&gt;
 00435 D 0000          Return    rmb  2          Return address&lt;br /&gt;
 00436 D 0002          PCount    rmb  2          number of params passed&lt;br /&gt;
 00437 D 0004          Function  rmb  4          OS-9 function code&lt;br /&gt;
 00438 D 0008          Regs      rmb  4          Register image&lt;br /&gt;
 00439        &lt;br /&gt;
 00440   0015 EC62     SyCalEnt  ldd  PCount,s   Get parameter count&lt;br /&gt;
 00441   0017 10830002           cmpd #2         exactly 2 parameters?&lt;br /&gt;
 00442   001B 263A               bne  ParamErr   abort if not&lt;br /&gt;
 00443   001D EC6A               ldd  Regs+2,s   check size of register image&lt;br /&gt;
 00444   001F 1083000A           cmpd #10        exactly 10 bytes?&lt;br /&gt;
 00445   0023 2632               bne  ParamErr   abort if not&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 002&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00446   0025 ECF804             ldd  [Function,S] get os-9 function code&lt;br /&gt;
 00447   0028 AE66               ldx  Function+2,S get size of function param&lt;br /&gt;
 00448   002A 301F               leax -1,X        INTEGER?&lt;br /&gt;
 00449   002C 2629               bne  ParamErr    abort if not&lt;br /&gt;
 00450   002E 1F98               tfr  B,A&lt;br /&gt;
 00451        &lt;br /&gt;
 00452        * Now you build your OS9 call and return from subroutine on&lt;br /&gt;
 00453        * stack (A)=OS9 function call&lt;br /&gt;
 00454        &lt;br /&gt;
 00455   0030 C639     SysCall   ldb  #M.RTS      get &amp;quot;rts&amp;quot; machine code&lt;br /&gt;
 00456   0032 3406               pshs D&lt;br /&gt;
 00457   0034 CC103F             ldd  #M.OS9      get OS-9 machine code&lt;br /&gt;
 00458   0037 3406               pshs D&lt;br /&gt;
 00459   0039 EE6C               ldu  Regs+4,S    get register image ptr&lt;br /&gt;
 00460   003B EC41               ldd  R$D,U       initialize regs for system call&lt;br /&gt;
 00461   003D AE44               ldx  R$X,U&lt;br /&gt;
 00462   003F 10AE46             ldy  R$Y,U&lt;br /&gt;
 00463   0042 EE48               ldu  R$U,U&lt;br /&gt;
 00464   0044 ADE4               jsr  0,S         execute system call&lt;br /&gt;
 00465   0046 3441               pshs CC,U        save CC,U&lt;br /&gt;
 00466   0048 EE6F               ldu  Regs+7,S&lt;br /&gt;
 00467   004A 3348               leau R$U,U&lt;br /&gt;
 00468   004C 363E               pshu A,B,DP,X,Y  return unpdatd regs to caller&lt;br /&gt;
 00469   004E 3512               puls A,X         get CC,U&lt;br /&gt;
 00470   0050 A7C2               sta  ,-U&lt;br /&gt;
 00471   0052 AF48               stx  R$U,U&lt;br /&gt;
 00472   0054 3264               leas 4,S         discard OS-9 call subroutine&lt;br /&gt;
 00473        &lt;br /&gt;
 00474        * If you want to eliminate the possibility of a runtime error&lt;br /&gt;
 00475        * remove the comment designator (*) from the next line&lt;br /&gt;
 00476        &lt;br /&gt;
 00477        * clrb&lt;br /&gt;
 00478   0056 39                 rts&lt;br /&gt;
 00479   0057 53        ParamErr comb             return carry set&lt;br /&gt;
 00480   0058 C638               ldb  #E$Param    Parameter error&lt;br /&gt;
 00481   005A 39                 rts&lt;br /&gt;
 00482        &lt;br /&gt;
 00483   005B B931F4             emod&lt;br /&gt;
 00484   005E           SyCalEnd equ  *&lt;br /&gt;
 &lt;br /&gt;
 00000 error(s)&lt;br /&gt;
 00000 warning(s)&lt;br /&gt;
 $005E 00094 program bytes generated&lt;br /&gt;
 $00E5 00229 data bytes allocated&lt;br /&gt;
 $1006 04102 bytes used for symbols&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=SysCall.asm_Level_1&amp;diff=6606</id>
		<title>SysCall.asm Level 1</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=SysCall.asm_Level_1&amp;diff=6606"/>
		<updated>2013-11-29T20:43:15Z</updated>

		<summary type="html">&lt;p&gt;Wayne: Created page with &amp;quot; ***************************************  * SYSCALL - a powerful subroutine for use with Basic09  * A special thanks to Robert Doggett for writing this routine.  *  * Basic09 ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; ***************************************&lt;br /&gt;
 * SYSCALL - a powerful subroutine for use with Basic09&lt;br /&gt;
 * A special thanks to Robert Doggett for writing this routine.&lt;br /&gt;
 *&lt;br /&gt;
 * Basic09 calling suquence:&lt;br /&gt;
 * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 * DIM regs:Registers&lt;br /&gt;
 *&lt;br /&gt;
 * There is no DIM statement for code, which must be a BYTE or INTEGER value,&lt;br /&gt;
 * and a non-DIM&#039;d variable in Basic09 is either a type REAL or, with a $ as the&lt;br /&gt;
 * last character of the name, a 32-character STRING.&lt;br /&gt;
 * DIM code:BYTE&lt;br /&gt;
 *&lt;br /&gt;
 * RUN SysCall(code,registers)&lt;br /&gt;
 *&lt;br /&gt;
 * SysCall will allow you to execute ANY OS-9 System call from&lt;br /&gt;
 * your Basic09 programs. BE WARNED!!! SysCall can be VERY&lt;br /&gt;
 * dangerous, since it permits you to do things you may not want&lt;br /&gt;
 * done during program execution (like format disks, write&lt;br /&gt;
 * thousands of bytea all at once, and so on). However, it can&lt;br /&gt;
 * also be very useful, IF you know what you are doing.&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: This version of SysCall will cause a Basic09 runtime&lt;br /&gt;
 * error to occur if your system call returns an error. This can&lt;br /&gt;
 * be easily overcome, as noted below. If you do this, you&lt;br /&gt;
 * must check &amp;quot;regs.CC&amp;quot; to see if a system error has occurred.&lt;br /&gt;
 *&lt;br /&gt;
 * Here is an example of one possible use you may have for SysCall&lt;br /&gt;
 *&lt;br /&gt;
 * PROCEDURE filesize&lt;br /&gt;
 * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 * DIM regs:Registers&lt;br /&gt;
 * DIM path,callcode:BYTE \(* or INTEGER *)&lt;br /&gt;
 * OPEN #path,&amp;quot;test&amp;quot;:READ&lt;br /&gt;
 * regs.A:=path&lt;br /&gt;
 * regs.B:=2 \(* I$GetStt code *)&lt;br /&gt;
 * RUN SysCall(callcode,regs)&lt;br /&gt;
 * CLOSE #path&lt;br /&gt;
 * PRINT USING &amp;quot;filesize = 0&#039;,2(h4)&amp;quot;,regs.X; regs.U&lt;br /&gt;
 &lt;br /&gt;
           USE  /d0/defs/os9defs&lt;br /&gt;
           opt  1&lt;br /&gt;
 &lt;br /&gt;
 TYPE      set  SBRTN+ONJCT&lt;br /&gt;
 REVS      set  REENT+1&lt;br /&gt;
           mod  SyCalEnd,SyCalNam,TYPE,REVS,SyCalEnt,0&lt;br /&gt;
 SyCalNam  fcs  &amp;quot;SysCall&amp;quot;&lt;br /&gt;
           fcb  2             edition number&lt;br /&gt;
 &lt;br /&gt;
 E$Paras   equ  56 Basic09&#039;s  parameter error code&lt;br /&gt;
 M.OS9     equ  $103F         OS-9 system call machine code&lt;br /&gt;
 M.RTS     equ  $39           rts machine code&lt;br /&gt;
 &lt;br /&gt;
           org  0             stacked variable&lt;br /&gt;
 Return    rmb  2             Return address&lt;br /&gt;
 PCount    rmb  2             number of params passed&lt;br /&gt;
 Function  rmb  4             OS-9 function code&lt;br /&gt;
 Regs      rmb  4             Register image&lt;br /&gt;
 &lt;br /&gt;
 SyCalEnt  ldd  PCount,s      Get parameter count&lt;br /&gt;
           cmpd #2 exactly    2 parameters?&lt;br /&gt;
           bne  ParamErr      abort if not&lt;br /&gt;
           ldd  Regs+2,s      check size of register image&lt;br /&gt;
           cmpd #10exactly    10 bytes?&lt;br /&gt;
           bne  ParamErr      abort if not&lt;br /&gt;
           ldd  [Function,S]  get os-9 function code&lt;br /&gt;
           ldx  Function+2,S  get size of function param&lt;br /&gt;
           leax -1,XINTEGER?&lt;br /&gt;
           bne  ParamErr      abort if not&lt;br /&gt;
           tfr  B,A&lt;br /&gt;
 &lt;br /&gt;
 * Now you build your OS9 call and return from subroutine on&lt;br /&gt;
 * stack (A)=OS9 function call&lt;br /&gt;
 &lt;br /&gt;
 SysCall   ldb  #M.RTS        get &amp;quot;rts&amp;quot; machine code&lt;br /&gt;
           pshs D&lt;br /&gt;
           ldd  #M.OS9        get OS-9 machine code&lt;br /&gt;
           pshs D&lt;br /&gt;
           ldu  Regs+4,S      get register image ptr&lt;br /&gt;
           ldd  R$D,U         initialize regs for system call&lt;br /&gt;
           ldx  R$X,U&lt;br /&gt;
           ldy  R$Y,U&lt;br /&gt;
           ldu  R$U,U&lt;br /&gt;
           jsr  0,S           execute system call&lt;br /&gt;
           pshs CC,Usave CC,U&lt;br /&gt;
           ldu  Regs+7,S&lt;br /&gt;
           leau R$U,U&lt;br /&gt;
           pshu A,B,DP,X,Y    return unpdatd regs to caller&lt;br /&gt;
           puls A,X get CC,U&lt;br /&gt;
           sta  ,-U&lt;br /&gt;
           stx  R$U,U&lt;br /&gt;
           leas 4,S           discard OS-9 call subroutine&lt;br /&gt;
 &lt;br /&gt;
 * If you want to eliminate the possibility of a runtime error&lt;br /&gt;
 * remove the comment designator (*) from the next line&lt;br /&gt;
 &lt;br /&gt;
 * clrb&lt;br /&gt;
           rts&lt;br /&gt;
 ParamErr  comb               return carry set&lt;br /&gt;
           ldb  #E$Param      Parameter error&lt;br /&gt;
           rts&lt;br /&gt;
 &lt;br /&gt;
           emod&lt;br /&gt;
 SyCalEnd equ   *&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=Inkey.asm_Level_2&amp;diff=6605</id>
		<title>Inkey.asm Level 2</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=Inkey.asm_Level_2&amp;diff=6605"/>
		<updated>2013-11-29T20:40:30Z</updated>

		<summary type="html">&lt;p&gt;Wayne: Created page with &amp;quot; ***************  * INKEY - a subroutine for BASIC09 by Robert Doggett  * Called by: RUN INKEY(StrVar)  *            RUN INKEY(Path, StrVar)  * Inkey determines if a key has b...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 NAM INKEY&lt;br /&gt;
 IFP1&lt;br /&gt;
 USE      /D0/DEFS/OS9DEFS&lt;br /&gt;
 ENDC&lt;br /&gt;
 TYPE     set  SBRTN+OBJCT&lt;br /&gt;
 REVS     set  REENT+1&lt;br /&gt;
          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
 InKeyNam fcs  &amp;quot;Inkey&amp;quot;&lt;br /&gt;
          org  0          Parameters&lt;br /&gt;
 Return   rmb  2          Return addr of caller&lt;br /&gt;
 PCount   rmb  2          Num of params following&lt;br /&gt;
 Param1   rmb  2          1st param addr&lt;br /&gt;
 Length1  rmb  2          size&lt;br /&gt;
 Param2   rmb  2          2nd param addr&lt;br /&gt;
 Length2  rmb  2          size&lt;br /&gt;
 E$Param  equ  $38&lt;br /&gt;
 SIZE     equ  *&lt;br /&gt;
 InKeyEnt leax Param1,S&lt;br /&gt;
          ldd  PCount,S   Get parameter count&lt;br /&gt;
          cmpd #1         just one parameter?&lt;br /&gt;
          beq  InKey20    ..Yes; default path A=0&lt;br /&gt;
          cmpd #2         Are there two params?&lt;br /&gt;
          bne  ParamErr   No, abort&lt;br /&gt;
          ldd  [Param1,S] Get path number&lt;br /&gt;
          ldx  Length1,S&lt;br /&gt;
          leax -1,X       byte available?&lt;br /&gt;
          beq  InKey10    ..Yes; (A)=Path number&lt;br /&gt;
          leax -1,X       Integer?&lt;br /&gt;
          bne  ParamErr   ..No; abort&lt;br /&gt;
          tfr  B,A&lt;br /&gt;
 InKey10  leax Param2,S&lt;br /&gt;
 InKey20  ldu  2,X        length of string&lt;br /&gt;
          ldx  0,X        addr of string&lt;br /&gt;
          ldb  #$FF&lt;br /&gt;
          stb  0,X        Initialize to null str&lt;br /&gt;
          cmpu #2         at least two-byte str?&lt;br /&gt;
          blo  InKey30    ..No&lt;br /&gt;
          stb  1,X        put str terminator&lt;br /&gt;
 InKey30  ldb  #SS.Ready&lt;br /&gt;
          OS9  I$GetStt   is there an data ready?&lt;br /&gt;
          bcs  InKey90    ..No; exit&lt;br /&gt;
          ldy  #1&lt;br /&gt;
          OS9  I$Read     Read one byte&lt;br /&gt;
          rts&lt;br /&gt;
 InKey90  cmpb #E$NotRdy&lt;br /&gt;
          bne  InKeyErr&lt;br /&gt;
          rts             (carry clear)&lt;br /&gt;
 ParamErr ldb  #E$Param   Parameter Error&lt;br /&gt;
 InKeyErr coma&lt;br /&gt;
          rts&lt;br /&gt;
          emod&lt;br /&gt;
 InKeyEnd equ  *&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=Inkey.asm_Level_1&amp;diff=6604</id>
		<title>Inkey.asm Level 1</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=Inkey.asm_Level_1&amp;diff=6604"/>
		<updated>2013-11-29T20:39:04Z</updated>

		<summary type="html">&lt;p&gt;Wayne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 TYPE     set  SBRTN+OBJCT&lt;br /&gt;
 REVS     set  REENT+1&lt;br /&gt;
          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
          org  0          Parameters&lt;br /&gt;
 Return   rmb  2          Return addr of caller&lt;br /&gt;
 PCount   rmb  2          Num of params following&lt;br /&gt;
 Param1   rmb  2          1st param addr&lt;br /&gt;
 Length1  rmb  2          size&lt;br /&gt;
 Param2   rmb  2          2nd param addr&lt;br /&gt;
 Length2  rmb  2          size&lt;br /&gt;
 InKeyEnt leax Param1,S&lt;br /&gt;
          ldd  PCount,S   Get parameter count&lt;br /&gt;
          cmpd #1         just one parameter?&lt;br /&gt;
          beq  InKey20    ..Yes; default path A=0&lt;br /&gt;
          cmpd #2         Are there two params?&lt;br /&gt;
          bne  ParamErr   No, abort&lt;br /&gt;
          ldd  [Param1,S] Get path number&lt;br /&gt;
          ldx  Length1,S&lt;br /&gt;
          leax -1,X byte  available?&lt;br /&gt;
          beq  InKey10    ..Yes; (A)=Path number&lt;br /&gt;
          leax -1,X       Integer?&lt;br /&gt;
          bne  ParamErr   ..No; abort&lt;br /&gt;
          tfr  B,A&lt;br /&gt;
 InKey10  leax Param2,S&lt;br /&gt;
 InKey20  ldu  2,X        length of string&lt;br /&gt;
          ldx  0,X        addr of string&lt;br /&gt;
          ldb  #$FF&lt;br /&gt;
          stb  0,X        Initialize to null str&lt;br /&gt;
          cmpu #2         at least two-byte str?&lt;br /&gt;
          blo  InKey30    ..No&lt;br /&gt;
          stb  1,X        put str terminator&lt;br /&gt;
 InKey30  ldb  #SS.Ready&lt;br /&gt;
          OS9  I$GetStt   is there an data ready?&lt;br /&gt;
          bcs  InKey90    ..No; exit&lt;br /&gt;
          ldy  #1&lt;br /&gt;
          OS9  I$Read     Read one byte&lt;br /&gt;
          rts&lt;br /&gt;
 InKey90  cmpb #E$NotRdy&lt;br /&gt;
          bne  InKeyErr&lt;br /&gt;
          rts             (carry clear)&lt;br /&gt;
 ParamErr ldb  #E$Param   Parameter Error&lt;br /&gt;
 InKeyErr coma&lt;br /&gt;
          rts&lt;br /&gt;
          emod&lt;br /&gt;
 InKeyEnd equ  *&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=Inkey.asm_Level_1&amp;diff=6603</id>
		<title>Inkey.asm Level 1</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=Inkey.asm_Level_1&amp;diff=6603"/>
		<updated>2013-11-29T20:37:29Z</updated>

		<summary type="html">&lt;p&gt;Wayne: Created page with &amp;quot;*************** * INKEY - a subroutine for BASIC09 by Robert Doggett * Called by: RUN INKEY(StrVar) *            RUN INKEY(Path, StrVar) * Inkey determines if a key has been t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;***************&lt;br /&gt;
* INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
* Called by: RUN INKEY(StrVar)&lt;br /&gt;
*            RUN INKEY(Path, StrVar)&lt;br /&gt;
* Inkey determines if a key has been typed on the given path&lt;br /&gt;
* (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
* character in the String Variable. If no key has been type, the&lt;br /&gt;
* null string is returned. If a path is specified, it must be&lt;br /&gt;
* either type BYTE or INTEGER.&lt;br /&gt;
TYPE     set  SBRTN+OBJCT&lt;br /&gt;
REVS     set  REENT+1&lt;br /&gt;
         mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
         org  0          Parameters&lt;br /&gt;
Return   rmb  2          Return addr of caller&lt;br /&gt;
PCount   rmb  2          Num of params following&lt;br /&gt;
Param1   rmb  2          1st param addr&lt;br /&gt;
Length1  rmb  2          size&lt;br /&gt;
Param2   rmb  2          2nd param addr&lt;br /&gt;
Length2  rmb  2          size&lt;br /&gt;
InKeyEnt leax Param1,S&lt;br /&gt;
         ldd  PCount,S   Get parameter count&lt;br /&gt;
         cmpd #1         just one parameter?&lt;br /&gt;
         beq  InKey20    ..Yes; default path A=0&lt;br /&gt;
         cmpd #2         Are there two params?&lt;br /&gt;
         bne  ParamErr   No, abort&lt;br /&gt;
         ldd  [Param1,S] Get path number&lt;br /&gt;
         ldx  Length1,S&lt;br /&gt;
         leax -1,X byte  available?&lt;br /&gt;
         beq  InKey10    ..Yes; (A)=Path number&lt;br /&gt;
         leax -1,X       Integer?&lt;br /&gt;
         bne  ParamErr   ..No; abort&lt;br /&gt;
         tfr  B,A&lt;br /&gt;
InKey10  leax Param2,S&lt;br /&gt;
InKey20  ldu  2,X        length of string&lt;br /&gt;
         ldx  0,X        addr of string&lt;br /&gt;
         ldb  #$FF&lt;br /&gt;
         stb  0,X        Initialize to null str&lt;br /&gt;
         cmpu #2         at least two-byte str?&lt;br /&gt;
         blo  InKey30    ..No&lt;br /&gt;
         stb  1,X        put str terminator&lt;br /&gt;
InKey30  ldb  #SS.Ready&lt;br /&gt;
         OS9  I$GetStt   is there an data ready?&lt;br /&gt;
         bcs  InKey90    ..No; exit&lt;br /&gt;
         ldy  #1&lt;br /&gt;
         OS9  I$Read     Read one byte&lt;br /&gt;
         rts&lt;br /&gt;
InKey90  cmpb #E$NotRdy&lt;br /&gt;
         bne  InKeyErr&lt;br /&gt;
         rts             (carry clear)&lt;br /&gt;
ParamErr ldb  #E$Param   Parameter Error&lt;br /&gt;
InKeyErr coma&lt;br /&gt;
         rts&lt;br /&gt;
         emod&lt;br /&gt;
InKeyEnd equ  *&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6602</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6602"/>
		<updated>2013-11-29T20:37:05Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Source Listings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
&lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
&lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
&lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
&lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
&lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
&lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 SysCall comparisons between OS-9 Level 2 and NOS-9 Level 1 and Level 2&lt;br /&gt;
 ===================&lt;br /&gt;
 The NitrOS-9 Level 1 and Level 2 versions of SysCall are identical. The OS-9&lt;br /&gt;
 Level 2 version has differences from the NitrOS-9 versions, as follows:&lt;br /&gt;
 &lt;br /&gt;
 Attributes/Revision byte 81 changed to 80&lt;br /&gt;
 Header Parity byte 7B changed to 7A&lt;br /&gt;
 CRC F37B74 changed to 8583E2&lt;br /&gt;
&lt;br /&gt;
=== Source Listings ===&lt;br /&gt;
&lt;br /&gt;
* [[Inkey.asm Level 1]]&lt;br /&gt;
* [[Inkey.asm Level 2]]&lt;br /&gt;
* [[SysCall.asm Level 1]]&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 2 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== SysCall Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 SysCall Listing&lt;br /&gt;
 November 1984, Volume 4, Number 4 of The Rainbow Magazine&lt;br /&gt;
 Page 281, under the segment title &amp;quot;Microware&#039;s Third Annual OS-9 Users Seminar&amp;quot;&lt;br /&gt;
 Mid-page, center column, there is a call-out that says:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;SysCall ... lets you program OS-9 system calls directly in your BASIC09 program.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Lower-right corner of the page, the last part of the 3rd column:&lt;br /&gt;
 &lt;br /&gt;
 Two Useful Routines&lt;br /&gt;
 &lt;br /&gt;
 We&#039;re printing two useful routines this month. SysCall is an assembly language subroutine designed to work&lt;br /&gt;
 with BASIC09. It lets you program OS-9 system calls directly in your BASIC09 program. One of the handiest&lt;br /&gt;
 tools you&#039;ll ever find, it was written by Robert Doggett at Microware.&lt;br /&gt;
 &lt;br /&gt;
 Also, we are presenting three BASIC09 procedures that show you how to create and use pipes. The procedure&lt;br /&gt;
 &amp;quot;POpen&amp;quot; creates a pipe by DUPEing one of the standard paths and using it as the path for the pipe that will&lt;br /&gt;
 go to or from the FORKed pipeline process. It uses SysCall.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;OutPipe&amp;quot; calls POpen to create a pipe to a spooler. The pipe lets the output of OutPipe be&lt;br /&gt;
 read and printed by the spooler. If you do not have a spooler program, you can open a path to any other&lt;br /&gt;
 program by changing the parameters in the RUN statement.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;InPipe&amp;quot; calls POpen to create a pipe from the OS-9 MDIR utility command to itself. InPipe can&lt;br /&gt;
 then read the standard output path from MDIR and display its output.&lt;br /&gt;
 &lt;br /&gt;
 Special thanks to Bill Pierce for finding this jewel and bringing it to this collection. The listing below&lt;br /&gt;
 appears exactly as it appears in the Rainbow&#039;s article on page 284. The extra comments between lines 00007&lt;br /&gt;
 and 00008 are mine. I made a correction to the procedure listing for filesize.&lt;br /&gt;
&lt;br /&gt;
 THE PROCEDURE SYSCALL&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 001&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00001        ***************************************&lt;br /&gt;
 00002        * SYSCALL - a powerful subroutine for use with Basic09&lt;br /&gt;
 00003        * A special thanks to Robert Doggett for writing this routine.&lt;br /&gt;
 00004        &lt;br /&gt;
 00005        * Basic09 calling suquence:&lt;br /&gt;
 00006        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00007        * DIM regs:Registers&lt;br /&gt;
              *&lt;br /&gt;
              * There is no DIM statement for code, which must be a BYTE or INTEGER value,&lt;br /&gt;
              * and a non-DIM&#039;d variable in Basic09 is either a type REAL or, with a $ as the&lt;br /&gt;
              * last character of the name, a 32-character STRING.&lt;br /&gt;
              * DIM code:BYTE&lt;br /&gt;
              *&lt;br /&gt;
 00008        * RUN SysCall(code,registers)&lt;br /&gt;
 00009        &lt;br /&gt;
 00010        * SysCall will allow you to execute ANY OS-9 System call from&lt;br /&gt;
 00011        * your Basic09 programs. BE WARNED!!! SysCall can be VERY&lt;br /&gt;
 00012        * dangerous, since it permits you to do things you may not want&lt;br /&gt;
 00013        * done during program execution (like format disks, write&lt;br /&gt;
 00014        * thousands of bytea all at once, and so on). However, it can&lt;br /&gt;
 00015        * also be very useful, IF you know what you are doing.&lt;br /&gt;
 00016        &lt;br /&gt;
 00017        * NOTE: This version of SysCall will cause a Basic09 runtime&lt;br /&gt;
 00018        * error to occur if your system call returns an error. This can&lt;br /&gt;
 00019        * be easily overcome, as noted below. If you do this, you&lt;br /&gt;
 00020        * must check &amp;quot;regs.CC&amp;quot; to see if a system error has occurred.&lt;br /&gt;
 00021        &lt;br /&gt;
 00022        * Here is an example of one possible use you may have for SysCall&lt;br /&gt;
 00023        *&lt;br /&gt;
 00024        * PROCEDURE filesize&lt;br /&gt;
 00025        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00026        * DIM regs:Registers&lt;br /&gt;
 00027        * DIM path,callcode:BYTE \(* or INTEGER *)&lt;br /&gt;
 00028        * OPEN #path,&amp;quot;test&amp;quot;:READ&lt;br /&gt;
 00029        * regs.A:=path&lt;br /&gt;
 00030        * regs.B:=2 \(* I$GetStt code *)&lt;br /&gt;
 00031        * RUN SysCall(callcode,regs)&lt;br /&gt;
 00032        * CLOSE #path&lt;br /&gt;
 00033        * PRINT USING &amp;quot;filesize = 0&#039;,2(h4)&amp;quot;,regs.X; regs.U&lt;br /&gt;
 00034        &lt;br /&gt;
 00035                           USE  /d0/defs/os9defs&lt;br /&gt;
 00421                           opt  1&lt;br /&gt;
 00422        &lt;br /&gt;
 00423        &lt;br /&gt;
 00424   0021          TYPE      set  SBRTN+ONJCT&lt;br /&gt;
 00425   0081          REVS      set  REENT+1&lt;br /&gt;
 00426   0000 87CD005E           mod  SyCalEnd,SyCalNam,TYPE,REVS,SyCalEnt,0&lt;br /&gt;
 00427   000D 53797343 SyCalNam  fcs  &amp;quot;SysCall&amp;quot;&lt;br /&gt;
 00428   0014 02                 fcb  2          edition number&lt;br /&gt;
 00429        &lt;br /&gt;
 00430   0038          E$Paras   equ  56         Basic09&#039;s parameter error code&lt;br /&gt;
 00431   103F          M.OS9     equ  $103F      OS-9 system call machine code&lt;br /&gt;
 00432   0039          M.RTS     equ  $39        rts machine code&lt;br /&gt;
 00433        &lt;br /&gt;
 00434 D 0000                    org  0          stacked variable&lt;br /&gt;
 00435 D 0000          Return    rmb  2          Return address&lt;br /&gt;
 00436 D 0002          PCount    rmb  2          number of params passed&lt;br /&gt;
 00437 D 0004          Function  rmb  4          OS-9 function code&lt;br /&gt;
 00438 D 0008          Regs      rmb  4          Register image&lt;br /&gt;
 00439        &lt;br /&gt;
 00440   0015 EC62     SyCalEnt  ldd  PCount,s   Get parameter count&lt;br /&gt;
 00441   0017 10830002           cmpd #2         exactly 2 parameters?&lt;br /&gt;
 00442   001B 263A               bne  ParamErr   abort if not&lt;br /&gt;
 00443   001D EC6A               ldd  Regs+2,s   check size of register image&lt;br /&gt;
 00444   001F 1083000A           cmpd #10        exactly 10 bytes?&lt;br /&gt;
 00445   0023 2632               bne  ParamErr   abort if not&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 002&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00446   0025 ECF804             ldd  [Function,S] get os-9 function code&lt;br /&gt;
 00447   0028 AE66               ldx  Function+2,S get size of function param&lt;br /&gt;
 00448   002A 301F               leax -1,X        INTEGER?&lt;br /&gt;
 00449   002C 2629               bne  ParamErr    abort if not&lt;br /&gt;
 00450   002E 1F98               tfr  B,A&lt;br /&gt;
 00451        &lt;br /&gt;
 00452        * Now you build your OS9 call and return from subroutine on&lt;br /&gt;
 00453        * stack (A)=OS9 function call&lt;br /&gt;
 00454        &lt;br /&gt;
 00455   0030 C639     SysCall   ldb  #M.RTS      get &amp;quot;rts&amp;quot; machine code&lt;br /&gt;
 00456   0032 3406               pshs D&lt;br /&gt;
 00457   0034 CC103F             ldd  #M.OS9      get OS-9 machine code&lt;br /&gt;
 00458   0037 3406               pshs D&lt;br /&gt;
 00459   0039 EE6C               ldu  Regs+4,S    get register image ptr&lt;br /&gt;
 00460   003B EC41               ldd  R$D,U       initialize regs for system call&lt;br /&gt;
 00461   003D AE44               ldx  R$X,U&lt;br /&gt;
 00462   003F 10AE46             ldy  R$Y,U&lt;br /&gt;
 00463   0042 EE48               ldu  R$U,U&lt;br /&gt;
 00464   0044 ADE4               jsr  0,S         execute system call&lt;br /&gt;
 00465   0046 3441               pshs CC,U        save CC,U&lt;br /&gt;
 00466   0048 EE6F               ldu  Regs+7,S&lt;br /&gt;
 00467   004A 3348               leau R$U,U&lt;br /&gt;
 00468   004C 363E               pshu A,B,DP,X,Y  return unpdatd regs to caller&lt;br /&gt;
 00469   004E 3512               puls A,X         get CC,U&lt;br /&gt;
 00470   0050 A7C2               sta  ,-U&lt;br /&gt;
 00471   0052 AF48               stx  R$U,U&lt;br /&gt;
 00472   0054 3264               leas 4,S         discard OS-9 call subroutine&lt;br /&gt;
 00473        &lt;br /&gt;
 00474        * If you want to eliminate the possibility of a runtime error&lt;br /&gt;
 00475        * remove the comment designator (*) from the next line&lt;br /&gt;
 00476        &lt;br /&gt;
 00477        * clrb&lt;br /&gt;
 00478   0056 39                 rts&lt;br /&gt;
 00479   0057 53        ParamErr comb             return carry set&lt;br /&gt;
 00480   0058 C638               ldb  #E$Param    Parameter error&lt;br /&gt;
 00481   005A 39                 rts&lt;br /&gt;
 00482        &lt;br /&gt;
 00483   005B B931F4             emod&lt;br /&gt;
 00484   005E           SyCalEnd equ  *&lt;br /&gt;
 &lt;br /&gt;
 00000 error(s)&lt;br /&gt;
 00000 warning(s)&lt;br /&gt;
 $005E 00094 program bytes generated&lt;br /&gt;
 $00E5 00229 data bytes allocated&lt;br /&gt;
 $1006 04102 bytes used for symbols&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6601</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6601"/>
		<updated>2013-11-29T20:36:17Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Source Listings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
&lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
&lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
&lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
&lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
&lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
&lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 SysCall comparisons between OS-9 Level 2 and NOS-9 Level 1 and Level 2&lt;br /&gt;
 ===================&lt;br /&gt;
 The NitrOS-9 Level 1 and Level 2 versions of SysCall are identical. The OS-9&lt;br /&gt;
 Level 2 version has differences from the NitrOS-9 versions, as follows:&lt;br /&gt;
 &lt;br /&gt;
 Attributes/Revision byte 81 changed to 80&lt;br /&gt;
 Header Parity byte 7B changed to 7A&lt;br /&gt;
 CRC F37B74 changed to 8583E2&lt;br /&gt;
&lt;br /&gt;
=== Source Listings ===&lt;br /&gt;
&lt;br /&gt;
* Inkey.asm Level 1&lt;br /&gt;
* Inkey.asm Level 2&lt;br /&gt;
* SysCall.asm Level 1&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 2 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== SysCall Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 SysCall Listing&lt;br /&gt;
 November 1984, Volume 4, Number 4 of The Rainbow Magazine&lt;br /&gt;
 Page 281, under the segment title &amp;quot;Microware&#039;s Third Annual OS-9 Users Seminar&amp;quot;&lt;br /&gt;
 Mid-page, center column, there is a call-out that says:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;SysCall ... lets you program OS-9 system calls directly in your BASIC09 program.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Lower-right corner of the page, the last part of the 3rd column:&lt;br /&gt;
 &lt;br /&gt;
 Two Useful Routines&lt;br /&gt;
 &lt;br /&gt;
 We&#039;re printing two useful routines this month. SysCall is an assembly language subroutine designed to work&lt;br /&gt;
 with BASIC09. It lets you program OS-9 system calls directly in your BASIC09 program. One of the handiest&lt;br /&gt;
 tools you&#039;ll ever find, it was written by Robert Doggett at Microware.&lt;br /&gt;
 &lt;br /&gt;
 Also, we are presenting three BASIC09 procedures that show you how to create and use pipes. The procedure&lt;br /&gt;
 &amp;quot;POpen&amp;quot; creates a pipe by DUPEing one of the standard paths and using it as the path for the pipe that will&lt;br /&gt;
 go to or from the FORKed pipeline process. It uses SysCall.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;OutPipe&amp;quot; calls POpen to create a pipe to a spooler. The pipe lets the output of OutPipe be&lt;br /&gt;
 read and printed by the spooler. If you do not have a spooler program, you can open a path to any other&lt;br /&gt;
 program by changing the parameters in the RUN statement.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;InPipe&amp;quot; calls POpen to create a pipe from the OS-9 MDIR utility command to itself. InPipe can&lt;br /&gt;
 then read the standard output path from MDIR and display its output.&lt;br /&gt;
 &lt;br /&gt;
 Special thanks to Bill Pierce for finding this jewel and bringing it to this collection. The listing below&lt;br /&gt;
 appears exactly as it appears in the Rainbow&#039;s article on page 284. The extra comments between lines 00007&lt;br /&gt;
 and 00008 are mine. I made a correction to the procedure listing for filesize.&lt;br /&gt;
&lt;br /&gt;
 THE PROCEDURE SYSCALL&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 001&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00001        ***************************************&lt;br /&gt;
 00002        * SYSCALL - a powerful subroutine for use with Basic09&lt;br /&gt;
 00003        * A special thanks to Robert Doggett for writing this routine.&lt;br /&gt;
 00004        &lt;br /&gt;
 00005        * Basic09 calling suquence:&lt;br /&gt;
 00006        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00007        * DIM regs:Registers&lt;br /&gt;
              *&lt;br /&gt;
              * There is no DIM statement for code, which must be a BYTE or INTEGER value,&lt;br /&gt;
              * and a non-DIM&#039;d variable in Basic09 is either a type REAL or, with a $ as the&lt;br /&gt;
              * last character of the name, a 32-character STRING.&lt;br /&gt;
              * DIM code:BYTE&lt;br /&gt;
              *&lt;br /&gt;
 00008        * RUN SysCall(code,registers)&lt;br /&gt;
 00009        &lt;br /&gt;
 00010        * SysCall will allow you to execute ANY OS-9 System call from&lt;br /&gt;
 00011        * your Basic09 programs. BE WARNED!!! SysCall can be VERY&lt;br /&gt;
 00012        * dangerous, since it permits you to do things you may not want&lt;br /&gt;
 00013        * done during program execution (like format disks, write&lt;br /&gt;
 00014        * thousands of bytea all at once, and so on). However, it can&lt;br /&gt;
 00015        * also be very useful, IF you know what you are doing.&lt;br /&gt;
 00016        &lt;br /&gt;
 00017        * NOTE: This version of SysCall will cause a Basic09 runtime&lt;br /&gt;
 00018        * error to occur if your system call returns an error. This can&lt;br /&gt;
 00019        * be easily overcome, as noted below. If you do this, you&lt;br /&gt;
 00020        * must check &amp;quot;regs.CC&amp;quot; to see if a system error has occurred.&lt;br /&gt;
 00021        &lt;br /&gt;
 00022        * Here is an example of one possible use you may have for SysCall&lt;br /&gt;
 00023        *&lt;br /&gt;
 00024        * PROCEDURE filesize&lt;br /&gt;
 00025        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00026        * DIM regs:Registers&lt;br /&gt;
 00027        * DIM path,callcode:BYTE \(* or INTEGER *)&lt;br /&gt;
 00028        * OPEN #path,&amp;quot;test&amp;quot;:READ&lt;br /&gt;
 00029        * regs.A:=path&lt;br /&gt;
 00030        * regs.B:=2 \(* I$GetStt code *)&lt;br /&gt;
 00031        * RUN SysCall(callcode,regs)&lt;br /&gt;
 00032        * CLOSE #path&lt;br /&gt;
 00033        * PRINT USING &amp;quot;filesize = 0&#039;,2(h4)&amp;quot;,regs.X; regs.U&lt;br /&gt;
 00034        &lt;br /&gt;
 00035                           USE  /d0/defs/os9defs&lt;br /&gt;
 00421                           opt  1&lt;br /&gt;
 00422        &lt;br /&gt;
 00423        &lt;br /&gt;
 00424   0021          TYPE      set  SBRTN+ONJCT&lt;br /&gt;
 00425   0081          REVS      set  REENT+1&lt;br /&gt;
 00426   0000 87CD005E           mod  SyCalEnd,SyCalNam,TYPE,REVS,SyCalEnt,0&lt;br /&gt;
 00427   000D 53797343 SyCalNam  fcs  &amp;quot;SysCall&amp;quot;&lt;br /&gt;
 00428   0014 02                 fcb  2          edition number&lt;br /&gt;
 00429        &lt;br /&gt;
 00430   0038          E$Paras   equ  56         Basic09&#039;s parameter error code&lt;br /&gt;
 00431   103F          M.OS9     equ  $103F      OS-9 system call machine code&lt;br /&gt;
 00432   0039          M.RTS     equ  $39        rts machine code&lt;br /&gt;
 00433        &lt;br /&gt;
 00434 D 0000                    org  0          stacked variable&lt;br /&gt;
 00435 D 0000          Return    rmb  2          Return address&lt;br /&gt;
 00436 D 0002          PCount    rmb  2          number of params passed&lt;br /&gt;
 00437 D 0004          Function  rmb  4          OS-9 function code&lt;br /&gt;
 00438 D 0008          Regs      rmb  4          Register image&lt;br /&gt;
 00439        &lt;br /&gt;
 00440   0015 EC62     SyCalEnt  ldd  PCount,s   Get parameter count&lt;br /&gt;
 00441   0017 10830002           cmpd #2         exactly 2 parameters?&lt;br /&gt;
 00442   001B 263A               bne  ParamErr   abort if not&lt;br /&gt;
 00443   001D EC6A               ldd  Regs+2,s   check size of register image&lt;br /&gt;
 00444   001F 1083000A           cmpd #10        exactly 10 bytes?&lt;br /&gt;
 00445   0023 2632               bne  ParamErr   abort if not&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 002&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00446   0025 ECF804             ldd  [Function,S] get os-9 function code&lt;br /&gt;
 00447   0028 AE66               ldx  Function+2,S get size of function param&lt;br /&gt;
 00448   002A 301F               leax -1,X        INTEGER?&lt;br /&gt;
 00449   002C 2629               bne  ParamErr    abort if not&lt;br /&gt;
 00450   002E 1F98               tfr  B,A&lt;br /&gt;
 00451        &lt;br /&gt;
 00452        * Now you build your OS9 call and return from subroutine on&lt;br /&gt;
 00453        * stack (A)=OS9 function call&lt;br /&gt;
 00454        &lt;br /&gt;
 00455   0030 C639     SysCall   ldb  #M.RTS      get &amp;quot;rts&amp;quot; machine code&lt;br /&gt;
 00456   0032 3406               pshs D&lt;br /&gt;
 00457   0034 CC103F             ldd  #M.OS9      get OS-9 machine code&lt;br /&gt;
 00458   0037 3406               pshs D&lt;br /&gt;
 00459   0039 EE6C               ldu  Regs+4,S    get register image ptr&lt;br /&gt;
 00460   003B EC41               ldd  R$D,U       initialize regs for system call&lt;br /&gt;
 00461   003D AE44               ldx  R$X,U&lt;br /&gt;
 00462   003F 10AE46             ldy  R$Y,U&lt;br /&gt;
 00463   0042 EE48               ldu  R$U,U&lt;br /&gt;
 00464   0044 ADE4               jsr  0,S         execute system call&lt;br /&gt;
 00465   0046 3441               pshs CC,U        save CC,U&lt;br /&gt;
 00466   0048 EE6F               ldu  Regs+7,S&lt;br /&gt;
 00467   004A 3348               leau R$U,U&lt;br /&gt;
 00468   004C 363E               pshu A,B,DP,X,Y  return unpdatd regs to caller&lt;br /&gt;
 00469   004E 3512               puls A,X         get CC,U&lt;br /&gt;
 00470   0050 A7C2               sta  ,-U&lt;br /&gt;
 00471   0052 AF48               stx  R$U,U&lt;br /&gt;
 00472   0054 3264               leas 4,S         discard OS-9 call subroutine&lt;br /&gt;
 00473        &lt;br /&gt;
 00474        * If you want to eliminate the possibility of a runtime error&lt;br /&gt;
 00475        * remove the comment designator (*) from the next line&lt;br /&gt;
 00476        &lt;br /&gt;
 00477        * clrb&lt;br /&gt;
 00478   0056 39                 rts&lt;br /&gt;
 00479   0057 53        ParamErr comb             return carry set&lt;br /&gt;
 00480   0058 C638               ldb  #E$Param    Parameter error&lt;br /&gt;
 00481   005A 39                 rts&lt;br /&gt;
 00482        &lt;br /&gt;
 00483   005B B931F4             emod&lt;br /&gt;
 00484   005E           SyCalEnd equ  *&lt;br /&gt;
 &lt;br /&gt;
 00000 error(s)&lt;br /&gt;
 00000 warning(s)&lt;br /&gt;
 $005E 00094 program bytes generated&lt;br /&gt;
 $00E5 00229 data bytes allocated&lt;br /&gt;
 $1006 04102 bytes used for symbols&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6600</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6600"/>
		<updated>2013-11-29T19:35:17Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* SysCall Level 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
&lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
&lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
&lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
&lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
&lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
&lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 SysCall comparisons between OS-9 Level 2 and NOS-9 Level 1 and Level 2&lt;br /&gt;
 ===================&lt;br /&gt;
 The NitrOS-9 Level 1 and Level 2 versions of SysCall are identical. The OS-9&lt;br /&gt;
 Level 2 version has differences from the NitrOS-9 versions, as follows:&lt;br /&gt;
 &lt;br /&gt;
 Attributes/Revision byte 81 changed to 80&lt;br /&gt;
 Header Parity byte 7B changed to 7A&lt;br /&gt;
 CRC F37B74 changed to 8583E2&lt;br /&gt;
&lt;br /&gt;
=== Source Listings ===&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 2 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== SysCall Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 SysCall Listing&lt;br /&gt;
 November 1984, Volume 4, Number 4 of The Rainbow Magazine&lt;br /&gt;
 Page 281, under the segment title &amp;quot;Microware&#039;s Third Annual OS-9 Users Seminar&amp;quot;&lt;br /&gt;
 Mid-page, center column, there is a call-out that says:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;SysCall ... lets you program OS-9 system calls directly in your BASIC09 program.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Lower-right corner of the page, the last part of the 3rd column:&lt;br /&gt;
 &lt;br /&gt;
 Two Useful Routines&lt;br /&gt;
 &lt;br /&gt;
 We&#039;re printing two useful routines this month. SysCall is an assembly language subroutine designed to work&lt;br /&gt;
 with BASIC09. It lets you program OS-9 system calls directly in your BASIC09 program. One of the handiest&lt;br /&gt;
 tools you&#039;ll ever find, it was written by Robert Doggett at Microware.&lt;br /&gt;
 &lt;br /&gt;
 Also, we are presenting three BASIC09 procedures that show you how to create and use pipes. The procedure&lt;br /&gt;
 &amp;quot;POpen&amp;quot; creates a pipe by DUPEing one of the standard paths and using it as the path for the pipe that will&lt;br /&gt;
 go to or from the FORKed pipeline process. It uses SysCall.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;OutPipe&amp;quot; calls POpen to create a pipe to a spooler. The pipe lets the output of OutPipe be&lt;br /&gt;
 read and printed by the spooler. If you do not have a spooler program, you can open a path to any other&lt;br /&gt;
 program by changing the parameters in the RUN statement.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;InPipe&amp;quot; calls POpen to create a pipe from the OS-9 MDIR utility command to itself. InPipe can&lt;br /&gt;
 then read the standard output path from MDIR and display its output.&lt;br /&gt;
 &lt;br /&gt;
 Special thanks to Bill Pierce for finding this jewel and bringing it to this collection. The listing below&lt;br /&gt;
 appears exactly as it appears in the Rainbow&#039;s article on page 284. The extra comments between lines 00007&lt;br /&gt;
 and 00008 are mine. I made a correction to the procedure listing for filesize.&lt;br /&gt;
&lt;br /&gt;
 THE PROCEDURE SYSCALL&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 001&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00001        ***************************************&lt;br /&gt;
 00002        * SYSCALL - a powerful subroutine for use with Basic09&lt;br /&gt;
 00003        * A special thanks to Robert Doggett for writing this routine.&lt;br /&gt;
 00004        &lt;br /&gt;
 00005        * Basic09 calling suquence:&lt;br /&gt;
 00006        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00007        * DIM regs:Registers&lt;br /&gt;
              *&lt;br /&gt;
              * There is no DIM statement for code, which must be a BYTE or INTEGER value,&lt;br /&gt;
              * and a non-DIM&#039;d variable in Basic09 is either a type REAL or, with a $ as the&lt;br /&gt;
              * last character of the name, a 32-character STRING.&lt;br /&gt;
              * DIM code:BYTE&lt;br /&gt;
              *&lt;br /&gt;
 00008        * RUN SysCall(code,registers)&lt;br /&gt;
 00009        &lt;br /&gt;
 00010        * SysCall will allow you to execute ANY OS-9 System call from&lt;br /&gt;
 00011        * your Basic09 programs. BE WARNED!!! SysCall can be VERY&lt;br /&gt;
 00012        * dangerous, since it permits you to do things you may not want&lt;br /&gt;
 00013        * done during program execution (like format disks, write&lt;br /&gt;
 00014        * thousands of bytea all at once, and so on). However, it can&lt;br /&gt;
 00015        * also be very useful, IF you know what you are doing.&lt;br /&gt;
 00016        &lt;br /&gt;
 00017        * NOTE: This version of SysCall will cause a Basic09 runtime&lt;br /&gt;
 00018        * error to occur if your system call returns an error. This can&lt;br /&gt;
 00019        * be easily overcome, as noted below. If you do this, you&lt;br /&gt;
 00020        * must check &amp;quot;regs.CC&amp;quot; to see if a system error has occurred.&lt;br /&gt;
 00021        &lt;br /&gt;
 00022        * Here is an example of one possible use you may have for SysCall&lt;br /&gt;
 00023        *&lt;br /&gt;
 00024        * PROCEDURE filesize&lt;br /&gt;
 00025        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00026        * DIM regs:Registers&lt;br /&gt;
 00027        * DIM path,callcode:BYTE \(* or INTEGER *)&lt;br /&gt;
 00028        * OPEN #path,&amp;quot;test&amp;quot;:READ&lt;br /&gt;
 00029        * regs.A:=path&lt;br /&gt;
 00030        * regs.B:=2 \(* I$GetStt code *)&lt;br /&gt;
 00031        * RUN SysCall(callcode,regs)&lt;br /&gt;
 00032        * CLOSE #path&lt;br /&gt;
 00033        * PRINT USING &amp;quot;filesize = 0&#039;,2(h4)&amp;quot;,regs.X; regs.U&lt;br /&gt;
 00034        &lt;br /&gt;
 00035                           USE  /d0/defs/os9defs&lt;br /&gt;
 00421                           opt  1&lt;br /&gt;
 00422        &lt;br /&gt;
 00423        &lt;br /&gt;
 00424   0021          TYPE      set  SBRTN+ONJCT&lt;br /&gt;
 00425   0081          REVS      set  REENT+1&lt;br /&gt;
 00426   0000 87CD005E           mod  SyCalEnd,SyCalNam,TYPE,REVS,SyCalEnt,0&lt;br /&gt;
 00427   000D 53797343 SyCalNam  fcs  &amp;quot;SysCall&amp;quot;&lt;br /&gt;
 00428   0014 02                 fcb  2          edition number&lt;br /&gt;
 00429        &lt;br /&gt;
 00430   0038          E$Paras   equ  56         Basic09&#039;s parameter error code&lt;br /&gt;
 00431   103F          M.OS9     equ  $103F      OS-9 system call machine code&lt;br /&gt;
 00432   0039          M.RTS     equ  $39        rts machine code&lt;br /&gt;
 00433        &lt;br /&gt;
 00434 D 0000                    org  0          stacked variable&lt;br /&gt;
 00435 D 0000          Return    rmb  2          Return address&lt;br /&gt;
 00436 D 0002          PCount    rmb  2          number of params passed&lt;br /&gt;
 00437 D 0004          Function  rmb  4          OS-9 function code&lt;br /&gt;
 00438 D 0008          Regs      rmb  4          Register image&lt;br /&gt;
 00439        &lt;br /&gt;
 00440   0015 EC62     SyCalEnt  ldd  PCount,s   Get parameter count&lt;br /&gt;
 00441   0017 10830002           cmpd #2         exactly 2 parameters?&lt;br /&gt;
 00442   001B 263A               bne  ParamErr   abort if not&lt;br /&gt;
 00443   001D EC6A               ldd  Regs+2,s   check size of register image&lt;br /&gt;
 00444   001F 1083000A           cmpd #10        exactly 10 bytes?&lt;br /&gt;
 00445   0023 2632               bne  ParamErr   abort if not&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 002&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00446   0025 ECF804             ldd  [Function,S] get os-9 function code&lt;br /&gt;
 00447   0028 AE66               ldx  Function+2,S get size of function param&lt;br /&gt;
 00448   002A 301F               leax -1,X        INTEGER?&lt;br /&gt;
 00449   002C 2629               bne  ParamErr    abort if not&lt;br /&gt;
 00450   002E 1F98               tfr  B,A&lt;br /&gt;
 00451        &lt;br /&gt;
 00452        * Now you build your OS9 call and return from subroutine on&lt;br /&gt;
 00453        * stack (A)=OS9 function call&lt;br /&gt;
 00454        &lt;br /&gt;
 00455   0030 C639     SysCall   ldb  #M.RTS      get &amp;quot;rts&amp;quot; machine code&lt;br /&gt;
 00456   0032 3406               pshs D&lt;br /&gt;
 00457   0034 CC103F             ldd  #M.OS9      get OS-9 machine code&lt;br /&gt;
 00458   0037 3406               pshs D&lt;br /&gt;
 00459   0039 EE6C               ldu  Regs+4,S    get register image ptr&lt;br /&gt;
 00460   003B EC41               ldd  R$D,U       initialize regs for system call&lt;br /&gt;
 00461   003D AE44               ldx  R$X,U&lt;br /&gt;
 00462   003F 10AE46             ldy  R$Y,U&lt;br /&gt;
 00463   0042 EE48               ldu  R$U,U&lt;br /&gt;
 00464   0044 ADE4               jsr  0,S         execute system call&lt;br /&gt;
 00465   0046 3441               pshs CC,U        save CC,U&lt;br /&gt;
 00466   0048 EE6F               ldu  Regs+7,S&lt;br /&gt;
 00467   004A 3348               leau R$U,U&lt;br /&gt;
 00468   004C 363E               pshu A,B,DP,X,Y  return unpdatd regs to caller&lt;br /&gt;
 00469   004E 3512               puls A,X         get CC,U&lt;br /&gt;
 00470   0050 A7C2               sta  ,-U&lt;br /&gt;
 00471   0052 AF48               stx  R$U,U&lt;br /&gt;
 00472   0054 3264               leas 4,S         discard OS-9 call subroutine&lt;br /&gt;
 00473        &lt;br /&gt;
 00474        * If you want to eliminate the possibility of a runtime error&lt;br /&gt;
 00475        * remove the comment designator (*) from the next line&lt;br /&gt;
 00476        &lt;br /&gt;
 00477        * clrb&lt;br /&gt;
 00478   0056 39                 rts&lt;br /&gt;
 00479   0057 53        ParamErr comb             return carry set&lt;br /&gt;
 00480   0058 C638               ldb  #E$Param    Parameter error&lt;br /&gt;
 00481   005A 39                 rts&lt;br /&gt;
 00482        &lt;br /&gt;
 00483   005B B931F4             emod&lt;br /&gt;
 00484   005E           SyCalEnd equ  *&lt;br /&gt;
 &lt;br /&gt;
 00000 error(s)&lt;br /&gt;
 00000 warning(s)&lt;br /&gt;
 $005E 00094 program bytes generated&lt;br /&gt;
 $00E5 00229 data bytes allocated&lt;br /&gt;
 $1006 04102 bytes used for symbols&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6599</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6599"/>
		<updated>2013-11-29T19:32:18Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* SysCall Level 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
&lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
&lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
&lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
&lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
&lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
&lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 SysCall comparisons between OS-9 Level 2 and NOS-9 Level 1 and Level 2&lt;br /&gt;
 ===================&lt;br /&gt;
 The NitrOS-9 Level 1 and Level 2 versions of SysCall are identical. The OS-9&lt;br /&gt;
 Level 2 version has differences from the NitrOS-9 versions, as follows:&lt;br /&gt;
 &lt;br /&gt;
 Attributes/Revision byte 81 changed to 80&lt;br /&gt;
 Header Parity byte 7B changed to 7A&lt;br /&gt;
 CRC F37B74 changed to 8583E2&lt;br /&gt;
&lt;br /&gt;
=== Source Listings ===&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 2 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== SysCall Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 SysCall Listing&lt;br /&gt;
 November 1984, Volume 4, Number 4 of The Rainbow Magazine&lt;br /&gt;
 Page 281, under the segment title &amp;quot;Microware&#039;s Third Annual OS-9 Users Seminar&amp;quot;&lt;br /&gt;
 Mid-page, center column, there is a call-out that says:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;SysCall ... lets you program OS-9 system calls directly in your BASIC09 program.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Lower-right corner of the page, the last part of the 3rd column:&lt;br /&gt;
 &lt;br /&gt;
 Two Useful Routines&lt;br /&gt;
 &lt;br /&gt;
 We&#039;re printing two useful routines this month. SysCall is an assembly language subroutine designed to work&lt;br /&gt;
 with BASIC09. It lets you program OS-9 system calls directly in your BASIC09 program. One of the handiest&lt;br /&gt;
 tools you&#039;ll ever find, it was written by Robert Doggett at Microware.&lt;br /&gt;
 &lt;br /&gt;
 Also, we are presenting three BASIC09 procedures that show you how to create and use pipes. The procedure&lt;br /&gt;
 &amp;quot;POpen&amp;quot; creates a pipe by DUPEing one of the standard paths and using it as the path for the pipe that will&lt;br /&gt;
 go to or from the FORKed pipeline process. It uses SysCall.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;OutPipe&amp;quot; calls POpen to create a pipe to a spooler. The pipe lets the output of OutPipe be&lt;br /&gt;
 read and printed by the spooler. If you do not have a spooler program, you can open a path to any other&lt;br /&gt;
 program by changing the parameters in the RUN statement.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;InPipe&amp;quot; calls POpen to create a pipe from the OS-9 MDIR utility command to itself. InPipe can&lt;br /&gt;
 then read the standard output path from MDIR and display its output.&lt;br /&gt;
 &lt;br /&gt;
 Special thanks to Bill Pierce for finding this jewel and bringing it to this collection. The listing below&lt;br /&gt;
 appears exactly as it appears in the Rainbow&#039;s article on page 284. The extra comments between lines 00007&lt;br /&gt;
 and 00007 are mine. I made a correction to the procedure listing for filesize.&lt;br /&gt;
&lt;br /&gt;
 THE PROCEDURE SYSCALL&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 001&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00001        ***************************************&lt;br /&gt;
 00002        * SYSCALL - a powerful subroutine for use with Basic09&lt;br /&gt;
 00003        * A special thanks to Robert Doggett for writing this routine.&lt;br /&gt;
 00004        &lt;br /&gt;
 00005        * Basic09 calling suquence:&lt;br /&gt;
 00006        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00007        * DIM regs:Registers&lt;br /&gt;
              *&lt;br /&gt;
              * There is no DIM statement for code, which must be a BYTE or INTEGER value,&lt;br /&gt;
              * and a non-DIM&#039;d variable in Basic09 is either a type REAL or, with a $ as the&lt;br /&gt;
              * last character of the name, a 32-character STRING.&lt;br /&gt;
              * DIM code:BYTE&lt;br /&gt;
              *&lt;br /&gt;
 00008        * RUN SysCall(code,registers)&lt;br /&gt;
 00009        &lt;br /&gt;
 00010        * SysCall will allow you to execute ANY OS-9 System call from&lt;br /&gt;
 00011        * your Basic09 programs. BE WARNED!!! SysCall can be VERY&lt;br /&gt;
 00012        * dangerous, since it permits you to do things you may not want&lt;br /&gt;
 00013        * done during program execution (like format disks, write&lt;br /&gt;
 00014        * thousands of bytea all at once, and so on). However, it can&lt;br /&gt;
 00015        * also be very useful, IF you know what you are doing.&lt;br /&gt;
 00016        &lt;br /&gt;
 00017        * NOTE: This version of SysCall will cause a Basic09 runtime&lt;br /&gt;
 00018        * error to occur if your system call returns an error. This can&lt;br /&gt;
 00019        * be easily overcome, as noted below. If you do this, you&lt;br /&gt;
 00020        * must check &amp;quot;regs.CC&amp;quot; to see if a system error has occurred.&lt;br /&gt;
 00021        &lt;br /&gt;
 00022        * Here is an example of one possible use you may have for SysCall&lt;br /&gt;
 00023        *&lt;br /&gt;
 00024        * PROCEDURE filesize&lt;br /&gt;
 00025        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00026        * DIM regs:Registers&lt;br /&gt;
 00027        * DIM path,callcode:BYTE \(* or INTEGER *)&lt;br /&gt;
 00028        * OPEN #path,&amp;quot;test&amp;quot;:READ&lt;br /&gt;
 00029        * regs.A:=path&lt;br /&gt;
 00030        * regs.B:=2 \(* I$GetStt code *)&lt;br /&gt;
 00031        * RUN SysCall(callcode,regs)&lt;br /&gt;
 00032        * CLOSE #path&lt;br /&gt;
 00033        * PRINT USING &amp;quot;filesize = 0&#039;,2(h4)&amp;quot;,regs.X; regs.U&lt;br /&gt;
 00034        &lt;br /&gt;
 00035                           USE  /d0/defs/os9defs&lt;br /&gt;
 00421                           opt  1&lt;br /&gt;
 00422        &lt;br /&gt;
 00423        &lt;br /&gt;
 00424   0021          TYPE      set  SBRTN+ONJCT&lt;br /&gt;
 00425   0081          REVS      set  REENT+1&lt;br /&gt;
 00426   0000 87CD005E           mod  SyCalEnd,SyCalNam,TYPE,REVS,SyCalEnt,0&lt;br /&gt;
 00427   000D 53797343 SyCalNam  fcs  &amp;quot;SysCall&amp;quot;&lt;br /&gt;
 00428   0014 02                 fcb  2          edition number&lt;br /&gt;
 00429        &lt;br /&gt;
 00430   0038          E$Paras   equ  56         Basic09&#039;s parameter error code&lt;br /&gt;
 00431   103F          M.OS9     equ  $103F      OS-9 system call machine code&lt;br /&gt;
 00432   0039          M.RTS     equ  $39        rts machine code&lt;br /&gt;
 00433        &lt;br /&gt;
 00434 D 0000                    org  0          stacked variable&lt;br /&gt;
 00435 D 0000          Return    rmb  2          Return address&lt;br /&gt;
 00436 D 0002          PCount    rmb  2          number of params passed&lt;br /&gt;
 00437 D 0004          Function  rmb  4          OS-9 function code&lt;br /&gt;
 00438 D 0008          Regs      rmb  4          Register image&lt;br /&gt;
 00439        &lt;br /&gt;
 00440   0015 EC62     SyCalEnt  ldd  PCount,s   Get parameter count&lt;br /&gt;
 00441   0017 10830002           cmpd #2         exactly 2 parameters?&lt;br /&gt;
 00442   001B 263A               bne  ParamErr   abort if not&lt;br /&gt;
 00443   001D EC6A               ldd  Regs+2,s   check size of register image&lt;br /&gt;
 00444   001F 1083000A           cmpd #10        exactly 10 bytes?&lt;br /&gt;
 00445   0023 2632               bne  ParamErr   abort if not&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 002&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00446   0025 ECF804             ldd  [Function,S] get os-9 function code&lt;br /&gt;
 00447   0028 AE66               ldx  Function+2,S get size of function param&lt;br /&gt;
 00448   002A 301F               leax -1,X        INTEGER?&lt;br /&gt;
 00449   002C 2629               bne  ParamErr    abort if not&lt;br /&gt;
 00450   002E 1F98               tfr  B,A&lt;br /&gt;
 00451        &lt;br /&gt;
 00452        * Now you build your OS9 call and return from subroutine on&lt;br /&gt;
 00453        * stack (A)=OS9 function call&lt;br /&gt;
 00454        &lt;br /&gt;
 00455   0030 C639     SysCall   ldb  #M.RTS      get &amp;quot;rts&amp;quot; machine code&lt;br /&gt;
 00456   0032 3406               pshs D&lt;br /&gt;
 00457   0034 CC103F             ldd  #M.OS9      get OS-9 machine code&lt;br /&gt;
 00458   0037 3406               pshs D&lt;br /&gt;
 00459   0039 EE6C               ldu  Regs+4,S    get register image ptr&lt;br /&gt;
 00460   003B EC41               ldd  R$D,U       initialize regs for system call&lt;br /&gt;
 00461   003D AE44               ldx  R$X,U&lt;br /&gt;
 00462   003F 10AE46             ldy  R$Y,U&lt;br /&gt;
 00463   0042 EE48               ldu  R$U,U&lt;br /&gt;
 00464   0044 ADE4               jsr  0,S         execute system call&lt;br /&gt;
 00465   0046 3441               pshs CC,U        save CC,U&lt;br /&gt;
 00466   0048 EE6F               ldu  Regs+7,S&lt;br /&gt;
 00467   004A 3348               leau R$U,U&lt;br /&gt;
 00468   004C 363E               pshu A,B,DP,X,Y  return unpdatd regs to caller&lt;br /&gt;
 00469   004E 3512               puls A,X         get CC,U&lt;br /&gt;
 00470   0050 A7C2               sta  ,-U&lt;br /&gt;
 00471   0052 AF48               stx  R$U,U&lt;br /&gt;
 00472   0054 3264               leas 4,S         discard OS-9 call subroutine&lt;br /&gt;
 00473        &lt;br /&gt;
 00474        * If you want to eliminate the possibility of a runtime error&lt;br /&gt;
 00475        * remove the comment designator (*) from the next line&lt;br /&gt;
 00476        &lt;br /&gt;
 00477        * clrb&lt;br /&gt;
 00478   0056 39                 rts&lt;br /&gt;
 00479   0057 53        ParamErr comb             return carry set&lt;br /&gt;
 00480   0058 C638               ldb  #E$Param    Parameter error&lt;br /&gt;
 00481   005A 39                 rts&lt;br /&gt;
 00482        &lt;br /&gt;
 00483   005B B931F4             emod&lt;br /&gt;
 00484   005E           SyCalEnd equ  *&lt;br /&gt;
 &lt;br /&gt;
 00000 error(s)&lt;br /&gt;
 00000 warning(s)&lt;br /&gt;
 $005E 00094 program bytes generated&lt;br /&gt;
 $00E5 00229 data bytes allocated&lt;br /&gt;
 $1006 04102 bytes used for symbols&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6598</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6598"/>
		<updated>2013-11-29T19:08:11Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* SysCall Level 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
&lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
&lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
&lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
&lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
&lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
&lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 SysCall comparisons between OS-9 Level 2 and NOS-9 Level 1 and Level 2&lt;br /&gt;
 ===================&lt;br /&gt;
 The NitrOS-9 Level 1 and Level 2 versions of SysCall are identical. The OS-9&lt;br /&gt;
 Level 2 version has differences from the NitrOS-9 versions, as follows:&lt;br /&gt;
 &lt;br /&gt;
 Attributes/Revision byte 81 changed to 80&lt;br /&gt;
 Header Parity byte 7B changed to 7A&lt;br /&gt;
 CRC F37B74 changed to 8583E2&lt;br /&gt;
&lt;br /&gt;
=== Source Listings ===&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 2 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== SysCall Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 SysCall Listing&lt;br /&gt;
 November 1984, Volume 4, Number 4 of The Rainbow Magazine&lt;br /&gt;
 Page 281, under the segment title &amp;quot;Microware&#039;s Third Annual OS-9 Users Seminar&amp;quot;&lt;br /&gt;
 Mid-page, center column, there is a call-out that says:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;SysCall ... lets you program OS-9 system calls directly in your BASIC09 program.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Lower-right corner of the page, the last part of the 3rd column:&lt;br /&gt;
 &lt;br /&gt;
 Two Useful Routines&lt;br /&gt;
 &lt;br /&gt;
 We&#039;re printing two useful routines this month. SysCall is an assembly language subroutine designed to work&lt;br /&gt;
 with BASIC09. It lets you program OS-9 system calls directly in your BASIC09 program. One of the handiest&lt;br /&gt;
 tools you&#039;ll ever find, it was written by Robert Doggett at Microware.&lt;br /&gt;
 &lt;br /&gt;
 Also, we are presenting three BASIC09 procedures that show you how to create and use pipes. The procedure&lt;br /&gt;
 &amp;quot;POpen&amp;quot; creates a pipe by DUPEing one of the standard paths and using it as the path for the pipe that will&lt;br /&gt;
 go to or from the FORKed pipeline process. It uses SysCall.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;OutPipe&amp;quot; calls POpen to create a pipe to a spooler. The pipe lets the output of OutPipe be&lt;br /&gt;
 read and printed by the spooler. If you do not have a spooler program, you can open a path to any other&lt;br /&gt;
 program by changing the parameters in the RUN statement.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;InPipe&amp;quot; calls POpen to create a pipe from the OS-9 MDIR utility command to itself. InPipe can&lt;br /&gt;
 then read the standard output path from MDIR and display its output.&lt;br /&gt;
 &lt;br /&gt;
 Special thanks to Bill Pierce for finding this jewel and bringing it to this collection. The listing below&lt;br /&gt;
 appears exactly as it appears in the Rainbow&#039;s article on page 284. The extra comments between lines 00007 and 00007 are mine. I made a correction to the procedure listing for filesize.&lt;br /&gt;
&lt;br /&gt;
 THE PROCEDURE SYSCALL&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 001&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00001        ***************************************&lt;br /&gt;
 00002        * SYSCALL - a powerful subroutine for use with Basic09&lt;br /&gt;
 00003        * A special thanks to Robert Doggett for writing this routine.&lt;br /&gt;
 00004        &lt;br /&gt;
 00005        * Basic09 calling suquence:&lt;br /&gt;
 00006        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00007        * DIM regs:Registers&lt;br /&gt;
              *&lt;br /&gt;
              * There is no DIM statement for code, which must be a BYTE or INTEGER value,&lt;br /&gt;
              * and a non-DIM&#039;d variable in Basic09 is either a type REAL or, with a $ as the&lt;br /&gt;
              * last character of the name, a 32-character STRING.&lt;br /&gt;
              * DIM code:BYTE&lt;br /&gt;
              *&lt;br /&gt;
 00008        * RUN SysCall(code,registers)&lt;br /&gt;
 00009        &lt;br /&gt;
 00010        * SysCall will allow you to execute ANY OS-9 System call from&lt;br /&gt;
 00011        * your Basic09 programs. BE WARNED!!! SysCall can be VERY&lt;br /&gt;
 00012        * dangerous, since it permits you to do things you may not want&lt;br /&gt;
 00013        * done during program execution (like format disks, write&lt;br /&gt;
 00014        * thousands of bytea all at once, and so on). However, it can&lt;br /&gt;
 00015        * also be very useful, IF you know what you are doing.&lt;br /&gt;
 00016        &lt;br /&gt;
 00017        * NOTE: This version of SysCall will cause a Basic09 runtime&lt;br /&gt;
 00018        * error to occur if your system call returns an error. This can&lt;br /&gt;
 00019        * be easily overcome, as noted below. If you do this, you&lt;br /&gt;
 00020        * must check &amp;quot;regs.CC&amp;quot; to see if a system error has occurred.&lt;br /&gt;
 00021        &lt;br /&gt;
 00022        * Here is an example of one possible use you may have for SysCall&lt;br /&gt;
 00023        *&lt;br /&gt;
 00024        * PROCEDURE filesize&lt;br /&gt;
 00025        * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 00026        * DIM regs:Registers&lt;br /&gt;
 00027        * DIM path,callcode:BYTE \(* or INTEGER *)&lt;br /&gt;
 00028        * OPEN #path,&amp;quot;test&amp;quot;:READ&lt;br /&gt;
 00029        * regs.A:=path&lt;br /&gt;
 00030        * regs.B:=2 \(* I$GetStt code *)&lt;br /&gt;
 00031        * RUN SysCall(callcode,regs)&lt;br /&gt;
 00032        * CLOSE #path&lt;br /&gt;
 00033        * PRINT USING &amp;quot;filesize = 0&#039;,2(h4)&amp;quot;,regs.X; regs.U&lt;br /&gt;
 00034        &lt;br /&gt;
 00035                           USE  /d0/defs/os9defs&lt;br /&gt;
 00421                           opt  1&lt;br /&gt;
 00422        &lt;br /&gt;
 00423        &lt;br /&gt;
 00424   0021          TYPE      set  SBRTN+ONJCT&lt;br /&gt;
 00425   0081          REVS      set  REENT+1&lt;br /&gt;
 00426   0000 87CD005E           mod  SyCalEnd,SyCalNam,TYPE,REVS,SyCalEnt,0&lt;br /&gt;
 00427   000D 53797343 SyCalNam  fcs  &amp;quot;SysCall&amp;quot;&lt;br /&gt;
 00428   0014 02                 fcb  2          edition number&lt;br /&gt;
 00429        &lt;br /&gt;
 00430   0038          E$Paras   equ  56         Basic09&#039;s parameter error code&lt;br /&gt;
 00431   103F          M.OS9     equ  $103F      OS-9 system call machine code&lt;br /&gt;
 00432   0039          M.RTS     equ  $39        rts machine code&lt;br /&gt;
 00433        &lt;br /&gt;
 00434 D 0000                    org  0          stacked variable&lt;br /&gt;
 00435 D 0000          Return    rmb  2          Return address&lt;br /&gt;
 00436 D 0002          PCount    rmb  2          number of params passed&lt;br /&gt;
 00437 D 0004          Function  rmb  4          OS-9 function code&lt;br /&gt;
 00438 D 0008          Regs      rmb  4          Register image&lt;br /&gt;
 00439        &lt;br /&gt;
 00440   0015 EC62     SyCalEnt  ldd  PCount,s   Get parameter count&lt;br /&gt;
 00441   0017 10830002           cmpd #2         exactly 2 parameters?&lt;br /&gt;
 00442   001B 263A               bne  ParamErr   abort if not&lt;br /&gt;
 00443   001D EC6A               ldd  Regs+2,s   check size of register image&lt;br /&gt;
 00444   001F 1083000A           cmpd #10        exactly 10 bytes?&lt;br /&gt;
 00445   0023 2632               bne  ParamErr   abort if not&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33                       Page 002&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 00446   0025 ECF804             ldd  [Function,S] get os-9 function code&lt;br /&gt;
 00447   0028 AE66               ldx  Function+2,S get size of function param&lt;br /&gt;
 00448   002A 301F               leax -1,X        INTEGER?&lt;br /&gt;
 00449   002C 2629               bne  ParamErr    abort if not&lt;br /&gt;
 00450   002E 1F98               tfr  B,A&lt;br /&gt;
 00451        &lt;br /&gt;
 00452        * Now you build your OS9 call and return from subroutine on&lt;br /&gt;
 00453        * stack (A)=OS9 function call&lt;br /&gt;
 00454        &lt;br /&gt;
 00455   0030 C639     SysCall   ldb  #M.RTS      get &amp;quot;rts&amp;quot; machine code&lt;br /&gt;
 00456   0032 3406               pshs D&lt;br /&gt;
 00457   0034 CC103F             ldd  #M.OS9      get OS-9 machine code&lt;br /&gt;
 00458   0037 3406               pshs D&lt;br /&gt;
 00459   0039 EE6C               ldu  Regs+4,S    get register image ptr&lt;br /&gt;
 00460   003B EC41               ldd  R$D,U       initialize regs for system call&lt;br /&gt;
 00461   003D AE44               ldx  R$X,U&lt;br /&gt;
 00462   003F 10AE46             ldy  R$Y,U&lt;br /&gt;
 00463   0042 EE48               ldu  R$U,U&lt;br /&gt;
 00464   0044 ADE4               jsr  0,S         execute system call&lt;br /&gt;
 00465   0046 3441               pshs CC,U        save CC,U&lt;br /&gt;
 00466   0048 EE6F               ldu  Regs+7,S&lt;br /&gt;
 00467   004A 3348               leau R$U,U&lt;br /&gt;
 00468   004C 363E               pshu A,B,DP,X,Y  return unpdatd regs to caller&lt;br /&gt;
 00469   004E 3512               puls A,X         get CC,U&lt;br /&gt;
 00470   0050 A7C2               sta  ,-U&lt;br /&gt;
 00471   0052 AF48               stx  R$U,U&lt;br /&gt;
 00472   0054 3264               leas 4,S         discard OS-9 call subroutine&lt;br /&gt;
 00473        &lt;br /&gt;
 00474        * If you want to eliminate the possibility of a runtime error&lt;br /&gt;
 00475        * remove the comment designator (*) from the next line&lt;br /&gt;
 00476        &lt;br /&gt;
 00477        * clrb&lt;br /&gt;
 00478   0056 39                 rts&lt;br /&gt;
 00479   0057 53        ParamErr comb             return carry set&lt;br /&gt;
 00480   0058 C638               ldb  #E$Param    Parameter error&lt;br /&gt;
 00481   005A 39                 rts&lt;br /&gt;
 00482        &lt;br /&gt;
 00483   005B B931F4             emod&lt;br /&gt;
 00484   005E           SyCalEnd equ  *&lt;br /&gt;
 &lt;br /&gt;
 00000 error(s)&lt;br /&gt;
 00000 warning(s)&lt;br /&gt;
 $005E 00094 program bytes generated&lt;br /&gt;
 $00E5 00229 data bytes allocated&lt;br /&gt;
 $1006 04102 bytes used for symbols&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6597</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6597"/>
		<updated>2013-11-29T18:05:48Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Source Listings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
&lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
&lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
&lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
&lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
&lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
&lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 SysCall comparisons between OS-9 Level 2 and NOS-9 Level 1 and Level 2&lt;br /&gt;
 ===================&lt;br /&gt;
 The NitrOS-9 Level 1 and Level 2 versions of SysCall are identical. The OS-9&lt;br /&gt;
 Level 2 version has differences from the NitrOS-9 versions, as follows:&lt;br /&gt;
 &lt;br /&gt;
 Attributes/Revision byte 81 changed to 80&lt;br /&gt;
 Header Parity byte 7B changed to 7A&lt;br /&gt;
 CRC F37B74 changed to 8583E2&lt;br /&gt;
&lt;br /&gt;
=== Source Listings ===&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== Inkey Level 2 ====&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
==== SysCall Level 1 ====&lt;br /&gt;
&lt;br /&gt;
 SysCall Listing&lt;br /&gt;
 November 1984, Volume 4, Number 4 of The Rainbow Magazine&lt;br /&gt;
 Page 281, under the segment title &amp;quot;Microware&#039;s Third Annual OS-9 Users Seminar&amp;quot;&lt;br /&gt;
 Mid-page, center column, there is a call-out that says:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;SysCall ... lets you program OS-9 system calls directly in your BASIC09 program.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Lower-right corner of the page, the last part of the 3rd column:&lt;br /&gt;
 &lt;br /&gt;
 Two Useful Routines&lt;br /&gt;
 &lt;br /&gt;
 We&#039;re printing two useful routines this month. SysCall is an assembly language subroutine designed to work&lt;br /&gt;
 with BASIC09. It lets you program OS-9 system calls directly in your BASIC09 program. One of the handiest&lt;br /&gt;
 tools you&#039;ll ever find, it was written by Robert Doggett at Microware.&lt;br /&gt;
 &lt;br /&gt;
 Also, we are presenting three BASIC09 procedures that show you how to create and use pipes. The procedure&lt;br /&gt;
 &amp;quot;POpen&amp;quot; creates a pipe by DUPEing one of the standard paths and using it as the path for the pipe that will&lt;br /&gt;
 go to or from the FORKed pipeline process. It uses SysCall.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;OutPipe&amp;quot; calls POpen to create a pipe to a spooler. The pipe lets the output of OutPipe be&lt;br /&gt;
 read and printed by the spooler. If you do not have a spooler program, you can open a path to any other&lt;br /&gt;
 program by changing the parameters in the RUN statement.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;InPipe&amp;quot; calls POpen to create a pipe from the OS-9 MDIR utility command to itself. InPipe can&lt;br /&gt;
 then read the standard output path from MDIR and display its output.&lt;br /&gt;
 &lt;br /&gt;
 Special thanks to Bill Pierce for finding this jewel and bringing it to this collection. The listing below&lt;br /&gt;
 appears exactly as it appears in the Rainbow&#039;s article on page 284.&lt;br /&gt;
&lt;br /&gt;
 THE PROCEDURE SYSCALL&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33              Page 001&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 ***************************************&lt;br /&gt;
 * SYSCALL - a powerful subroutine for use with Basic09&lt;br /&gt;
 * A special thanks to Robert Doggett for writing this routine.&lt;br /&gt;
 &lt;br /&gt;
 * Basic09 calling suquence:&lt;br /&gt;
 * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 * DIM regs:Registers&lt;br /&gt;
 *&lt;br /&gt;
 * There is no DIM statement for code, which must be a BYTE or INTEGER value,&lt;br /&gt;
 * and a non-DIM&#039;d variable in Basic09 is either a type REAL or, with a $ as the&lt;br /&gt;
 * last character of the name, a 32-character STRING.&lt;br /&gt;
 * DIM code:BYTE&lt;br /&gt;
 *&lt;br /&gt;
 * RUN SysCall(code,registers)&lt;br /&gt;
 &lt;br /&gt;
 * SysCall will allow you to execute ANY OS-9 System call from&lt;br /&gt;
 * your Basic09 programs. BE WARNED!!! SysCall can be VERY&lt;br /&gt;
 * dangerous, since it permits you to do things you may not want&lt;br /&gt;
 * done during program execution (like format disks, write&lt;br /&gt;
 * thousands of bytea all at once, and so on). However, it can&lt;br /&gt;
 * also be very useful, IF you know what you are doing.&lt;br /&gt;
 &lt;br /&gt;
 * NOTE: This version of SysCall will cause a Basic09 runtime&lt;br /&gt;
 * error to occur if your system call returns an error. This can&lt;br /&gt;
 * be easily overcome, as noted below. If you do this, you&lt;br /&gt;
 * must check &amp;quot;regs.CC&amp;quot; to see if a system error has occurred.&lt;br /&gt;
 &lt;br /&gt;
 * Here is an example of one possible use you may have for SysCall&lt;br /&gt;
 *&lt;br /&gt;
 * PROCEDURE filesize&lt;br /&gt;
 * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 * DIM regs:Registers&lt;br /&gt;
 * DIM path,callcode:BYTE \(* or INTEGER *)&lt;br /&gt;
 * OPEN #path,&amp;quot;test&amp;quot;:READ&lt;br /&gt;
 * regs.A:=path&lt;br /&gt;
 * regs.B:=2 \(* I$GetStt code *)&lt;br /&gt;
 * RUN SysCall(callcode,regs)&lt;br /&gt;
 * CLOSE #path&lt;br /&gt;
 * PRINT USING &amp;quot;filesize = 0&#039;,2(h4)&amp;quot;,regs.X; regs.U&lt;br /&gt;
 &lt;br /&gt;
          USE /d0/defs/os9defs&lt;br /&gt;
          opt 1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 TYPE     set SBRTN+ONJCT&lt;br /&gt;
 REVS     set REENT+1&lt;br /&gt;
          mod SyCalEnd,SyCalNam,TYPE,REVS,SyCalEnt,0&lt;br /&gt;
 SyCalNam fcs &amp;quot;SysCall&amp;quot;&lt;br /&gt;
          fcb 2              Edition number&lt;br /&gt;
 &lt;br /&gt;
 E$Paras  equ 56             Basic09&#039;s parameter error code&lt;br /&gt;
 M.OS9    equ $103F          OS-9 system call machine code&lt;br /&gt;
 M.RTS    $39                rts machine code&lt;br /&gt;
 &lt;br /&gt;
          org 0              stacked variable&lt;br /&gt;
 Return   rmb 2              Return address&lt;br /&gt;
 PCount   rmb 2              number of params passed&lt;br /&gt;
 Function rmb 4              OS-9 function code&lt;br /&gt;
 Regs     rmb 4              Register image&lt;br /&gt;
 &lt;br /&gt;
 SyCalEnt ldd  PCount,s      Get parameter count&lt;br /&gt;
          cmpd #2            exactly 2 parameters?&lt;br /&gt;
          bne  ParamErr      abort if not&lt;br /&gt;
          ldd  Regs+2,s      check size of register image&lt;br /&gt;
          cmpd #10           exactly 10 bytes?&lt;br /&gt;
          bne  ParamErr      abort if not&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33              Page 002&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
          ldd [Function,S]   get os-9 function code&lt;br /&gt;
          ldx Function+2,S   get size of function param&lt;br /&gt;
          leax -1,X          INTEGER?&lt;br /&gt;
          bne ParamErr       abort if not&lt;br /&gt;
          tfr B,A&lt;br /&gt;
 &lt;br /&gt;
 * Now you build your OS9 call and return from subroutine on&lt;br /&gt;
 * stack (A)=OS9 function call&lt;br /&gt;
 &lt;br /&gt;
 SysCall  ldb #M.RTS         get &amp;quot;rts&amp;quot; machine code&lt;br /&gt;
          pshs D&lt;br /&gt;
          ldd #M.OS9         get OS-9 machine code&lt;br /&gt;
          pshs D&lt;br /&gt;
          ldu Regs+4,S       get register image ptr&lt;br /&gt;
          ldd R$D,U          initialize regs fo system call&lt;br /&gt;
          ldx R$X,U&lt;br /&gt;
          ldy R$Y,U&lt;br /&gt;
          ldu R$U,U&lt;br /&gt;
          jsr 0,S            execute system call&lt;br /&gt;
          pshs CC,U          save CC,U&lt;br /&gt;
          ldu Regs+7,S&lt;br /&gt;
          leau R$U,U&lt;br /&gt;
          pshu A,B,DP,X,Y    return unpdatd regs to caller&lt;br /&gt;
          puls A,X           get CC,U&lt;br /&gt;
          sta ,-U&lt;br /&gt;
          stx R$U,U&lt;br /&gt;
          leas 4,S           discard OS-9 call subroutine&lt;br /&gt;
 &lt;br /&gt;
 * If you want to eliminate the possibility of a runtime error&lt;br /&gt;
 * remove the comment designator (*) from the next line&lt;br /&gt;
 &lt;br /&gt;
 *        clrb&lt;br /&gt;
          rts&lt;br /&gt;
 ParamErr comb               return carry set&lt;br /&gt;
          ldb #E$Param       Parameter error&lt;br /&gt;
          rts&lt;br /&gt;
 SyCalEnd equ *&lt;br /&gt;
 &lt;br /&gt;
 00000 error(s)&lt;br /&gt;
 00000 warning(s)&lt;br /&gt;
 $005E 00094 program bytes generated&lt;br /&gt;
 $00E5 00229 data bytes allocated&lt;br /&gt;
 $1006 04102 bytes used for symbols&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6596</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6596"/>
		<updated>2013-11-29T18:01:02Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Source Listings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
&lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
&lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
&lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
&lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
&lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
&lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 SysCall comparisons between OS-9 Level 2 and NOS-9 Level 1 and Level 2&lt;br /&gt;
 ===================&lt;br /&gt;
 The NitrOS-9 Level 1 and Level 2 versions of SysCall are identical. The OS-9&lt;br /&gt;
 Level 2 version has differences from the NitrOS-9 versions, as follows:&lt;br /&gt;
 &lt;br /&gt;
 Attributes/Revision byte 81 changed to 80&lt;br /&gt;
 Header Parity byte 7B changed to 7A&lt;br /&gt;
 CRC F37B74 changed to 8583E2&lt;br /&gt;
&lt;br /&gt;
=== Source Listings ===&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
 SysCall Listing&lt;br /&gt;
 November 1984, Volume 4, Number 4 of The Rainbow Magazine&lt;br /&gt;
 Page 281, under the segment title &amp;quot;Microware&#039;s Third Annual OS-9 Users Seminar&amp;quot;&lt;br /&gt;
 Mid-page, center column, there is a call-out that says:&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;SysCall ... lets you program OS-9 system calls directly in your BASIC09 program.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Lower-right corner of the page, the last part of the 3rd column:&lt;br /&gt;
 &lt;br /&gt;
 Two Useful Routines&lt;br /&gt;
 &lt;br /&gt;
 We&#039;re printing two useful routines this month. SysCall is an assembly language subroutine designed to work&lt;br /&gt;
 with BASIC09. It lets you program OS-9 system calls directly in your BASIC09 program. One of the handiest&lt;br /&gt;
 tools you&#039;ll ever find, it was written by Robert Doggett at Microware.&lt;br /&gt;
 &lt;br /&gt;
 Also, we are presenting three BASIC09 procedures that show you how to create and use pipes. The procedure&lt;br /&gt;
 &amp;quot;POpen&amp;quot; creates a pipe by DUPEing one of the standard paths and using it as the path for the pipe that will&lt;br /&gt;
 go to or from the FORKed pipeline process. It uses SysCall.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;OutPipe&amp;quot; calls POpen to create a pipe to a spooler. The pipe lets the output of OutPipe be&lt;br /&gt;
 read and printed by the spooler. If you do not have a spooler program, you can open a path to any other&lt;br /&gt;
 program by changing the parameters in the RUN statement.&lt;br /&gt;
 &lt;br /&gt;
 The procedure &amp;quot;InPipe&amp;quot; calls POpen to create a pipe from the OS-9 MDIR utility command to itself. InPipe can&lt;br /&gt;
 then read the standard output path from MDIR and display its output.&lt;br /&gt;
 &lt;br /&gt;
 Special thanks to Bill Pierce for finding this jewel and bringing it to this collection. The listing below&lt;br /&gt;
 appears exactly as it appears in the Rainbow&#039;s article on page 284.&lt;br /&gt;
&lt;br /&gt;
 THE PROCEDURE SYSCALL&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33              Page 001&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 ***************************************&lt;br /&gt;
 * SYSCALL - a powerful subroutine for use with Basic09&lt;br /&gt;
 * A special thanks to Robert Doggett for writing this routine.&lt;br /&gt;
 &lt;br /&gt;
 * Basic09 calling suquence:&lt;br /&gt;
 * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 * DIM regs:Registers&lt;br /&gt;
 *&lt;br /&gt;
 * There is no DIM statement for code, which must be a BYTE or INTEGER value,&lt;br /&gt;
 * and a non-DIM&#039;d variable in Basic09 is either a type REAL or, with a $ as the&lt;br /&gt;
 * last character of the name, a 32-character STRING.&lt;br /&gt;
 * DIM code:BYTE&lt;br /&gt;
 *&lt;br /&gt;
 * RUN SysCall(code,registers)&lt;br /&gt;
 &lt;br /&gt;
 * SysCall will allow you to execute ANY OS-9 System call from&lt;br /&gt;
 * your Basic09 programs. BE WARNED!!! SysCall can be VERY&lt;br /&gt;
 * dangerous, since it permits you to do things you may not want&lt;br /&gt;
 * done during program execution (like format disks, write&lt;br /&gt;
 * thousands of bytea all at once, and so on). However, it can&lt;br /&gt;
 * also be very useful, IF you know what you are doing.&lt;br /&gt;
 &lt;br /&gt;
 * NOTE: This version of SysCall will cause a Basic09 runtime&lt;br /&gt;
 * error to occur if your system call returns an error. This can&lt;br /&gt;
 * be easily overcome, as noted below. If you do this, you&lt;br /&gt;
 * must check &amp;quot;regs.CC&amp;quot; to see if a system error has occurred.&lt;br /&gt;
 &lt;br /&gt;
 * Here is an example of one possible use you may have for SysCall&lt;br /&gt;
 *&lt;br /&gt;
 * PROCEDURE filesize&lt;br /&gt;
 * TYPE Registers=CC,A,B,DP:BYTE; X,Y,U:INTEGER&lt;br /&gt;
 * DIM regs:Registers&lt;br /&gt;
 * DIM path,callcode:BYTE \(* or INTEGER *)&lt;br /&gt;
 * OPEN #path,&amp;quot;test&amp;quot;:READ&lt;br /&gt;
 * regs.A:=path&lt;br /&gt;
 * regs.B:=2 \(* I$GetStt code *)&lt;br /&gt;
 * RUN SysCall(callcode,regs)&lt;br /&gt;
 * CLOSE #path&lt;br /&gt;
 * PRINT USING &amp;quot;filesize = 0&#039;,2(h4)&amp;quot;,regs.X; regs.U&lt;br /&gt;
 &lt;br /&gt;
          USE /d0/defs/os9defs&lt;br /&gt;
          opt 1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 TYPE     set SBRTN+ONJCT&lt;br /&gt;
 REVS     set REENT+1&lt;br /&gt;
          mod SyCalEnd,SyCalNam,TYPE,REVS,SyCalEnt,0&lt;br /&gt;
 SyCalNam fcs &amp;quot;SysCall&amp;quot;&lt;br /&gt;
          fcb 2              Edition number&lt;br /&gt;
 &lt;br /&gt;
 E$Paras  equ 56             Basic09&#039;s parameter error code&lt;br /&gt;
 M.OS9    equ $103F          OS-9 system call machine code&lt;br /&gt;
 M.RTS    $39                rts machine code&lt;br /&gt;
 &lt;br /&gt;
          org 0              stacked variable&lt;br /&gt;
 Return   rmb 2              Return address&lt;br /&gt;
 PCount   rmb 2              number of params passed&lt;br /&gt;
 Function rmb 4              OS-9 function code&lt;br /&gt;
 Regs     rmb 4              Register image&lt;br /&gt;
 &lt;br /&gt;
 SyCalEnt ldd  PCount,s      Get parameter count&lt;br /&gt;
          cmpd #2            exactly 2 parameters?&lt;br /&gt;
          bne  ParamErr      abort if not&lt;br /&gt;
          ldd  Regs+2,s      check size of register image&lt;br /&gt;
          cmpd #10           exactly 10 bytes?&lt;br /&gt;
          bne  ParamErr      abort if not&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
 Microware OS-9 Assembler 2.1 09/05/84 22:32:33              Page 002&lt;br /&gt;
 - OS·9 System Symbol Definitions&lt;br /&gt;
 --------------- cut here ---------------&lt;br /&gt;
          ldd [Function,S]   get os-9 function code&lt;br /&gt;
          ldx Function+2,S   get size of function param&lt;br /&gt;
          leax -1,X          INTEGER?&lt;br /&gt;
          bne ParamErr       abort if not&lt;br /&gt;
          tfr B,A&lt;br /&gt;
 &lt;br /&gt;
 * Now you build your OS9 call and return from subroutine on&lt;br /&gt;
 * stack (A)=OS9 function call&lt;br /&gt;
 &lt;br /&gt;
 SysCall  ldb #M.RTS         get &amp;quot;rts&amp;quot; machine code&lt;br /&gt;
          pshs D&lt;br /&gt;
          ldd #M.OS9         get OS-9 machine code&lt;br /&gt;
          pshs D&lt;br /&gt;
          ldu Regs+4,S       get register image ptr&lt;br /&gt;
          ldd R$D,U          initialize regs fo system call&lt;br /&gt;
          ldx R$X,U&lt;br /&gt;
          ldy R$Y,U&lt;br /&gt;
          ldu R$U,U&lt;br /&gt;
          jsr 0,S            execute system call&lt;br /&gt;
          pshs CC,U          save CC,U&lt;br /&gt;
          ldu Regs+7,S&lt;br /&gt;
          leau R$U,U&lt;br /&gt;
          pshu A,B,DP,X,Y    return unpdatd regs to caller&lt;br /&gt;
          puls A,X           get CC,U&lt;br /&gt;
          sta ,-U&lt;br /&gt;
          stx R$U,U&lt;br /&gt;
          leas 4,S           discard OS-9 call subroutine&lt;br /&gt;
 &lt;br /&gt;
 * If you want to eliminate the possibility of a runtime error&lt;br /&gt;
 * remove the comment designator (*) from the next line&lt;br /&gt;
 &lt;br /&gt;
 *        clrb&lt;br /&gt;
          rts&lt;br /&gt;
 ParamErr comb               return carry set&lt;br /&gt;
          ldb #E$Param       Parameter error&lt;br /&gt;
          rts&lt;br /&gt;
 SyCalEnd equ *&lt;br /&gt;
 &lt;br /&gt;
 00000 error(s)&lt;br /&gt;
 00000 warning(s)&lt;br /&gt;
 $005E 00094 program bytes generated&lt;br /&gt;
 $00E5 00229 data bytes allocated&lt;br /&gt;
 $1006 04102 bytes used for symbols&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6595</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6595"/>
		<updated>2013-11-29T17:45:25Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Basic09 Comparisons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
&lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
&lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
&lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
&lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
&lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
&lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 SysCall comparisons between OS-9 Level 2 and NOS-9 Level 1 and Level 2&lt;br /&gt;
 ===================&lt;br /&gt;
 The NitrOS-9 Level 1 and Level 2 versions of SysCall are identical. The OS-9&lt;br /&gt;
 Level 2 version has differences from the NitrOS-9 versions, as follows:&lt;br /&gt;
 &lt;br /&gt;
 Attributes/Revision byte 81 changed to 80&lt;br /&gt;
 Header Parity byte 7B changed to 7A&lt;br /&gt;
 CRC F37B74 changed to 8583E2&lt;br /&gt;
&lt;br /&gt;
=== Source Listings ===&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6594</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6594"/>
		<updated>2013-11-29T17:44:43Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Basic09 Comparisons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
&lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
&lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
&lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
&lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
&lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
&lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 SysCall comparisons between OS-9 Level 2 and NOS-9 Level 1 and Level 2&lt;br /&gt;
 ===================&lt;br /&gt;
 The NitrOS-9 Level 1 and Level 2 versions of SysCall are identical. The OS-9&lt;br /&gt;
 Level 2 version has differences from the NitrOS-9 versions, as follows:&lt;br /&gt;
 &lt;br /&gt;
 Attributes/Revision byte 81 changed to 80&lt;br /&gt;
 Header Parity byte 7B changed to 7A&lt;br /&gt;
 CRC F37B74 changed to 8583E2&lt;br /&gt;
&lt;br /&gt;
 === Source Listings ===&lt;br /&gt;
 &lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6588</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6588"/>
		<updated>2013-11-27T17:38:11Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Basic09 Comparisons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
&lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
&lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
&lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
&lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
&lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
&lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 SysCall comparisons between OS-9 Level 2 and NOS-9 Level 1 and Level 2&lt;br /&gt;
 ===================&lt;br /&gt;
 The NitrOS-9 Level 1 and Level 2 versions of SysCall are identical. The OS-9&lt;br /&gt;
 Level 2 version has differences from the NitrOS-9 versions, as follows:&lt;br /&gt;
 &lt;br /&gt;
 Attributes/Revision byte 81 changed to 80&lt;br /&gt;
 Header Parity byte 7B changed to 7A&lt;br /&gt;
 CRC F37B74 changed to 8583E2&lt;br /&gt;
&lt;br /&gt;
 Source Listings:&lt;br /&gt;
 &lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6587</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6587"/>
		<updated>2013-11-26T23:11:58Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Basic09 Comparisons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 &lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
 &lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
 &lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
 &lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
 &lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
 &lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 Source Listings:&lt;br /&gt;
 &lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 2 listing uses SIZE instead of 0&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 * this line in the Level 2 listing shows 2727&lt;br /&gt;
   001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte  available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X       Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
                          NAM INKEY&lt;br /&gt;
                          IFP1&lt;br /&gt;
                          USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                          ENDC&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
   0081              REVS set REENT+1&lt;br /&gt;
 * The Level 1 listing uses 0 instead of SIZE&lt;br /&gt;
   0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
   000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                   org 0          Parameters&lt;br /&gt;
 D 0000            Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002            PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004            Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006           Length1 rmb 2          size&lt;br /&gt;
 D 0008            Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A           Length2 rmb 2          size&lt;br /&gt;
 ***********************************&lt;br /&gt;
 * These lines do not exist in the Level 1 listing&lt;br /&gt;
   000C           E$Param equ $38&lt;br /&gt;
   000E              SIZE equ *&lt;br /&gt;
 ***********************************&lt;br /&gt;
   0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
   0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
   0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 * this line in the Level 1 listing shows 2717&lt;br /&gt;
   001A 2727              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
   001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
   0020 2635              bne ParamErr   No, abort&lt;br /&gt;
   0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
   0025 AE66              ldx Length1,S&lt;br /&gt;
   0027 301F              leax -1,X byte available?&lt;br /&gt;
   0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
   002B 301F              leax -1,X      Integer?&lt;br /&gt;
   002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
   002F 1F98              tfr B,A&lt;br /&gt;
   0031 3068      InKey10 leax Param2,S&lt;br /&gt;
   0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
   0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
   0037 C6FF              ldb #$FF&lt;br /&gt;
   0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
   003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
   003F 2502              blo InKey30    ..No&lt;br /&gt;
   0041 E701              stb 1,X        put str terminator&lt;br /&gt;
   0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
   0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
   0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
   004A 108E0001          ldy #1&lt;br /&gt;
   004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
   0051 39                rts&lt;br /&gt;
   0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
   0054 2603              bne InKeyErr&lt;br /&gt;
   0056 39                rts            (carry clear)&lt;br /&gt;
   0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
   0059 43       InKeyErr coma&lt;br /&gt;
   005A 39                rts&lt;br /&gt;
   005B 1A6926            emod&lt;br /&gt;
   005E          InKeyEnd equ *&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6586</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6586"/>
		<updated>2013-11-26T20:55:07Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Basic09 Comparisons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 &lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
&lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
 &lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
 &lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
 &lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
 &lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
 &lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
&lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
&lt;br /&gt;
 Source Listings:&lt;br /&gt;
 &lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
 0081              REVS set REENT+1&lt;br /&gt;
 0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
 000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                 org 0          Parameters&lt;br /&gt;
 D 0000          Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002          PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004          Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006         Length1 rmb 2          size&lt;br /&gt;
 D 0008          Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A         Length2 rmb 2          size&lt;br /&gt;
 0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
 0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
 0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
 001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
 0020 2635              bne ParamErr   No, abort&lt;br /&gt;
 0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
 0025 AE66              ldx Length1,S&lt;br /&gt;
 0027 301F              leax -1,X byte  available?&lt;br /&gt;
 0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
 002B 301F              leax -1,X       Integer?&lt;br /&gt;
 002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
 002F 1F98              tfr B,A&lt;br /&gt;
 0031 3068      InKey10 leax Param2,S&lt;br /&gt;
 0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
 0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
 0037 C6FF              ldb #$FF&lt;br /&gt;
 0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
 003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
 003F 2502              blo InKey30    ..No&lt;br /&gt;
 0041 E701              stb 1,X        put str terminator&lt;br /&gt;
 0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
 0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
 0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
 004A 108E0001          ldy #1&lt;br /&gt;
 004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
 0051 39                rts&lt;br /&gt;
 0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
 0054 2603              bne InKeyErr&lt;br /&gt;
 0056 39                rts            (carry clear)&lt;br /&gt;
 0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
 0059 43       InKeyErr coma&lt;br /&gt;
 005A 39                rts&lt;br /&gt;
 005B 1A6926            emod&lt;br /&gt;
 005E          InKeyEnd equ *&lt;br /&gt;
&lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This listing has differences from the listing in the Level 1 manual.&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
                        NAM INKEY&lt;br /&gt;
                        IFP1&lt;br /&gt;
                        USE /D0/DEFS/OS9DEFS&lt;br /&gt;
                        ENDC&lt;br /&gt;
 0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
 0081              REVS set REENT+1&lt;br /&gt;
 0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,SIZE&lt;br /&gt;
 000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                 org 0          Parameters&lt;br /&gt;
 D 0000          Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002          PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004          Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006         Length1 rmb 2          size&lt;br /&gt;
 D 0008          Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A         Length2 rmb 2          size&lt;br /&gt;
   000C         E$Param equ $38&lt;br /&gt;
   000E            SIZE equ *&lt;br /&gt;
 0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
 0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
 0016 10830001          cmpd #1        just one parameter?&lt;br /&gt;
 001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
 001C 10830002          cmpd #2        Are there two params?&lt;br /&gt;
 0020 2635              bne ParamErr   No, abort&lt;br /&gt;
 0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
 0025 AE66              ldx Length1,S&lt;br /&gt;
 0027 301F              leax -1,X byte available?&lt;br /&gt;
 0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
 002B 301F              leax -1,X      Integer?&lt;br /&gt;
 002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
 002F 1F98              tfr B,A&lt;br /&gt;
 0031 3068      InKey10 leax Param2,S&lt;br /&gt;
 0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
 0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
 0037 C6FF              ldb #$FF&lt;br /&gt;
 0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
 003B 11830002          cmpu #2        at least two-byte str?&lt;br /&gt;
 003F 2502              blo InKey30    ..No&lt;br /&gt;
 0041 E701              stb 1,X        put str terminator&lt;br /&gt;
 0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
 0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
 0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
 004A 108E0001          ldy #1&lt;br /&gt;
 004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
 0051 39                rts&lt;br /&gt;
 0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
 0054 2603              bne InKeyErr&lt;br /&gt;
 0056 39                rts            (carry clear)&lt;br /&gt;
 0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
 0059 43       InKeyErr coma&lt;br /&gt;
 005A 39                rts&lt;br /&gt;
 005B 1A6926            emod&lt;br /&gt;
 005E          InKeyEnd equ *&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6585</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6585"/>
		<updated>2013-11-26T20:30:04Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Basic09 Comparisons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 &lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 &lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
 &lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
 &lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
 &lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
 &lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
 &lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
 &lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
 &lt;br /&gt;
 Source Listings:&lt;br /&gt;
 &lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108 (spacing between fields added by me)&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 *            RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 &lt;br /&gt;
 0021              TYPE set SBRTN+OBJCT&lt;br /&gt;
 0081              REVS set REENT+1&lt;br /&gt;
 0000 87CD005E          mod InKeyEnd,InKeyNam,TYPE,REVS,InKeyEnt,0&lt;br /&gt;
 000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000                 org 0          Parameters&lt;br /&gt;
 D 0000          Return rmb 2          Return addr of caller&lt;br /&gt;
 D 0002          PCount rmb 2          Num of params following&lt;br /&gt;
 D 0004          Param1 rmb 2          1st param addr&lt;br /&gt;
 D 0006         Length1 rmb 2          size&lt;br /&gt;
 D 0008          Param2 rmb 2          2nd param addr&lt;br /&gt;
 D 000A         Length2 rmb 2          size&lt;br /&gt;
 0012 3064     InKeyEnt leax Param1,S&lt;br /&gt;
 0014 EC62              ldd PCount,S   Get parameter count&lt;br /&gt;
 0016 10830001          cmpd #1         just one parameter?&lt;br /&gt;
 001A 2717              beq InKey20    ..Yes; default path A=0&lt;br /&gt;
 001C 10830002          cmpd #2         Are there two params?&lt;br /&gt;
 0020 2635              bne ParamErr   No, abort&lt;br /&gt;
 0022 ECF804            ldd [Param1,S] Get path number&lt;br /&gt;
 0025 AE66              ldx Length1,S&lt;br /&gt;
 0027 301F              leax -1,X byte  available?&lt;br /&gt;
 0029 2706              beq InKey10    ..Yes; (A)=Path number&lt;br /&gt;
 002B 301F              leax -1,X       Integer?&lt;br /&gt;
 002D 2628              bne ParamErr   ..No; abort&lt;br /&gt;
 002F 1F98              tfr B,A&lt;br /&gt;
 0031 3068      InKey10 leax Param2,S&lt;br /&gt;
 0033 EE02      InKey20 ldu 2,X        length of string&lt;br /&gt;
 0035 AE84              ldx 0,X        addr of string&lt;br /&gt;
 0037 C6FF              ldb #$FF&lt;br /&gt;
 0039 E784              stb 0,X        Initialize to null str&lt;br /&gt;
 003B 11830002          cmpu #2         at least two-byte str?&lt;br /&gt;
 003F 2502              blo InKey30    ..No&lt;br /&gt;
 0041 E701              stb 1,X        put str terminator&lt;br /&gt;
 0043 C601      InKey30 ldb #SS.Ready&lt;br /&gt;
 0045 103F8D            OS9 I$GetStt   is there an data ready?&lt;br /&gt;
 0048 2508              bcs InKey90    ..No; exit&lt;br /&gt;
 004A 108E0001          ldy #1&lt;br /&gt;
 004E 103F89            OS9 I$Read     Read one byte&lt;br /&gt;
 0051 39                rts&lt;br /&gt;
 0052 C1F6      InKey90 cmpb #E$NotRdy&lt;br /&gt;
 0054 2603              bne InKeyErr&lt;br /&gt;
 0056 39                rts            (carry clear)&lt;br /&gt;
 0057 C638     ParamErr ldb #E$Param   Parameter Error&lt;br /&gt;
 0059 43       InKeyErr coma&lt;br /&gt;
 005A 39                rts&lt;br /&gt;
 005B 1A6926            emod&lt;br /&gt;
 005E          InKeyEnd equ *&lt;br /&gt;
 &lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This pdf is not text-searchable and I am having difficulty getting the Inkey&lt;br /&gt;
 source in a text form.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6584</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6584"/>
		<updated>2013-11-26T19:58:27Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Basic09 Comparisons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                        Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 &lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 &lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
 &lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
 &lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
 &lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
 &lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
 &lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
 &lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
 &lt;br /&gt;
 Source Listings:&lt;br /&gt;
 &lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 * RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 0021 TYPE set SBRTN+OBJCT&lt;br /&gt;
 0081 REVS set REENT+1&lt;br /&gt;
 0000 87CD005E mod InKeyEnd,InKeyNam,TYPE,REVS&lt;br /&gt;
 ,InKeyEnt,0&lt;br /&gt;
 000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000 org 0 Parameters&lt;br /&gt;
 D 0000 Return rmb 2 Return addr of caller&lt;br /&gt;
 D 0002 PCount rmb 2 Num of params following&lt;br /&gt;
 D 0004 Param1 rmb 2 1st param addr&lt;br /&gt;
 D 0006 Length1 rmb 2 size&lt;br /&gt;
 D 0008 Param2 rmb 2 2nd param addr&lt;br /&gt;
 D 000A Length2 rmb 2 size&lt;br /&gt;
 0012 3064 InKeyEnt leax Param1,S&lt;br /&gt;
 0014 EC62 ldd PCount,S Get parameter count&lt;br /&gt;
 0016 10830001 cmpd #1 just one parameter?&lt;br /&gt;
 001A 2717 beq InKey20 ..Yes; default path A=0&lt;br /&gt;
 001C 10830002 cmpd #2 Are there two params?&lt;br /&gt;
 0020 2635 bne ParamErr No, abort&lt;br /&gt;
 0022 ECF804 ldd [Param1,S] Get path number&lt;br /&gt;
 0025 AE66 ldx Length1,S&lt;br /&gt;
 0027 301F leax -1,X byte available?&lt;br /&gt;
 0029 2706 beq InKey10 ..Yes; (A)=Path number&lt;br /&gt;
 002B 301F leax -1,X Integer?&lt;br /&gt;
 002D 2628 bne ParamErr ..No; abort&lt;br /&gt;
 002F 1F98 tfr B,A&lt;br /&gt;
 0031 3068 InKey10 leax Param2,S&lt;br /&gt;
 0033 EE02 InKey20 ldu 2,X length of string&lt;br /&gt;
 0035 AE84 ldx 0,X addr of string&lt;br /&gt;
 0037 C6FF ldb #$FF&lt;br /&gt;
 0039 E784 stb 0,X Initialize to null str&lt;br /&gt;
 003B 11830002 cmpu #2 at least two-byte str?&lt;br /&gt;
 003F 2502 blo InKey30 ..No&lt;br /&gt;
 0041 E701 stb 1,X put str terminator&lt;br /&gt;
 0043 C601 InKey30 ldb #SS.Ready&lt;br /&gt;
 0045 103F8D OS9 I$GetStt is there an data ready?&lt;br /&gt;
 0048 2508 bcs InKey90 ..No; exit&lt;br /&gt;
 004A 108E0001 ldy #1&lt;br /&gt;
 004E 103F89 OS9 I$Read Read one byte&lt;br /&gt;
 0051 39 rts&lt;br /&gt;
 0052 C1F6 InKey90 cmpb #E$NotRdy&lt;br /&gt;
 0054 2603 bne InKeyErr&lt;br /&gt;
 0056 39 rts (carry clear)&lt;br /&gt;
 0057 C638 ParamErr ldb #E$Param Parameter Error&lt;br /&gt;
 0059 43 InKeyErr coma&lt;br /&gt;
 005A 39 rts&lt;br /&gt;
 005B 1A6926 emod&lt;br /&gt;
 005E InKeyEnd equ *&lt;br /&gt;
 &lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This pdf is not text-searchable and I am having difficulty getting the Inkey&lt;br /&gt;
 source in a text form.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6583</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6583"/>
		<updated>2013-11-26T19:57:44Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Basic09 Comparisons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;br /&gt;
&lt;br /&gt;
                       Basic09       RunB          GFX        GFX2        Inkey    SysCall&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 OS-9 Dragon Level 1    5AB5 (23221)  &amp;lt;do not have any of these from the Dragon version&amp;gt;&lt;br /&gt;
 OS-9 Level 1           5ACC (23244)  2F99 (12185)  1F5 (501)  &amp;lt;N/A&amp;gt;       5E (94)  &amp;lt;N/A&amp;gt;&lt;br /&gt;
 OS-9 Level 2           5ACC (23244)  2F99 (12185)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 1       5A29 (23081)  2FA7 (12199)  1F5 (501)  &amp;lt;N/A&amp;gt;       5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6809  5A29 (23081)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
 NitrOS-9 Level 2 6309  5955 (22869)  2FA7 (12199)  1F5 (501)  8CA (2250)  5F (95)  63 (99)&lt;br /&gt;
                        ============  ============  =========  ==========  =======  =======&lt;br /&gt;
 &lt;br /&gt;
          (Dragon)                                                 (6809)        (6309)&lt;br /&gt;
         OS9 Level 1   OS9 Level 1   NOS9 Level 1  OS9 Level 2   NOS9 Level 2  NOS9 Level 2&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 Basic09 5AB5 (23221)  5ACC (23244)  5A29 (23081)  5ACC (23244)  5A29 (23081)  5955 (22869)&lt;br /&gt;
 RunB    ???           2F99 (12185)  2FA7 (12199)  2F99 (12185)  2FA7 (12199)  2FA7 (12199)&lt;br /&gt;
 GFX     ???            1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)     1F5 (501)  &lt;br /&gt;
 GFX2    ???           &amp;lt;N/A&amp;gt;         &amp;lt;N/A&amp;gt;          8CA (2250)    8CA (2250)    8CA (2250)  &lt;br /&gt;
 Inkey   ???             5E (94)       5F (95)       5F (95)       5F (95)       5F (95)&lt;br /&gt;
 SysCall ???           &amp;lt;N/A&amp;gt;           63 (99)       63 (99)       63 (99)       63 (99)&lt;br /&gt;
         ============  ============  ============  ============  ============  ============&lt;br /&gt;
 &lt;br /&gt;
 Comparisons are between OS-9 Level 1 and OS-9 Level 2 versions.&lt;br /&gt;
 All values in hex&lt;br /&gt;
 in case I have it backwards:&lt;br /&gt;
 MSB LSB&lt;br /&gt;
  10 00&lt;br /&gt;
  20 00&lt;br /&gt;
 &lt;br /&gt;
 BASIC09:&lt;br /&gt;
 =======&lt;br /&gt;
 The difference between Level 1 and Level 2 Basic09 is a 4K data buffer. Level 1&lt;br /&gt;
 Basic09 has a default workspace size of 4K, and Level 2 has a default workspace&lt;br /&gt;
 size of 8K. Module differences include the MSB of the module header Runtime&lt;br /&gt;
 Variable Storage Size field, the revision number bump to 1, and the module CRC.&lt;br /&gt;
 &lt;br /&gt;
 RUNB:&lt;br /&gt;
 ====&lt;br /&gt;
 The Level 1 and Level 2 RunB has the same differences as Basic09.&lt;br /&gt;
 &lt;br /&gt;
 SYSCALL:&lt;br /&gt;
 =======&lt;br /&gt;
 Level 1 did not include SysCall, and if it had, it would have been named with&lt;br /&gt;
 all caps (SYSCALL), as all of the modules on the disk are in all caps, including&lt;br /&gt;
 Basic09.&lt;br /&gt;
 &lt;br /&gt;
 INKEY:&lt;br /&gt;
 =====&lt;br /&gt;
 The Level 1 Inkey subroutine has 4 bytes that are different from, plus the CRC,&lt;br /&gt;
 and is 1 byte smaller than the Level 2 version (name reference includes the hi-&lt;br /&gt;
 bit set last character):&lt;br /&gt;
 &lt;br /&gt;
 Header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size changed from 005E to 005F&lt;br /&gt;
 Module Attributes/Revision changed from 81 to 80&lt;br /&gt;
 1st field after Header Parity changed from 0012 to 0013&lt;br /&gt;
 The Edition byte (the first byte after the module name) is a value of 01, and it&lt;br /&gt;
 is the reason the Level 2 version is 1 byte longer than the Level 1 version. It&lt;br /&gt;
 was inserted here in the level 2 version of Inkey.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 1A6916 as compared to FE0637&lt;br /&gt;
 &lt;br /&gt;
 GFX:&lt;br /&gt;
 ===&lt;br /&gt;
 According to the module header definition, the 8th and 9th bytes are the&lt;br /&gt;
 Attributes/Revision byte and the Header Parity byte. They are changed from 81&lt;br /&gt;
 and EC in the Level 1 version to 80 and ED in the Level 2 version.&lt;br /&gt;
 &lt;br /&gt;
 The CRC values differ:&lt;br /&gt;
 DDC98B as compared to C29373&lt;br /&gt;
 &lt;br /&gt;
 This concludes the immediate comparisons of the Level 1 and Level 2 versions of&lt;br /&gt;
 Basic09. Other than the differences stated above, both versions are identical.&lt;br /&gt;
 SysCall was not included on the Level 1 Basic09 diskette as sold by Radio&lt;br /&gt;
 Shack/Tandy. It is my understanding that a assembly source listing for SysCall&lt;br /&gt;
 exists somewhere in the OS-9 manuals. I will modify this document when I have&lt;br /&gt;
 that listing.&lt;br /&gt;
 &lt;br /&gt;
 CoCo OS-9 Level 1 Basic09 comparison to Dragon OS-9 Level 1 Basic09:&lt;br /&gt;
 (CoCo value is listed first)&lt;br /&gt;
 &lt;br /&gt;
 header differences:&lt;br /&gt;
 &lt;br /&gt;
 Module Size is changed from 5ACC to 5AB5&lt;br /&gt;
 Module Header Parity changed from A8 to D1&lt;br /&gt;
 1st int after Header Parity changed from 07C1 to 07AA&lt;br /&gt;
 3rd int after Header Parity changed from 00DC to 00C5&lt;br /&gt;
 4th int after Header Parity changed from 1CA5 to 1C8E&lt;br /&gt;
 5th int after Header Parity changed from 255A to 2543&lt;br /&gt;
 6th int after Header Parity changed from 31E8 to 31D1&lt;br /&gt;
 7th int after Header Parity changed from 3C09 to 3BF2&lt;br /&gt;
 8th int after Header Parity changed from 5084 to 506D&lt;br /&gt;
 &lt;br /&gt;
 0039-52    RS VERSION 01.00.00. removed from Dragon version&lt;br /&gt;
 00B7-C1 TANDY CORP changed at 009B-A9 to DRAGON DATA LTD&lt;br /&gt;
 &lt;br /&gt;
 0822 DD changed at 080B to F4&lt;br /&gt;
 082D DF changed at 0816 to F6&lt;br /&gt;
 08A9 7A changed at 0892 to 91&lt;br /&gt;
 08AF 6B changed at 0898 to 82&lt;br /&gt;
 &lt;br /&gt;
 CRC value at 5AC9 C5054F changed at 5AB2 to E3C48D&lt;br /&gt;
 &lt;br /&gt;
 This concludes the CoCo and Dragon version comparisons. I do not understand the&lt;br /&gt;
 differences in the code as yet.&lt;br /&gt;
 &lt;br /&gt;
 Source Listings:&lt;br /&gt;
 &lt;br /&gt;
 Inkey listing from Basic09 Level 1 Programming manual Revision F February 1983&lt;br /&gt;
 Appendix A: Sample Programs: pp.107-108&lt;br /&gt;
 &lt;br /&gt;
 ***************&lt;br /&gt;
 * INKEY - a subroutine for BASIC09 by Robert Doggett&lt;br /&gt;
 * Called by: RUN INKEY(StrVar)&lt;br /&gt;
 * RUN INKEY(Path, StrVar)&lt;br /&gt;
 * Inkey determines if a key has been typed on the given path&lt;br /&gt;
 * (Standard Input if not specified), and if so, returns the next&lt;br /&gt;
 * character in the String Variable. If no key has been type, the&lt;br /&gt;
 * null string is returned. If a path is specified, it must be&lt;br /&gt;
 * either type BYTE or INTEGER.&lt;br /&gt;
 0021 TYPE set SBRTN+OBJCT&lt;br /&gt;
 0081 REVS set REENT+1&lt;br /&gt;
 0000 87CD005E mod InKeyEnd,InKeyNam,TYPE,REVS&lt;br /&gt;
 ,InKeyEnt,0&lt;br /&gt;
 000D 496E6B65 InKeyNam fcs &amp;quot;Inkey&amp;quot;&lt;br /&gt;
 D 0000 org 0 Parameters&lt;br /&gt;
 D 0000 Return rmb 2 Return addr of caller&lt;br /&gt;
 D 0002 PCount rmb 2 Num of params following&lt;br /&gt;
 D 0004 Param1 rmb 2 1st param addr&lt;br /&gt;
 D 0006 Length1 rmb 2 size&lt;br /&gt;
 D 0008 Param2 rmb 2 2nd param addr&lt;br /&gt;
 D 000A Length2 rmb 2 size&lt;br /&gt;
 0012 3064 InKeyEnt leax Param1,S&lt;br /&gt;
 0014 EC62 ldd PCount,S Get parameter count&lt;br /&gt;
 0016 10830001 cmpd #1 just one parameter?&lt;br /&gt;
 001A 2717 beq InKey20 ..Yes; default path A=0&lt;br /&gt;
 001C 10830002 cmpd #2 Are there two params?&lt;br /&gt;
 0020 2635 bne ParamErr No, abort&lt;br /&gt;
 0022 ECF804 ldd [Param1,S] Get path number&lt;br /&gt;
 0025 AE66 ldx Length1,S&lt;br /&gt;
 0027 301F leax -1,X byte available?&lt;br /&gt;
 0029 2706 beq InKey10 ..Yes; (A)=Path number&lt;br /&gt;
 002B 301F leax -1,X Integer?&lt;br /&gt;
 002D 2628 bne ParamErr ..No; abort&lt;br /&gt;
 002F 1F98 tfr B,A&lt;br /&gt;
 0031 3068 InKey10 leax Param2,S&lt;br /&gt;
 0033 EE02 InKey20 ldu 2,X length of string&lt;br /&gt;
 0035 AE84 ldx 0,X addr of string&lt;br /&gt;
 0037 C6FF ldb #$FF&lt;br /&gt;
 0039 E784 stb 0,X Initialize to null str&lt;br /&gt;
 003B 11830002 cmpu #2 at least two-byte str?&lt;br /&gt;
 003F 2502 blo InKey30 ..No&lt;br /&gt;
 0041 E701 stb 1,X put str terminator&lt;br /&gt;
 0043 C601 InKey30 ldb #SS.Ready&lt;br /&gt;
 0045 103F8D OS9 I$GetStt is there an data ready?&lt;br /&gt;
 0048 2508 bcs InKey90 ..No; exit&lt;br /&gt;
 004A 108E0001 ldy #1&lt;br /&gt;
 004E 103F89 OS9 I$Read Read one byte&lt;br /&gt;
 0051 39 rts&lt;br /&gt;
 0052 C1F6 InKey90 cmpb #E$NotRdy&lt;br /&gt;
 0054 2603 bne InKeyErr&lt;br /&gt;
 0056 39 rts (carry clear)&lt;br /&gt;
 0057 C638 ParamErr ldb #E$Param Parameter Error&lt;br /&gt;
 0059 43 InKeyErr coma&lt;br /&gt;
 005A 39 rts&lt;br /&gt;
 005B 1A6926 emod&lt;br /&gt;
 005E InKeyEnd equ *&lt;br /&gt;
 &lt;br /&gt;
 Inkey listing from Level 2 Basic09 Reference&lt;br /&gt;
 Appendix B: The Inkey Program: pp.B-1,B-2&lt;br /&gt;
 &lt;br /&gt;
 This pdf is not text-searchable and I am having difficulty getting the Inkey&lt;br /&gt;
 source in a text form.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6582</id>
		<title>OS-9</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=OS-9&amp;diff=6582"/>
		<updated>2013-11-26T19:52:09Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* OS-9 Basic09 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavProgramming}}&lt;br /&gt;
Programming the 6809 using OS-9&lt;br /&gt;
&lt;br /&gt;
== OS9 Assembly Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS9 Level I Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The actual machine instructions executed by a computer are sequences of binary numbers that are difficult and inconvenient for people to deal with directly. Creating a machine language program of any length ny hand is tedious, error prone, and time consuming, making it an almost impossible task. Assembly language bridges the gap between computers and people who must write machine-language programs. In assembly language, descriptive mnemonics (abbreviations) for each machine instruction are used which are much easier to learn, read, and remember, are used instead of numerical codes. The assembler also lets the programmer assign sybolic names to memory addresses and constant values. The assembler also has many other features to make assembly language programming easier&lt;br /&gt;
&lt;br /&gt;
This assembler was designed expressly for the modular, multi-tasking enviroment of the OS-9 Operating System, and incorporates built-in functions for calling OS-9, generating memory modules, encouraging the creation of position-independant code, and maintaining seperate program and data sections. It has also been optimized for the use by OS-9 high-level language compilers such as Pascal and C, and can be used on either OS-9 Level 1 or OS-9 Level 2 systems.&lt;br /&gt;
&lt;br /&gt;
Another noteworthy characteristic of this assembler is it&#039;s extremely fast assembly speed which is attributable to it&#039;s tree-structured symbol table organization. The tree structure dramatically reduces symbol table searching, which is the most time consuming operation performed bay an assembler&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The OS-9 Level Two Relocatable Macro Assembler&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
RMA is a full-featured relocatable macro assembler and linkage editor designed to be used by advanced programmers or with compiler systems.&lt;br /&gt;
&lt;br /&gt;
RMA lets you assemble sections of assembly-language programs independently to create relocatable object files. The linkage editor, RLINK, takes any number of program sections and/or library sections, and combines them into a single OS-9 memory module RMA&#039;s features include:&lt;br /&gt;
&lt;br /&gt;
*OS-9 modular, multi-tasking environment support&lt;br /&gt;
*Built-in functions for calling OS-9 system routines&lt;br /&gt;
*Position-independent, re-entrant code support&lt;br /&gt;
*Creating of standard subroutine libraries by allowing programs to be written and assembled separately and then linked together.&lt;br /&gt;
*Macro capabilities&lt;br /&gt;
*OS-9 Level Two compatibility&lt;br /&gt;
*Automatic resolution of global data and program references&lt;br /&gt;
*Conditional assembly and library source file support&lt;br /&gt;
&lt;br /&gt;
== OS-9 Pascal ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;About 0S-9 PASCAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From the OS-9 Pascal Manual&lt;br /&gt;
&lt;br /&gt;
The internal operation of a language as powerful as Pascal must be relatively complex, and running Pascal programs can be quite demanding of the computer. Therefore, microcomputer versions of Pascal traditionally have been quite limited and much slower than their big computer cousins. The gap has been narrowed considerably in 0S-9 Pascal because of two factors. The first factor is the 6809 microprocessor, which was specifically designed to efficiently execute high-level languages such as Pascal. The second factor is the part of 0S-9 Pascal called &amp;quot;PascalS&amp;quot;, which allows the Pascal system to utilize disk space as &amp;quot;virtual memory&amp;quot;. Being able to utilize disk space as &amp;quot;virtual memory&amp;quot; means that you can run Pascal programs that are much larger than the actual memory size. Indeed, a Pascal compiler as complete as the 0S-9 Pascal compiler would otherwise be too big to fit in your computer&#039;s memory.&lt;br /&gt;
&lt;br /&gt;
One other unusual characteristic of 0S-9 Pascal is its ability to compile and run programs in either &amp;quot;P-code&amp;quot; or &amp;quot;native code&amp;quot; forms. &amp;quot;P-codes&amp;quot; are instructions particularly created for an ideal , imaginary &amp;quot;Pascal Computer&amp;quot;. The 6809 can&#039;t directly execute P-code instructions, so a program called a &amp;quot;P-code interpreter&amp;quot; is used to simulate the ideal &amp;quot;Pascal Computer&amp;quot;. Most microcomputer versions of Pascal use the P-code concept because it simplifies the design of the compiler and makes most effic1ient use of a limited amount of memory. Another plus for P-code is that while programs are running, the P-code interpreter can perform thorough error checks and can give excellent diagnostic messages.&lt;br /&gt;
&lt;br /&gt;
Using P-code, the execution speed of programs is relatively slow compared to true machine language. Each P-code instruction causes actual machine language instructions to be run in the interpreter program (which are &amp;quot;overhead&amp;quot; and not actually needed to carry out the original Pascal program). 0S-9 Pascal provides a unique solution to this problem by means of a program called a &amp;quot;native code translator&amp;quot;. The native code translator takes a P-code program and translates it to 6809 assembly language (machine language) source code. Both the P-code and the native code forms of the program work exactly the same way - except that the native code version will run from four to ten times faster! And because the output of the translator is a text file that is processed by the standard 0S-9 assembler, you can examine or manually edit it if you wish.&lt;br /&gt;
&lt;br /&gt;
Why even bother with P-code? One reason is that very big programs will only fit in your computer in P-code form. While Pcode is not as fast as native code, in many cases speed is not an important enough factor to bother with the optional translation step. Perhaps the main value of P-code is its use in program debugging because the P-code interpreter has more comprehensive error checking and diagnostics. Typically, 0S-9 Pascal users debug programs in p-code form and translate to native code as a final step.&lt;br /&gt;
&lt;br /&gt;
== OS-9 &amp;quot;C&amp;quot; Programming Language ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From The C Compiler&#039;s User Manual&lt;br /&gt;
&lt;br /&gt;
C was originally developed at the Bel Telephone Laboratories as an implementation language for the UNIX operating system by Brian Kernighan and Dennis Ritchie. They also wrote a book titled The C Programming Language which is universally accepted as the standard for the language. It is an interesting reflection on the language that although no formal industry-wide &amp;quot;standard&amp;quot; was ever developed for C, programs written in C tend to be far more portable between radically different computer systems as compared to so-called &amp;quot;standardized&amp;quot; languages such as BASIC, COBOL, and PASCAL. The reason C is so portable is that the language is so inherently expandable that if some special function is required, the user can create a portable extension to the language, as opposed to the common practice of adding additional statements to the language. For example, the number of special-purpose BASIC dialects defies all reason. A lesser factor is the underlying UNIX operating system, which is also sufficiently versatile to discourage nonstandardization of the language. Indeed, standard C compilers and UNIX are intimately related.&lt;br /&gt;
Fortunately, the 6809 microprocessor, the OS-9 operating system, and the C language form an outstanding combination. The 6809 was specifically designed to efficiently run high-level languages, and its stack-oriented instruction set and versatile repertoire of addressing modes handle the C language very well. As mentioned previously, UNIX and C are closely related, and because OS-9 is derived from UNIX, it also supports C to the degree that almost any application written in C can be transported from a UNIX system to an OS-9 system, recompiled, and corrected executed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Language Implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OS-9 C is implemented almost exactly as described in The C Programming Language by Kernighan and Ritchie (hereafter referred to as K&amp;amp;R). A copy of this book, which serves as the language reference manual, is included with each software package.&lt;br /&gt;
Although this version of C follows the specification faithfully, there are some differences. The differences mostly reflect parts of C that are obsolete or the constraints imposed by memory size limitations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Differences From the K&amp;amp;R Specification&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bit fields are not supported.&lt;br /&gt;
*Constant expressions for initializers may include arithmetic operators only if all the operands are of type int or char.&lt;br /&gt;
*The older forms of assignment operators, =+ or =*, which are recognized by some C compilers, are not supported. You must use the newer forms, +=, *=, etc.&lt;br /&gt;
*&amp;quot;#ifdef (#ifndef) ... [#else...] #endif&amp;quot; is supported but &amp;quot;#if &amp;lt;constant expression&amp;gt;&amp;quot; is not.&lt;br /&gt;
*It is not possible to extend macro definitions or strings over more than one line of source code.&lt;br /&gt;
*The escape sequence for newline &#039;\n&#039; refers to the ASCII carriage return character (used by OS-9 for end-of-line), not linefeed (hex 0A). Programs which use &#039;\n&#039; for end-of-line (which includes all programs in K&amp;amp;R) will still work properly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enhancements and Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Direct&amp;quot; Storage Class &lt;br /&gt;
&lt;br /&gt;
The 6809 microprocessor instruction for accessing memory via an index register or the stack pointer can be relatively short and fast when they are used in C programs to access &amp;quot;auto&amp;quot; (function local) variables or function arguments. The instructions for accessing global variables are normally not so nice and must be four-bytes long and correspondingly slow. However, the 6809 has a nice feature which helps considerably. Memory, anywhere in a single page (256 byte block), may be accessed with fast, two byte instructions. This is called the &amp;quot;direct page&amp;quot;, and at any time its location is specified by the contents of the &amp;quot;direct page register&amp;quot; within the processor. The linkage editor sorts out where this should be, and it need not concern the program, who only needs to specify for the compiler which variables should be in the direct page to give the maximum benefit in code size and execution speed.&lt;br /&gt;
To this end, a new storage class specifier is recognized by the compiler. In the manner of K&amp;amp;R page 192, the sc-specifier list is extended as follows:&lt;br /&gt;
&lt;br /&gt;
Sc-specifier:&lt;br /&gt;
*auto&lt;br /&gt;
*static&lt;br /&gt;
*extern&lt;br /&gt;
*register&lt;br /&gt;
*typedef&lt;br /&gt;
*direct        (extension)&lt;br /&gt;
*extern direct (extension)&lt;br /&gt;
*static direct (extension)&lt;br /&gt;
&lt;br /&gt;
The new keyword may be used in place of one of the other sc-specifiers, and its effect is that the variable will be placed in the direct page. direct creates a global direct page variable. extern direct references an external-type direct page variable and static direct creates a local direct page variable. These new classes may not be used to declare function arguments. &amp;quot;Direct&amp;quot; variables can be initialized but will, as with other variables not explicitly initialized, have the value zero at the start of program execution. 255 bytes are available in the direct page (the linker requires one byte). If all the direct variables occupy less than the full 255 bytes, the remaining global variables will occupy the balance and memory above if necessary. If too many bytes of storage are requested in the direct page, the linkage editor will report an error, and the programmer will have to reduce the use of direct variables to fit the 256 bytes addressable by the 6809.&lt;br /&gt;
&lt;br /&gt;
It should be kept in mind that direct is unique to this compiler, and it may not be possible to transport programs written using direct to other environments without modification.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Embedded Assembly Language&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As versatile as C is, occasionally there are some things that can only be done (or done at maximum speed) in assembly language. The OS-9 C compiler permits user-supplied assembly-language statements to be directly embedded in C source programs.&lt;br /&gt;
&lt;br /&gt;
== OS-9 Basic09 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;From the Basic09 manual:&#039;&#039;&#039;&lt;br /&gt;
Basic09 is an enhanced structured BASIC language programming system specially created for the 6809 Advanced Microprocessor. In addition to the standard BASIC language statements and functions, Basic09 includes many of the most useful elements of the Pascal programming language so that programs can be modular, well-structured, and use sophisticated data structures. It also permits full access to almost all of the OS-9 Operating System commands and functions so it can be used as a systems programming language. These features make Basic09 an ideal language for many applications: scientific, business, industrial control, education and more.&lt;br /&gt;
&lt;br /&gt;
Basic09 is unusual in that it is an Interactive Compiler that has the best of both kinds of language system: it gives the fast execution speed typical of compiler languages plus the ease of use and memory space efficiency typical of interpreter languages. Basic09 is truly a complete programming system that includes a powerful text editor, multi-pass compiler, run-time interpreter, high-level interactive debugger, and a system executive. Each of these components was carefully integrated so the user &amp;quot;sees&amp;quot; a friendly, highly interactive programming resource that provides all the tools and helpful &amp;quot;extra&amp;quot; facilities needed for fast, accurate creation and testing of structured programs.&lt;br /&gt;
&lt;br /&gt;
*[[The Structure of I-Code]]&lt;br /&gt;
&lt;br /&gt;
=== Basic09 Comparisons ===&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6533</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6533"/>
		<updated>2013-10-14T14:52:39Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* DATA Statement Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
File access in Basic09 is accomplished through a specific set of keywords and functions. OPEN and CREATE statements deal with opening or creating a file on your disk. Both statements have the same syntax, and except for the OPEN or CREATE keyword are syntactically identical:&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot;|CREATE #path,filename&lt;br /&gt;
|-&lt;br /&gt;
|29||54||80 0016||4B||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|CREATE||#||path||,||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|OPEN #path,filename:READ&lt;br /&gt;
|-&lt;br /&gt;
|2A||54||80 0016||4B||84 0000||4A||01||3F&lt;br /&gt;
|-&lt;br /&gt;
|OPEN||#||path||,||filename||:||READ||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SEEK #path, SIZE(myVar)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot;|CLOSE #path&lt;br /&gt;
|-&lt;br /&gt;
|30||54||80 0016||3F&lt;br /&gt;
|-&lt;br /&gt;
|CLOSE||#||path||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|DELETE filename&lt;br /&gt;
|-&lt;br /&gt;
|32||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|DELETE||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==DATA Statement Structure==&lt;br /&gt;
DATA statements in Basic09 are essentially linked-lists.&lt;br /&gt;
&lt;br /&gt;
The 1st data statement address field in the module header points to the first byte of the first item in the first DATA statement in the procedure. It does not point to the DATA token.&lt;br /&gt;
&lt;br /&gt;
At the end of each DATA statement is a invisible goto that points to the first byte of the first item in the next DATA statement, or of the first DATA statement if the current DATA statement is the last DATA statement in the procedure.&lt;br /&gt;
&lt;br /&gt;
It is the address in the header that allows RESTORE with no line number to reset to the beginning of the DATA statements.&lt;br /&gt;
&lt;br /&gt;
RESTORE with a line number allows you to insert points within the structure to allow the pointer to be re-positioned.&lt;br /&gt;
&lt;br /&gt;
The structure is not doubly-linked, and you can only move through it sequentially in one direction.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;14&amp;quot;|DATA 9600,4800,2400,1200,300&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; |1st DATA statement address: &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;0066|| colspan=&amp;quot;10&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|00000084||0064||04||8E 2580||4B||8E 12C0||4B||8E 0960||4B||8E 04B0||4B||8E 012C||55 0066||3F&lt;br /&gt;
|-&lt;br /&gt;
|Mod Off||Exec Off||DATA||9600||,||4800||,||2400||,||1200||,||300||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6532</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6532"/>
		<updated>2013-10-14T14:39:50Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* DATA Statement Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
File access in Basic09 is accomplished through a specific set of keywords and functions. OPEN and CREATE statements deal with opening or creating a file on your disk. Both statements have the same syntax, and except for the OPEN or CREATE keyword are syntactically identical:&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot;|CREATE #path,filename&lt;br /&gt;
|-&lt;br /&gt;
|29||54||80 0016||4B||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|CREATE||#||path||,||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|OPEN #path,filename:READ&lt;br /&gt;
|-&lt;br /&gt;
|2A||54||80 0016||4B||84 0000||4A||01||3F&lt;br /&gt;
|-&lt;br /&gt;
|OPEN||#||path||,||filename||:||READ||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SEEK #path, SIZE(myVar)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot;|CLOSE #path&lt;br /&gt;
|-&lt;br /&gt;
|30||54||80 0016||3F&lt;br /&gt;
|-&lt;br /&gt;
|CLOSE||#||path||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|DELETE filename&lt;br /&gt;
|-&lt;br /&gt;
|32||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|DELETE||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==DATA Statement Structure==&lt;br /&gt;
DATA statements in Basic09 are essentially linked-lists.&lt;br /&gt;
&lt;br /&gt;
The 1st data statement address field in the module header points to the first byte of the first item in the first DATA statement in the procedure. It does not point to the DATA token.&lt;br /&gt;
&lt;br /&gt;
At the end of each DATA statement is a invisible goto that points to the first byte of the first item in the next DATA statement, or of the first DATA statement if the current DATA statement is the last DATA statement in the procedure.&lt;br /&gt;
&lt;br /&gt;
It is the address in the header that allows RESTORE with no line number to reset to the beginning of the DATA statements.&lt;br /&gt;
&lt;br /&gt;
RESTORE with a line number allows you to insert points within the structure to allow the pointer to be re-positioned.&lt;br /&gt;
&lt;br /&gt;
The structure is not doubly-linked, and you can only move through it sequentially in one direction.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|DATA 9600,4800,2400,1200,300&lt;br /&gt;
|-&lt;br /&gt;
|00000084||04||8E 2580||4B||8E 12C0||4B||8E 0960||4B||8E 04B0||4B||8E 012C||55 0066||3F&lt;br /&gt;
|-&lt;br /&gt;
|Mod Off||DATA||9600||,||4800||,||2400||,||1200||,||300||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6531</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6531"/>
		<updated>2013-10-14T14:09:50Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* DATA Statement Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
File access in Basic09 is accomplished through a specific set of keywords and functions. OPEN and CREATE statements deal with opening or creating a file on your disk. Both statements have the same syntax, and except for the OPEN or CREATE keyword are syntactically identical:&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot;|CREATE #path,filename&lt;br /&gt;
|-&lt;br /&gt;
|29||54||80 0016||4B||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|CREATE||#||path||,||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|OPEN #path,filename:READ&lt;br /&gt;
|-&lt;br /&gt;
|2A||54||80 0016||4B||84 0000||4A||01||3F&lt;br /&gt;
|-&lt;br /&gt;
|OPEN||#||path||,||filename||:||READ||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SEEK #path, SIZE(myVar)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot;|CLOSE #path&lt;br /&gt;
|-&lt;br /&gt;
|30||54||80 0016||3F&lt;br /&gt;
|-&lt;br /&gt;
|CLOSE||#||path||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|DELETE filename&lt;br /&gt;
|-&lt;br /&gt;
|32||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|DELETE||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==DATA Statement Structure==&lt;br /&gt;
DATA statements in Basic09 are essentially linked-lists.&lt;br /&gt;
&lt;br /&gt;
The 1st data statement address field in the module header points to the first byte of the first item in the first DATA statement in the procedure. It does not point to the DATA token.&lt;br /&gt;
&lt;br /&gt;
At the end of each DATA statement is a invisible goto that points to the first byte of the first item in the next DATA statement, or of the first DATA statement if the current DATA statement is the last DATA statement in the procedure.&lt;br /&gt;
&lt;br /&gt;
It is the address in the header that allows RESTORE with no line number to reset to the beginning of the DATA statements.&lt;br /&gt;
&lt;br /&gt;
RESTORE with a line number allows you to insert points within the structure to allow the pointer to be re-positioned.&lt;br /&gt;
&lt;br /&gt;
The structure is not doubly-linked, and you can only move through it sequentially in one direction.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6530</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6530"/>
		<updated>2013-10-14T14:04:00Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* About GOTO, GOSUB and  tokens */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
File access in Basic09 is accomplished through a specific set of keywords and functions. OPEN and CREATE statements deal with opening or creating a file on your disk. Both statements have the same syntax, and except for the OPEN or CREATE keyword are syntactically identical:&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot;|CREATE #path,filename&lt;br /&gt;
|-&lt;br /&gt;
|29||54||80 0016||4B||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|CREATE||#||path||,||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|OPEN #path,filename:READ&lt;br /&gt;
|-&lt;br /&gt;
|2A||54||80 0016||4B||84 0000||4A||01||3F&lt;br /&gt;
|-&lt;br /&gt;
|OPEN||#||path||,||filename||:||READ||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SEEK #path, SIZE(myVar)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot;|CLOSE #path&lt;br /&gt;
|-&lt;br /&gt;
|30||54||80 0016||3F&lt;br /&gt;
|-&lt;br /&gt;
|CLOSE||#||path||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|DELETE filename&lt;br /&gt;
|-&lt;br /&gt;
|32||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|DELETE||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==DATA Statement Structure==&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6275</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6275"/>
		<updated>2013-09-18T21:51:12Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* IF-THEN/ENDIF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
File access in Basic09 is accomplished through a specific set of keywords and functions. OPEN and CREATE statements deal with opening or creating a file on your disk. Both statements have the same syntax, and except for the OPEN or CREATE keyword are syntactically identical:&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot;|CREATE #path,filename&lt;br /&gt;
|-&lt;br /&gt;
|29||54||80 0016||4B||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|CREATE||#||path||,||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|OPEN #path,filename:READ&lt;br /&gt;
|-&lt;br /&gt;
|2A||54||80 0016||4B||84 0000||4A||01||3F&lt;br /&gt;
|-&lt;br /&gt;
|OPEN||#||path||,||filename||:||READ||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SEEK #path, SIZE(myVar)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot;|CLOSE #path&lt;br /&gt;
|-&lt;br /&gt;
|30||54||80 0016||3F&lt;br /&gt;
|-&lt;br /&gt;
|CLOSE||#||path||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|DELETE filename&lt;br /&gt;
|-&lt;br /&gt;
|32||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|DELETE||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6274</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6274"/>
		<updated>2013-09-18T21:42:02Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
File access in Basic09 is accomplished through a specific set of keywords and functions. OPEN and CREATE statements deal with opening or creating a file on your disk. Both statements have the same syntax, and except for the OPEN or CREATE keyword are syntactically identical:&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot;|CREATE #path,filename&lt;br /&gt;
|-&lt;br /&gt;
|29||54||80 0016||4B||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|CREATE||#||path||,||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|OPEN #path,filename:READ&lt;br /&gt;
|-&lt;br /&gt;
|2A||54||80 0016||4B||84 0000||4A||01||3F&lt;br /&gt;
|-&lt;br /&gt;
|OPEN||#||path||,||filename||:||READ||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SEEK #path, SIZE(myVar)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot;|CLOSE #path&lt;br /&gt;
|-&lt;br /&gt;
|30||54||80 0016||3F&lt;br /&gt;
|-&lt;br /&gt;
|CLOSE||#||path||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|DELETE filename&lt;br /&gt;
|-&lt;br /&gt;
|32||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|DELETE||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6273</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6273"/>
		<updated>2013-09-18T21:40:23Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
File access in Basic09 is accomplished through a specific set of keywords and functions. OPEN and CREATE statements deal with opening or creating a file on your disk. Both statements have the same syntax, and except for the OPEN or CREATE keyword are syntactically identical:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot;|CREATE #path,filename&lt;br /&gt;
|-&lt;br /&gt;
|29||54||80 0016||4B||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|CREATE||#||path||,||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|OPEN #path,filename:READ&lt;br /&gt;
|-&lt;br /&gt;
|2A||54||80 0016||4B||84 0000||4A||01||3F&lt;br /&gt;
|-&lt;br /&gt;
|OPEN||#||path||,||filename||:||READ||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SEEK #path, SIZE(myVar)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot;|CLOSE #path&lt;br /&gt;
|-&lt;br /&gt;
|30||54||80 0016||3F&lt;br /&gt;
|-&lt;br /&gt;
|CLOSE||#||path||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|DELETE filename&lt;br /&gt;
|-&lt;br /&gt;
|32||84 0000||3F&lt;br /&gt;
|-&lt;br /&gt;
|DELETE||filename||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6272</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6272"/>
		<updated>2013-09-18T21:14:25Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
File access in Basic09 is accomplished through a specific set of keywords and functions. OPEN and CREATE statements deal with opening or creating a file on your disk. Both statements have the same syntax, and except for the OPEN or CREATE keyword are syntactically identical:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
|-&lt;br /&gt;
| colspan=7|CREATE #path,&amp;quot;[my/Pathlist/]File&amp;quot;[:MODE]|&lt;br /&gt;
|-&lt;br /&gt;
|29|54|80 0016|4B|84 0000|3F|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=7|OPEN #path,&amp;quot;[my/Pathlist/]File&amp;quot;[:MODE]|&lt;br /&gt;
|-&lt;br /&gt;
|2A|54|80 0016|4B|84 0000|4A 01|3F|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
SEEK allows you to move the file pointer for the specified file path anywhere within the file:&lt;br /&gt;
&lt;br /&gt;
SEEK #path, SIZE(myVar)&lt;br /&gt;
&lt;br /&gt;
CLOSE closes the file specified:&lt;br /&gt;
&lt;br /&gt;
CLOSE #path[,path1, ... pathN]&lt;br /&gt;
&lt;br /&gt;
DELETE deletes a specified file by name:&lt;br /&gt;
&lt;br /&gt;
DELETE &amp;quot;my/Pathlist/File&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6271</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6271"/>
		<updated>2013-09-18T20:39:54Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
File access in Basic09 is accomplished through a specific set of keywords and functions. OPEN and CREATE statements deal with opening or creating a file on your disk. Both statements have the same syntax, and except for the OPEN or CREATE keyword are syntactically identical:&lt;br /&gt;
&lt;br /&gt;
OPEN #path,&amp;quot;[my/Pathlist/]File&amp;quot;[:MODE]&amp;lt;br&amp;gt;&lt;br /&gt;
CREATE #path,&amp;quot;[my/Pathlist/]File&amp;quot;[:MODE]&lt;br /&gt;
&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
SEEK allows you to move the file pointer for the specified file path anywhere within the file:&lt;br /&gt;
&lt;br /&gt;
SEEK #path, SIZE(myVar)&lt;br /&gt;
&lt;br /&gt;
CLOSE closes the file specified:&lt;br /&gt;
&lt;br /&gt;
CLOSE #path[,path1, ... pathN]&lt;br /&gt;
&lt;br /&gt;
DELETE deletes a specified file by name:&lt;br /&gt;
&lt;br /&gt;
DELETE &amp;quot;my/Pathlist/File&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6270</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6270"/>
		<updated>2013-09-18T20:37:50Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
File access in Basic09 is accomplished through a specific set of keywords and functions. OPEN and CREATE statements deal with opening or creating a file on your disk. Both statements have the same syntax, and except for the OPEN or CREATE keyword are syntactically identical:&lt;br /&gt;
&lt;br /&gt;
OPEN #path,&amp;quot;[my/Pathlist/]File&amp;quot;[:MODE]&lt;br /&gt;
CREATE #path,&amp;quot;[my/Pathlist/]File&amp;quot;[:MODE]&lt;br /&gt;
&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
SEEK allows you to move the file pointer for the specified file path anywhere within the file:&lt;br /&gt;
&lt;br /&gt;
SEEK #path, SIZE(myVar)&lt;br /&gt;
&lt;br /&gt;
CLOSE closes the file specified:&lt;br /&gt;
&lt;br /&gt;
CLOSE #path&lt;br /&gt;
&lt;br /&gt;
DELETE deletes a specified file by name:&lt;br /&gt;
&lt;br /&gt;
DELETE &amp;quot;my/Pathlist/File&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6269</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6269"/>
		<updated>2013-09-18T20:28:23Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Terms Used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6268</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6268"/>
		<updated>2013-09-18T20:27:45Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=&amp;quot;arraytypes&amp;quot; /&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=&amp;quot;arraytypes&amp;quot; /&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6267</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6267"/>
		<updated>2013-09-18T20:27:05Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=&amp;quot;arraytypes&amp;quot; /&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=&amp;quot;arraytypes&amp;quot; /&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6266</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6266"/>
		<updated>2013-09-18T20:24:23Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Terms Used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=&amp;quot;arraytypes&amp;quot; /&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=&amp;quot;arraytypes&amp;quot; /&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6265</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6265"/>
		<updated>2013-09-18T20:23:37Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6264</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6264"/>
		<updated>2013-09-18T20:22:41Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6263</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6263"/>
		<updated>2013-09-18T20:22:13Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Terms Used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6262</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6262"/>
		<updated>2013-09-18T20:21:15Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;arraytypes&amp;quot;&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6261</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6261"/>
		<updated>2013-09-18T20:20:42Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=arraytypes&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6260</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6260"/>
		<updated>2013-09-18T20:20:17Z</updated>

		<summary type="html">&lt;p&gt;Wayne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=arraytypes&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6259</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6259"/>
		<updated>2013-09-18T20:18:35Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=arraytypes&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6258</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6258"/>
		<updated>2013-09-18T20:17:50Z</updated>

		<summary type="html">&lt;p&gt;Wayne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;ref name=arraytypes&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6257</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6257"/>
		<updated>2013-09-18T20:17:13Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Terms Used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=arraytypes&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;ref name=arraytypes&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6256</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6256"/>
		<updated>2013-09-18T20:16:25Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;ref name=arraytypes&amp;gt;Microware OS-9 Basic User Manual (for OS-9/68000 (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines, page 3-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6254</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6254"/>
		<updated>2013-09-18T20:14:59Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6253</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6253"/>
		<updated>2013-09-18T20:14:35Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Terms Used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6252</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6252"/>
		<updated>2013-09-18T20:12:36Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=arraytypes /&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=arraytypes /&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=arraytypes /&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6251</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6251"/>
		<updated>2013-09-18T20:12:05Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* Terms Used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector&amp;lt;ref name=arraytypes /&amp;gt;&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table&amp;lt;ref name=arraytypes /&amp;gt;&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix&amp;lt;ref name=arraytypes /&amp;gt;&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6250</id>
		<title>The Structure of I-Code</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=The_Structure_of_I-Code&amp;diff=6250"/>
		<updated>2013-09-18T20:11:00Z</updated>

		<summary type="html">&lt;p&gt;Wayne: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;I&#039; in I-Code stands for Intermediate. Intermediate code is code that is a step between interpreted source statements and fully compiled machine code. Typically, intermediate code uses tokens to represent the instructions to be executed. Basic09 I-Code goes a step further by re-arranging the source code instructions in post-fix notation (also known as [http://en.wikipedia.org/wiki/Reverse_Polish_notation Reverse Polish Notation]) order.&lt;br /&gt;
&lt;br /&gt;
The tokens used by Basic09 are a single byte ranging from $00 to $FF. [[#I-Code Token List|See I-Code Token List]]&lt;br /&gt;
&lt;br /&gt;
==Terms Used==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Vector[1]&lt;br /&gt;
| ||1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Table[1]&lt;br /&gt;
| ||2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Matrix[1]&lt;br /&gt;
| ||3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Variable Declaration Table (VDT)&lt;br /&gt;
| ||Symbol Table&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Data Storage Allocation Table (DSAT)&lt;br /&gt;
| ||Definition Area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Module Format==&lt;br /&gt;
&lt;br /&gt;
Basic09 I-Code modules use the same module format as any other OS-9 executable module. However, I-Code modules include optional header extensions not included in other types of memory modules. They also include two very important tables specific to I-Code modules.&lt;br /&gt;
&lt;br /&gt;
Modules are divided into the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[#Module Header]]&lt;br /&gt;
* [[#I-Code Area]]&lt;br /&gt;
* [[#Description Area]]&lt;br /&gt;
* [[#Symbol Table]]&lt;br /&gt;
* [[#CRC]]&lt;br /&gt;
&lt;br /&gt;
===Module Header===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Description&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Size&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |Note&lt;br /&gt;
|-&lt;br /&gt;
| width=240 |Module Header Space (Sync Bytes)&lt;br /&gt;
| width=190 |INTEGER||Value always $87CD&lt;br /&gt;
|-&lt;br /&gt;
|Total Procedure Block Size||INTEGER||Total size of the module, including CRC and header&lt;br /&gt;
|-&lt;br /&gt;
|Module Name Offset||INTEGER||Offset address in the header of the Procedure Name Beginning&lt;br /&gt;
|-&lt;br /&gt;
|Module Type/Language||BYTE||Value always $22; Sub-Routine/Basic09 I-Code&lt;br /&gt;
|-&lt;br /&gt;
|Module Attributes/Revision||BYTE||Value always $81; Re-Entrant,Re-Locatable Object/Revision=1&lt;br /&gt;
|-&lt;br /&gt;
|Module Header Parity||BYTE||Last required module header entry; optional header extensions follow&lt;br /&gt;
|-&lt;br /&gt;
|I-Code Area Address||INTEGER||Offset address of the I-Code instructions&lt;br /&gt;
|-&lt;br /&gt;
|Runtime Variable Storage Size||INTEGER||Total data memory size for the module&lt;br /&gt;
|-&lt;br /&gt;
|Symbol Table Address||INTEGER||Offset address of the VDT&lt;br /&gt;
|-&lt;br /&gt;
|Description Area Address||INTEGER||Offset address of the DSAT&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Link Storage Offset||INTEGER||Beginning of Named Subroutine Storage in Data Memory&lt;br /&gt;
|-&lt;br /&gt;
|First Data Statement Address||INTEGER||Offset address of the first element of the first data statement&lt;br /&gt;
|-&lt;br /&gt;
|First Executable Statement Address||INTEGER||Value always $0000; (Unused, Possible association: &amp;lt;dex&amp;gt; token. See &#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Status||BYTE||Value always $80; (I do not know what this BYTE is used for.)&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Size||BYTE&lt;br /&gt;
|-&lt;br /&gt;
|Procedure Name Beginning||Procedure Name Size BYTEs||Last character hi-bit set&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Edition Number||BYTE||Always the first byte after the Module Name. This BYTE is actually the first byte of I-Code, at the I-Code Area Address location, and not part of the header. See &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTES&#039;&#039;&#039;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1&#039;&#039;&#039;: The OS-9 Level II Manual describes the Edition byte in Chapter 6. System Command Descriptions,&lt;br /&gt;
under the Ident command on page 6-52,53.&amp;lt;br&amp;gt;&lt;br /&gt;
The OS-9 Level I Manual Set includes this information in the OS9 Commands Manual, Chapter 6. System&lt;br /&gt;
Command Descriptions, Ident command, page 87.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2&#039;&#039;&#039;: the &amp;lt;dex&amp;gt; token is $3C, and is defined in the Basic09 header file:&amp;lt;br&amp;gt;&lt;br /&gt;
   T.DEXC rmb 1 Direct execution&lt;br /&gt;
There is also a Basic09 error:&amp;lt;br&amp;gt;&lt;br /&gt;
   48: Unimplemented routine&lt;br /&gt;
While I have never run into this error in any procedure I have written or decoded, it still exists. The token is actually unused. Aaron Wolfe and I experimented with it, embedding the token in a source file, and the test procedure returned the 48 error when it was loaded. Is it possible that Basic09 originally had code that allowed its developers to insert assembly language instructions directly into the I-Code? I can see where it would have been useful, and I can see where that code would be in comments in the original source, if the authors didn&#039;t want that included in the final compile.&lt;br /&gt;
&lt;br /&gt;
===I-Code Area===&lt;br /&gt;
This is where all of your instruction statements are stored in tokenized post-fix notation form. While there is no requirement to do so, it is typical to see this area terminated with a END ($39) token followed by a line termination token ($3F).&lt;br /&gt;
&lt;br /&gt;
Basic09 allows you to place TYPE, DIM and PARAM statements anywhere in the source code. When Basic09 loads your source, it immediately converts the source to tokenized form. In doing so, it compiles a complete list of your program variables as it loads. It also compiles a complete list of all line references. Line references are &#039;&#039;&#039;not&#039;&#039;&#039; the numbers you place at the beginning of a line. This list is created from all GOTO ($20) and GOSUB ($22) (including ON ERROR GOTO, and ON &amp;lt;expr&amp;gt; GOTO/GOSUB), RESTORE &amp;lt;lref&amp;gt; ($31) and IF-THEN &amp;lt;lref&amp;gt; ($10-$45) statements. In addition, there are internal offset branch tokens, including invisible goto (&amp;lt;ivgt&amp;gt; $55), the line reference token ($3B), ELSE ($11), ENDWHILE ($16) and ENDLOOP ($1A).&lt;br /&gt;
&lt;br /&gt;
* See [[#I-Code Instruction Variable Tokens|I-Code Instruction Variable Tokens]].&lt;br /&gt;
&lt;br /&gt;
===Description Area===&lt;br /&gt;
This is the first of the two variable-related tables in I-Code modules. In reality, this section contains the shape data for all variables more complex than a simple atomic type. The form the shape data takes is specific to the type of variable being described. The most simple form is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;offset - size&#039;&#039;&#039; (both INT-size)&lt;br /&gt;
&lt;br /&gt;
Offset is the data memory location of the variable, and size is the length of the variable. This form is used, by itself, to describe non-array STRING and record variables. All other entries (except TYPE shape data) begin with these two fields, and add extra fields to describe the variable. These variables are the array variables, and include the following fields (all INT-size):&lt;br /&gt;
&lt;br /&gt;
* first element size (all arrays)&lt;br /&gt;
* second element size (all table and matrix arrays)&lt;br /&gt;
* third element size (all matrix arrays)&lt;br /&gt;
&lt;br /&gt;
The above are actually added in reverse order:&lt;br /&gt;
&lt;br /&gt;
 offset - size - elem3 - elem2 - elem1[ - elemSize]&lt;br /&gt;
&lt;br /&gt;
* element length (all STRING and record arrays)&lt;br /&gt;
&lt;br /&gt;
TYPE statement data is different. First, all complex data forms included in the TYPE are listed immediately before the shape data for the TYPE. In these cases, the offset is &#039;&#039;&#039;not&#039;&#039;&#039; a data memory address, but the offset within the record for that variable. The form the TYPE shape data takes is as follows:&lt;br /&gt;
&lt;br /&gt;
   size (INT); unknown use (INT or 2 BYTEs); first field (single BYTE); second field (INT); ... &amp;lt;nth&amp;gt; field (INT)&lt;br /&gt;
&lt;br /&gt;
TYPEs within TYPEs adds a new level of complexity. Before the shape data that &#039;&#039;includes&#039;&#039; a field DIM&#039;d as a record, the shape data for &#039;&#039;that&#039;&#039; record TYPE is defined. as well as any other complex variables defined in &#039;&#039;that&#039;&#039; TYPE occurring before &#039;&#039;its&#039;&#039; shape data.&lt;br /&gt;
&lt;br /&gt;
At the end of this table is another &amp;quot;3-byte&amp;quot; structure. However, this one is reversed, so it is &amp;lt;INT&amp;gt;-&amp;lt;BYTE&amp;gt;, and each can be viewed as separate from the other. The INT is the Total Program Variables count. This number includes all DIM&#039;d, PARAM&#039;d and TYPE&#039;d variable names. Yes, TYPE REG= means REG is counted as a variable. This number also includes all variables defined by use.&lt;br /&gt;
&lt;br /&gt;
The BYTE, in every module I have seen except one, holds the value $03. In the one case, it held the value $04. I no longer have the module that contained $04, and I have never understood what this byte is used for. It is the final byte before the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
===Symbol Table===&lt;br /&gt;
This is the second of the two variable-related tables in I-Code modules. The first thing you will notice is that this table is almost entirely 3-byte structures, similar to the ones found in the I-Code area. The difference here is the number of different tokens for defining variables according to their atomic type, as well as STRINGs, records and arrays. Parameter variables are listed here, following the program variables, and after that comes the named subroutine (external procedure/object-code subroutine) list.&lt;br /&gt;
&lt;br /&gt;
Sub-routine entries begin with the $A0 token, followed by the data memory offset of the pointer to that subroutine, and the text of the name of the subroutine (last character hi-bit set, same as the module name in the header of the module). The Procedure Link Storage Offset in the header points to the first memory location that holds the pointer to the first subroutine named in this section of the list. For all other VDT tokens, see the [[#Symbol Table Tokens|Symbol Table Tokens]].&lt;br /&gt;
&lt;br /&gt;
The offset field in the program variables and parameter variables portion of the list points to one of three places.&lt;br /&gt;
&lt;br /&gt;
* In all atomic record field entries ($40-$43) the offset is the position within the record of that field. The atomic type determines the size.&lt;br /&gt;
* In all atomic variables ($60-$63), the offset is the data memory location of that variable, and the size is determined by the type.&lt;br /&gt;
* In all atomic parameter variables ($80-$83), the offset is the data memory location of that variable, and the size is four BYTEs.&lt;br /&gt;
* In all other variable types, the offset is relative to the beginning of the DSAT.&lt;br /&gt;
&lt;br /&gt;
The data size for each parameter variable, whether atomic or not, is four BYTEs. That is the difference between one parameter&#039;s data memory address and the next one. The DSAT contains the shape data for the more complex variables, but the data memory pointer in a called procedure is a 4-byte pointer.&lt;br /&gt;
&lt;br /&gt;
Note: In a perfect world these three sections of the VDT would be completely segregated. However, this is not the case in the real world. You will see times when there are program variables occurring within the parameter and subroutine sections. I think this is due to repeated edit/save/pack sessions. I believe that a minor change will not result in rebuilding the entire list, especially if you do not reload the source after saving changes.&lt;br /&gt;
&lt;br /&gt;
===CRC===&lt;br /&gt;
All OS-9 memory modules end with a 3-byte CRC. I have not seen a utility for re-calculating a module&#039;s CRC.&lt;br /&gt;
&lt;br /&gt;
==Instruction I-Code==&lt;br /&gt;
In this section I will describe the various structures used in Basic09 coding, including the looping constructs, conditional statements, and the use of literals (constants).&lt;br /&gt;
&lt;br /&gt;
====Internal Structures====&lt;br /&gt;
As you have seen, I-Code makes use of 3-byte structures for variable references. It uses them as well for branch references (including line references). They use the form:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;token&#039;&#039;&#039; - &#039;&#039;&#039;offset&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where token is any valid Basic09 branch or variable token, and offset is a INTEGER-size value. All addressing in I-Code is relative. Branch references are relative to the beginning of the I-Code area, and variable reference offsets are relative to one of the following:&lt;br /&gt;
&lt;br /&gt;
* BYTE, INTEGER, REAL and BOOLEAN references (token values $80-$83): data memory offset relative to the beginning of data memory.&lt;br /&gt;
* STRING references (token value $84): DSAT offset relative to the beginning of the Description area.&lt;br /&gt;
* all other token values in the I-Code area: VDT offset relative to the beginning of the Symbol Table.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* See [[#File Access Mode Tokens|File Access Mode Tokens]].&lt;br /&gt;
&lt;br /&gt;
====Data Memory Map====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0                  $15|$16&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
 |reserved by RunB      |program variables|parameter list|named procedure list|&lt;br /&gt;
 +----------------------+-----------------+--------------+--------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first $16 (22) bytes of the data space is reserved for use by RunB. Following this are the program variables, the parameter list, and the named procedure list.&lt;br /&gt;
&lt;br /&gt;
====Structures====&lt;br /&gt;
=====FOR/NEXT=====&lt;br /&gt;
The FOR/NEXT loop structure is the most complex in terms of I-Code. It contains the most fields of any other loop structure in Basic09.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|FOR R0122= 1 TO 8 \&lt;br /&gt;
|-&lt;br /&gt;
|13||82 07D3||53||8D 01||CB||46 07D8||8D 08||CB||55 006A||3E&lt;br /&gt;
|-&lt;br /&gt;
|FOR||R0122||=||&amp;lt;bc&amp;gt; 1||&amp;lt;flt1&amp;gt;||TO||&amp;lt;bc&amp;gt; 8||&amp;lt;flt1&amp;gt;||&amp;lt;ivgt&amp;gt;||\&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13&#039;&#039;&#039; is the &#039;&#039;&#039;FOR&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;82&#039;&#039;&#039; is the &#039;&#039;&#039;REAL&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory offset for a REAL variable named &#039;&#039;&#039;R0122&#039;&#039;&#039;, which occupies 5 bytes beginning at that location&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;53&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; assignment operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;46&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the data memory offset for a temporary variable used to store the following value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; (byte constant) token, and is associated to the following numeric value&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;08&#039;&#039;&#039; is the value &#039;&#039;&#039;8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CB&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;flt1&amp;gt;&#039;&#039;&#039; (float top of stack) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; (invisible goto) token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;006A&#039;&#039;&#039; is the module offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the  &#039;&#039;&#039;\&#039;&#039;&#039; instruction terminator. This character allows stacking of mutiple statements on a single line in the source code. Many times, these occur because the author included line comments, such as \REM populate array. Usually, this will be the &amp;lt;eol&amp;gt; (3F) terminator&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|NEXT R0122&lt;br /&gt;
|-&lt;br /&gt;
|14||02||07D3||07D8||0000||004C||3F&lt;br /&gt;
|-&lt;br /&gt;
|NEXT|| ||R0122||TO||STEP||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14&#039;&#039;&#039; is the &#039;&#039;&#039;NEXT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; determines REAL or INTEGER, with or without a STEP value.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|INTEGER&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|INTEGER w/STEP&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|REAL&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|REAL w/STEP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;07D3&#039;&#039;&#039; is the data memory address for &#039;&#039;&#039;R0122&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;07D8&#039;&#039;&#039; is the &#039;&#039;&#039;TO&#039;&#039;&#039; variable&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0000&#039;&#039;&#039; is the &#039;&#039;&#039;STEP&#039;&#039;&#039; variable, if included in the FOR statement. In every FOR loop that does not include a STEP value, this integer is 0&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;004C&#039;&#039;&#039; &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; pointing to the beginning of the first instruction within the loop. Note the lack of a $55 token. This is the only condition where a &amp;lt;ivgt&amp;gt; does not have the token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; (end of instruction/line) token&lt;br /&gt;
&lt;br /&gt;
=====WHILE/ENDWHILE=====&lt;br /&gt;
WHILE loops test an expression as TRUE or FALSE at the beginning of the loop. As a result, these loops may be skipped if the condition is already FALSE.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot;|WHILE NOT(EOF(#B0028)) DO&lt;br /&gt;
|-&lt;br /&gt;
|15||80 0329||BE||CD||55 0DE7||48||3F&lt;br /&gt;
|-&lt;br /&gt;
|WHILE||B0028||EOF()||NOT()||&amp;lt;ivgt&amp;gt;||DO||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;15&#039;&#039;&#039; is the &#039;&#039;&#039;WHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80&#039;&#039;&#039; is the &#039;&#039;&#039;BYTE&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0329&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;B0028&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BE&#039;&#039;&#039; is the &#039;&#039;&#039;EOF()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CD&#039;&#039;&#039; is the &#039;&#039;&#039;NOT()&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0DE7&#039;&#039;&#039; is the offset to branch to when the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;48&#039;&#039;&#039; is the &#039;&#039;&#039;DO&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDWHILE&lt;br /&gt;
|-&lt;br /&gt;
|16||0CBF||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDWHILE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;16&#039;&#039;&#039; is the &#039;&#039;&#039;ENDWHILE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0CBF&#039;&#039;&#039; is the offset address of the &#039;&#039;&#039;WHILE&#039;&#039;&#039; statement&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====REPEAT/UNTIL=====&lt;br /&gt;
REPEAT loops will always be executed at least once, since the test for a TRUE/FALSE condition occurs at the bottom of the loop.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|REPEAT&lt;br /&gt;
|-&lt;br /&gt;
|17||3F&lt;br /&gt;
|-&lt;br /&gt;
|REPEAT||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;17&#039;&#039;&#039; is the &#039;&#039;&#039;REPEAT&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;13&amp;quot;|UNTIL MID$(S0107,I0051,1)=&amp;quot;/&amp;quot; OR I0051=0&lt;br /&gt;
|-&lt;br /&gt;
|18||84 01FF||81 0378||8D 01||C0||90 2F FF||DF||81 0378||8D 00||DD||D1||55 102C||3F&lt;br /&gt;
|-&lt;br /&gt;
|UNTIL||S0107||I0051||&amp;lt;bc&amp;gt; 1||MID$(,,)||&amp;quot;/&amp;quot;||=||I0051||&amp;lt;bc&amp;gt; 0||=||OR||&amp;lt;ivgt&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;18&#039;&#039;&#039; is the &#039;&#039;&#039;UNTIL&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01FF&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;S0107&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01&#039;&#039;&#039; is the value &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C0&#039;&#039;&#039; is the &#039;&#039;&#039;MID$&#039;&#039;&#039; function token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; beginning-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2F&#039;&#039;&#039; is the &#039;&#039;&#039;/&#039;&#039;&#039; character&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; end-of-string token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0378&#039;&#039;&#039; is the data memory address of a variable named &#039;&#039;&#039;I0051&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;D1&#039;&#039;&#039; is the &#039;&#039;&#039;OR&#039;&#039;&#039; boolean operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;102C&#039;&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====LOOP/ENDLOOP=====&lt;br /&gt;
This is the most simple loop structure in Basic09. The EXITIF-THEN/ENDEXIT construct is the only way to exit this loop.&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|LOOP&lt;br /&gt;
|-&lt;br /&gt;
|19||3F&lt;br /&gt;
|-&lt;br /&gt;
|LOOP||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;19&#039;&#039;&#039; is the &#039;&#039;&#039;LOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDLOOP&lt;br /&gt;
|-&lt;br /&gt;
|1A||0BC6||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDLOOP||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1A&#039;&#039;&#039; is the &#039;&#039;&#039;ENDLOOP&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0BC6&#039;&#039;&#039; is the offset address of the first instruction inside the loop&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
====Conditional====&lt;br /&gt;
=====IF-THEN &amp;lt;lref&amp;gt;=====&lt;br /&gt;
This form of IF/THEN does not use a ENDIF token.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|IF I0040=0 THEN 20&lt;br /&gt;
|-&lt;br /&gt;
|10||81 035E||8D 00||DD||55 0395||45||3B 05E1||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||I0040||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;blref&amp;gt; 20||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81&#039;&#039;&#039; is the &#039;&#039;&#039;INTEGER&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;035E&#039;&#039;&#039; is the data memory address of the variable &#039;&#039;&#039;I0040&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;00&#039;&#039;&#039; is the value &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DD&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; byte/integer comparison operator token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0395&#039;&#039;&#039; is the offset address to branch to if the condition fails, the next instruction&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3B&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;blref&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;05E1&#039;&#039;&#039; is the offset address inferred by the reference &#039;&#039;&#039;20&#039;&#039;&#039; and is where execution will continue if the condition is TRUE&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,2)=&amp;quot;-D&amp;quot; THEN \&lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 02||C1||90 2D44 FF||DF||55 03DD||45||3E&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 2||LEFT$(,)||&amp;quot;-D&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;02&#039;&#039;&#039; is the value &#039;&#039;&#039;2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D44&#039;&#039;&#039; is the characters &#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03DD&#039;&#039;&#039; is the offset address to branch to if the condition fails&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3E&#039;&#039;&#039; is the &#039;&#039;&#039;\&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====IF-THEN/ELSE/ENDIF=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;9&amp;quot;|IF LEFT$(S0098,3)=&amp;quot;-RR&amp;quot; THEN &lt;br /&gt;
|-&lt;br /&gt;
|10||84 01CF||8D 03||C1||90 2D5252 FF||DF||55 0463||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|IF||S0098||&amp;lt;bc&amp;gt; 3||LEFT$(,)||&amp;quot;-RR&amp;quot;||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10&#039;&#039;&#039; is the &#039;&#039;&#039;IF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;84&#039;&#039;&#039; is the &#039;&#039;&#039;STRING&#039;&#039;&#039; type token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;01CF&#039;&#039;&#039; is the DSAT offset of the variable &#039;&#039;&#039;S0098&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;bc&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;03&#039;&#039;&#039; is the value &#039;&#039;&#039;3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C1&#039;&#039;&#039; is the &#039;&#039;&#039;LEFT$&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;90&#039;&#039;&#039; is the beginning &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2D5252&#039;&#039;&#039; is the characters &#039;&#039;&#039;-RR&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;FF&#039;&#039;&#039; is the ending &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;DF&#039;&#039;&#039; is the &#039;&#039;&#039;=&#039;&#039;&#039; string comparison operator&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;55&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;ivgt&amp;gt;&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;0463&#039;&#039;&#039; is the offset address to branch to if the condition fails, the first instruction inside the ELSE clause&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;45&#039;&#039;&#039; is the &#039;&#039;&#039;THEN&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ELSE&lt;br /&gt;
|- &lt;br /&gt;
|11||046B||3F&lt;br /&gt;
|-&lt;br /&gt;
|ELSE||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11&#039;&#039;&#039; is the &#039;&#039;&#039;ELSE&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;046B&#039;&#039;&#039; is the offset address of the first instruction after the ENDIF and &amp;lt;eol&amp;gt; tokens)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|ENDIF&lt;br /&gt;
|-&lt;br /&gt;
|12||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDIF||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12&#039;&#039;&#039; is the &#039;&#039;&#039;ENDIF&#039;&#039;&#039; token&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; is the &#039;&#039;&#039;&amp;lt;eol&amp;gt;&#039;&#039;&#039; token&lt;br /&gt;
&lt;br /&gt;
=====EXITIF-THEN/ENDEXIT=====&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;10&amp;quot;|EXITIF IA0064(I0045,R0125)=0 THEN &lt;br /&gt;
|-&lt;br /&gt;
|1B||81 0368||82 2952||C8||87 00E4||8D 00||DD||55 1CA2||45||3F&lt;br /&gt;
|-&lt;br /&gt;
|EXITIF||I0045||R0125||&amp;lt;flt1&amp;gt;||IA0064||&amp;lt;bc&amp;gt; 0||=||&amp;lt;ivgt&amp;gt;||THEN||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot;|ENDEXIT&lt;br /&gt;
|-&lt;br /&gt;
|1C||1F09||3F&lt;br /&gt;
|-&lt;br /&gt;
|ENDEXIT||&amp;lt;offset&amp;gt;||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Literals====&lt;br /&gt;
Basic09 does not have named constants.&#039;&#039;&#039;*&#039;&#039;&#039; Because of this, all &amp;quot;constants&amp;quot; in Basic09 are of the literal variety. If you want to use variables as constants, you may do so, but it is up to you to ensure that the variables being used as constants are not being modified. To help with this, the recommended form of variable naming is to use a lowercase &#039;c&#039; or a underscore &#039;_&#039; as the first character of the variable name (e.g. cMyConstant or cMYCONSTANT or _myConstant or _MYCONSTANT).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Type&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
|&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Value&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BYTE&lt;br /&gt;
|$8D|| ||numeric literal from 0 to 255/-128 to 127&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|INTEGER&lt;br /&gt;
|$8E|| ||numeric literal from -32768 to 32767&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|REAL&lt;br /&gt;
|$8F|| ||numeric literal in the range of a Basic09 REAL&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Hexadecimal Integer&lt;br /&gt;
|$91|| ||hexadecimal value from $0000 to $FFFF&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|BOOLEAN&lt;br /&gt;
|$BC = TRUE&lt;br /&gt;
|-&lt;br /&gt;
| ||$BD = FALSE&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|STRING&lt;br /&gt;
|$90 = beginning bound of string|| ||string of text&lt;br /&gt;
|-&lt;br /&gt;
| ||$FF = ending bound of string&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; Basic09 has one named constant: &#039;&#039;&#039;PI&#039;&#039;&#039;. It is listed with the functions, but the descriptions in the manual say &amp;quot;[Represents ]the constant 3.14159265&amp;quot; (Level 1:Chapter 8. Expressions, Operators, and Functions:p. 54) (Level 2:Chapter 7. Expressions, Operators, and Functions:p. 7-8)&lt;br /&gt;
&lt;br /&gt;
==About GOTO, GOSUB and &amp;lt;lref&amp;gt; tokens==&lt;br /&gt;
There are two types of these identified in the Basic09 header. They are identified as bound and unbound.&lt;br /&gt;
&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
! !!GOTO!!GOSUB!!&amp;lt;lref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Unbound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1F&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|21&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Bound&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|20&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|22&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|3B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bound versions are the ones that occur in packed I-Code. I believe the unbound versions are used when Basic09 loads your source into the workspace and converts it to I-Code initially. I think it works something like this:&lt;br /&gt;
&lt;br /&gt;
As Basic09 loads the source, it is replacing all keywords, function names and other items with tokens. As it comes across GOTO, GOSUB and &amp;lt;lref&amp;gt; identifiers (THEN &amp;lt;lnum&amp;gt;, RESTORE &amp;lt;lnum&amp;gt;, ON ERROR GOTO &amp;lt;lnum&amp;gt;, ON &amp;lt;expr&amp;gt; GOTO/GOSUB &amp;lt;lnums&amp;gt;), it searches the table it creates to hold branch references. If the line number has already been identified (existed at the beginning of a line and the address was resolved), that one is skipped and the identifier is flagged with the bound token. If that line number has not yet occurred in the source, then that identifier is flagged with the unbound token until that line number occurs at the beginning of a source statement, at which time the identifier is flagged with the bound token. Any identifiers not resolved when the source is loaded results in an error.&lt;br /&gt;
&lt;br /&gt;
This is why the line number at the beginning of a line can disappear from your I-Code. Without an identifier to point to it, that reference does not exist in packed I-Code.&lt;br /&gt;
&lt;br /&gt;
==File Access Mode Tokens==&lt;br /&gt;
READ+WRITE = UPDATE&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
|&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Instruction Variable Tokens==&lt;br /&gt;
&lt;br /&gt;
I have never liked the usage of MIRROR in this instance. I have no better way to describe these tokens at this time. I referred to them as mirror tokens, because in some instances they act as a duplicate of the variable, such as in the case of a:=a+1. Both &#039;a&#039; variables refer to the same variable, but in the I-Code, each has a separate token, and with the exception of 80-84 (in the instruction area) point to the VDT. 80-83 in the instruction area point to data memory addresses, and 84 points to the DSAT.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!TOKEN!!MIRROR!!TOKEN!!MIRROR!!TOKEN!!MIRROR&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |80&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |81&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |82&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |83&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |84&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |89&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F2&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |VECTOR&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8A&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/86&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F3&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |TABLE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/87&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F4&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |MATRIX&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8C&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |85/88&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |F5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Symbol Table Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|+ SIM = Simple &amp;amp;nbsp; VEC = Vector &amp;amp;nbsp; TAB = Table &amp;amp;nbsp; MAT = Matrix&lt;br /&gt;
!&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |FIELD&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |VARIABLE&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; |PARAMETER&lt;br /&gt;
|-&lt;br /&gt;
!TYPE!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT!!SIM!!VEC!!TAB!!MAT&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BYTE&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |40||48||50||58||60||68||70||78||80||88||90||98&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |INTEGER&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |41||49||51||59||61||69||71||79||81||89||91||99&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |REAL&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |42||4A||52||5A||62||6A||72||7A||82||8A||92||9A&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |BOOLEAN&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |43||4B||53||5B||63||6B||73||7B||83||8B||93||9B&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |STRING&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |44||4C||54||5C||64||6C||74||7C||84||8C||94||9C&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;left&amp;quot; |RECORD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |45||4D||55||5D||65||6D||75||7D||85||8D||95||9D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
!35&lt;br /&gt;
|BASE 0&lt;br /&gt;
!36&lt;br /&gt;
|BASE 1&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Secondary Keyword Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Punctuation Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|comma||used in DIM and PARAM statements and ON &amp;lt;expr&amp;gt; GOTO/GOSUB statements&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|colon||used in DIM, TYPE and PARAM statements to define atomic type&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|open parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|close parenthesis||used in RUN statements&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|semi-colon||used in TYPE statements to concatenate fields of different types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Length Value Tokens==&lt;br /&gt;
These are used to determine string length in DIM, TYPE and PARAM statements.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[ open bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|] close bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Assignment Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:= colon-equals||PASCAL-style assignment operator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|= equals||normal assignment operator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File Mode and Path Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|: colon||mode&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|# hash||file path&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Internal Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt; complex variable assignment&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt; unbound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt; bound line reference&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\ backslash end-of-instruction, continue line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt; end-of-line&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt; invisible goto&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt; fix top of stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt; fix second on stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt; fix third on stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt; float top of stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt; float second on stack&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Numeric Function Tokens==&lt;br /&gt;
&#039;&#039;&#039;PI&#039;&#039;&#039; is actually a constant. &#039;&#039;&#039;INT()&#039;&#039;&#039; has two forms (&#039;&#039;&#039;AC&#039;&#039;&#039; and &#039;&#039;&#039;AD&#039;&#039;&#039;). Note the difference in the way the level 1 and level 2 manuals define the function:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 1:Chapter 8. Expressions, Operators, and Functions:p 54:&lt;br /&gt;
|-&lt;br /&gt;
|INT(&amp;lt;num&amp;gt;)||truncates all digits to the right of the decimal point of a REAL &amp;lt;num&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|Level 2:Chapter 7. Expressions, Operators, and Functions:p 7-8:&lt;br /&gt;
|-&lt;br /&gt;
|INT||Calculates the largest whole number less than or equal to the specified number.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because of this, I am not sure why there are two versions. Further investigation must be done.&lt;br /&gt;
&lt;br /&gt;
In the following list, the 98,9D and A6 tokens are BYTE/INTEGER versions, and 99,9E and A7 tokens are REAL versions. There are other tokens that reflect this division, but more investigation needs to be done to determine the specifics.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screen/Print Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File and Other Function Tokens==&lt;br /&gt;
ADDR() and SIZE() are the only two functions that have two tokens each. In I-Code, the second token appears in the code before the address of the item to be used as the argument to the function, and the function token appears after it.&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot;|reg.x:=ADDR(optionPacket)&lt;br /&gt;
|-&lt;br /&gt;
|0E||85 000C||F6 0006||52||93||F2 0015||92||3F&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;cva&amp;gt;||reg||.x||:=||&amp;lt;addr&amp;gt;||optionPacket||ADDR()||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0E&#039;&#039;&#039; = cva (complex variable assignment)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;85 000C&#039;&#039;&#039; = reg&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F6 0006&#039;&#039;&#039; = .x&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;52&#039;&#039;&#039; = := (assignment operator)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;93&#039;&#039;&#039; = &amp;lt;addr&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0015&#039;&#039;&#039; = optionPacket&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;92&#039;&#039;&#039; = ADDR()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = eol (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
:{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;12&amp;quot;|SEEK #filePath,numVars*SIZE(vars)+2&lt;br /&gt;
|-&lt;br /&gt;
|2B||54||80 0252||4B||81 0259||95||F2 0027||94||EC||8D 02||E7||3F&lt;br /&gt;
|-&lt;br /&gt;
|SEEK||#||filePath||,||numVars||&amp;lt;size&amp;gt;||vars||SIZE()||*||&amp;lt;bc&amp;gt; 2||+||&amp;lt;eol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2B&#039;&#039;&#039; = SEEK&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;54&#039;&#039;&#039; = #&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;80 0252&#039;&#039;&#039; = filePath&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4B&#039;&#039;&#039; = , (comma)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;81 0259&#039;&#039;&#039; = numVars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;95&#039;&#039;&#039; = &amp;lt;size&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;F2 0027&#039;&#039;&#039; = vars&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;94&#039;&#039;&#039; = SIZE()&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;EC&#039;&#039;&#039; = * (mult)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;8D 02&#039;&#039;&#039; = &amp;lt;bc&amp;gt; 2 (byte constant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;E7&#039;&#039;&#039; = + (add)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3F&#039;&#039;&#039; = &amp;lt;eol&amp;gt; (end-of-instruction, newline)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==String-to-Number Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Number-to-String Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$() (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$() (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Logical Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Boolean Function Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| - (BYTE/INTEGER)&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| - (REAL)&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Comparison Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BOOLEAN&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
! &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Math Operator Tokens==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|BYTE/&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|INTEGER&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|REAL&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|STRING&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==I-Code Token List==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Token&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Name&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Used In&lt;br /&gt;
! align=&amp;quot;left&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|GLOBAL&lt;br /&gt;
|Reserved&lt;br /&gt;
|Global Variable&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|PARAM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|TYPE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!02&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|DIM&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!03&lt;br /&gt;
|UPDATE&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|DATA&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!04&lt;br /&gt;
|EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|STOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!05&lt;br /&gt;
|READ+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|BYE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!06&lt;br /&gt;
|WRITE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|TRON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!07&lt;br /&gt;
|UPDATE+EXEC&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!08&lt;br /&gt;
|TROFF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!09&lt;br /&gt;
|PAUSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0A&lt;br /&gt;
|DEG&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0B&lt;br /&gt;
|RAD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0C&lt;br /&gt;
|RETURN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0D&lt;br /&gt;
|LET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!0E&lt;br /&gt;
|&amp;lt;cva&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Complex Variable Assignment&lt;br /&gt;
|-&lt;br /&gt;
!0F&lt;br /&gt;
|POKE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|IF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|ELSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!12&lt;br /&gt;
|ENDIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!13&lt;br /&gt;
|FOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!14&lt;br /&gt;
|NEXT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!15&lt;br /&gt;
|WHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!16&lt;br /&gt;
|ENDWHILE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!17&lt;br /&gt;
|REPEAT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!18&lt;br /&gt;
|UNTIL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!19&lt;br /&gt;
|LOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1A&lt;br /&gt;
|ENDLOOP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1B&lt;br /&gt;
|EXITIF&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1C&lt;br /&gt;
|ENDEXIT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1D&lt;br /&gt;
|ON&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1E&lt;br /&gt;
|ERROR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!1F&lt;br /&gt;
|GOTO&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!20&lt;br /&gt;
|GOTO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!21&lt;br /&gt;
|GOSUB&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound&lt;br /&gt;
|-&lt;br /&gt;
!22&lt;br /&gt;
|GOSUB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound&lt;br /&gt;
|-&lt;br /&gt;
!23&lt;br /&gt;
|RUN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!24&lt;br /&gt;
|KILL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!25&lt;br /&gt;
|INPUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!26&lt;br /&gt;
|PRINT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|? Becomes PRINT in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!27&lt;br /&gt;
|CHD&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!28&lt;br /&gt;
|CHX&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!29&lt;br /&gt;
|CREATE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2A&lt;br /&gt;
|OPEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2B&lt;br /&gt;
|SEEK&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2C&lt;br /&gt;
|READ&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2D&lt;br /&gt;
|WRITE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2E&lt;br /&gt;
|GET&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!2F&lt;br /&gt;
|PUT&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!30&lt;br /&gt;
|CLOSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!31&lt;br /&gt;
|RESTORE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!32&lt;br /&gt;
|DELETE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!33&lt;br /&gt;
|CHAIN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!34&lt;br /&gt;
|SHELL&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!35&lt;br /&gt;
|BASE0&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!36&lt;br /&gt;
|BASE1&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!37&lt;br /&gt;
|REM&lt;br /&gt;
|Editor&lt;br /&gt;
|! Becomes REM in the Editor&lt;br /&gt;
|-&lt;br /&gt;
!38&lt;br /&gt;
|(*&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!39&lt;br /&gt;
|END&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!3A&lt;br /&gt;
|&amp;lt;ulref&amp;gt;&lt;br /&gt;
|Editor&lt;br /&gt;
|Unbound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3B&lt;br /&gt;
|&amp;lt;blref&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Bound Line Reference&lt;br /&gt;
|-&lt;br /&gt;
!3C&lt;br /&gt;
|&amp;lt;dex&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Direct Execution (Unimplemented)&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|PROCEDURE&lt;br /&gt;
|Editor&lt;br /&gt;
|Procedure start&lt;br /&gt;
|-&lt;br /&gt;
!3D&lt;br /&gt;
|&amp;lt;erl&amp;gt;&lt;br /&gt;
|Editor/Debug&lt;br /&gt;
|Error Line&lt;br /&gt;
|-&lt;br /&gt;
!3E&lt;br /&gt;
|\&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction, Continue Line&lt;br /&gt;
|-&lt;br /&gt;
!3F&lt;br /&gt;
|&amp;lt;eol&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|End-of-Instruction and Line&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|BYTE&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!40&lt;br /&gt;
|fbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|INTEGER&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!41&lt;br /&gt;
|finteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|REAL&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!42&lt;br /&gt;
|freal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|BOOLEAN&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!43&lt;br /&gt;
|fboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|STRING&lt;br /&gt;
|Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!44&lt;br /&gt;
|fstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field String Variable&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|THEN&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!45&lt;br /&gt;
|frecord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!46&lt;br /&gt;
|TO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!47&lt;br /&gt;
|STEP&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|DO&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!48&lt;br /&gt;
|fvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|USING&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!49&lt;br /&gt;
|fvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|File Mode Operator&lt;br /&gt;
|-&lt;br /&gt;
!4A&lt;br /&gt;
|fvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|,&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Comma Separator&lt;br /&gt;
|-&lt;br /&gt;
!4B&lt;br /&gt;
|fvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|:&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Colon&lt;br /&gt;
|-&lt;br /&gt;
!4C&lt;br /&gt;
|fvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|(&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4D&lt;br /&gt;
|fvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!4E&lt;br /&gt;
|)&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Parenthesis&lt;br /&gt;
|-&lt;br /&gt;
!4F&lt;br /&gt;
|[&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Left Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|]&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Right Bracket&lt;br /&gt;
|-&lt;br /&gt;
!50&lt;br /&gt;
|ftableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Semi-colon&lt;br /&gt;
|-&lt;br /&gt;
!51&lt;br /&gt;
|ftablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|:=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!52&lt;br /&gt;
|ftabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|AssignmentOperator&lt;br /&gt;
|-&lt;br /&gt;
!53&lt;br /&gt;
|ftablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|#&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Channel (Path) Number Operator&lt;br /&gt;
|-&lt;br /&gt;
!54&lt;br /&gt;
|ftables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (used in many statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|&amp;lt;ivgt&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Invisible GOTO (special case in ON var GOTO/GOSUB statements)&lt;br /&gt;
|-&lt;br /&gt;
!55&lt;br /&gt;
|ftableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!56&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!57&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!58&lt;br /&gt;
|fmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!59&lt;br /&gt;
|fmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!5A&lt;br /&gt;
|fmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!5B&lt;br /&gt;
|fmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!5C&lt;br /&gt;
|fmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!5D&lt;br /&gt;
|fmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!5E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!5F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!60&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!61&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!62&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!63&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!64&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry,StringVariable&lt;br /&gt;
|-&lt;br /&gt;
!65&lt;br /&gt;
|record&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!66&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!67&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!68&lt;br /&gt;
|vectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!69&lt;br /&gt;
|vectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!6A&lt;br /&gt;
|vectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!6B&lt;br /&gt;
|vectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!6C&lt;br /&gt;
|vectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!6D&lt;br /&gt;
|vectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!6E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!6F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!70&lt;br /&gt;
|tableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!71&lt;br /&gt;
|tablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!72&lt;br /&gt;
|tabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!73&lt;br /&gt;
|tablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!74&lt;br /&gt;
|tables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!75&lt;br /&gt;
|tableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!76&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!77&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!78&lt;br /&gt;
|matrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!79&lt;br /&gt;
|matrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!7A&lt;br /&gt;
|matrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!7B&lt;br /&gt;
|matrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!7C&lt;br /&gt;
|matrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!7D&lt;br /&gt;
|matrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!7E&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!7F&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|byte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|pbyte&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Byte Variable&lt;br /&gt;
|-&lt;br /&gt;
!80&lt;br /&gt;
|DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|integer&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|pinteger&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Integer Variable&lt;br /&gt;
|-&lt;br /&gt;
!81&lt;br /&gt;
|READ+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|real&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|preal&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Real Variable&lt;br /&gt;
|-&lt;br /&gt;
!82&lt;br /&gt;
|WRITE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|boolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|pboolean&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Boolean Variable&lt;br /&gt;
|-&lt;br /&gt;
!83&lt;br /&gt;
|UPDATE+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|string&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|pstring&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter String Variable&lt;br /&gt;
|-&lt;br /&gt;
!84&lt;br /&gt;
|EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|record/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction,Record, Parameter (Simple/Record) Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|precord&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter Record Variable&lt;br /&gt;
|-&lt;br /&gt;
!85&lt;br /&gt;
|READ+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|vector/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!86&lt;br /&gt;
|WRITE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|table/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!87&lt;br /&gt;
|UPDATE+EXEC+DIR&lt;br /&gt;
|I-Code&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|matrix/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!88&lt;br /&gt;
|pvectorb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|varm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!89&lt;br /&gt;
|pvectori&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|fvectorm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8A&lt;br /&gt;
|pvectorr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|ftablem&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8B&lt;br /&gt;
|pvectorl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|fmatrixm&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Field 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!8C&lt;br /&gt;
|pvectors&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|&amp;lt;bc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|BYTE Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8D&lt;br /&gt;
|pvectoru&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 1 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!8E&lt;br /&gt;
|&amp;lt;ic&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|INTEGER Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!8F&lt;br /&gt;
|&amp;lt;rc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|REAL Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Beginning&lt;br /&gt;
|-&lt;br /&gt;
!90&lt;br /&gt;
|ptableb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Hexadecimal Constant (Literal)&lt;br /&gt;
|-&lt;br /&gt;
!91&lt;br /&gt;
|ptablei&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ADDR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!92&lt;br /&gt;
|ptabler&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|&amp;lt;addr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of ADDR()&lt;br /&gt;
|-&lt;br /&gt;
!93&lt;br /&gt;
|ptablel&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|SIZE()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!94&lt;br /&gt;
|ptables&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|&amp;lt;size&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Second Byte of SIZE()&lt;br /&gt;
|-&lt;br /&gt;
!95&lt;br /&gt;
|ptableu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 2 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!96&lt;br /&gt;
|POS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!97&lt;br /&gt;
|ERR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!98&lt;br /&gt;
|pmatrixb&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Byte Array&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|MOD()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!99&lt;br /&gt;
|pmatrixi&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Integer Array&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|RND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9A&lt;br /&gt;
|pmatrixr&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Real Array&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|PI&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9B&lt;br /&gt;
|pmatrixl&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Boolean Array&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|SUBSTR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9C&lt;br /&gt;
|pmatrixs&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional String Array&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9D&lt;br /&gt;
|pmatrixu&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|VDT Entry, Parameter 3 Dimensional Record Array&lt;br /&gt;
|-&lt;br /&gt;
!9E&lt;br /&gt;
|SGN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!9F&lt;br /&gt;
|SIN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|COS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A0&lt;br /&gt;
|&amp;lt;subr&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Named Subroutine&lt;br /&gt;
|-&lt;br /&gt;
!A1&lt;br /&gt;
|TAN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A2&lt;br /&gt;
|ASN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A3&lt;br /&gt;
|ACS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A4&lt;br /&gt;
|ATN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A5&lt;br /&gt;
|EXP()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A6&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A7&lt;br /&gt;
|ABS()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A8&lt;br /&gt;
|LOG()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!A9&lt;br /&gt;
|LOG10()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AA&lt;br /&gt;
|SQRT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!AB&lt;br /&gt;
|SQR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Becomes SQRT() in the Code&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AD&lt;br /&gt;
|INT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!AE&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!AF&lt;br /&gt;
|FIX()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B0&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B1&lt;br /&gt;
|FLOAT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B2&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!B3&lt;br /&gt;
|SQ()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!B4&lt;br /&gt;
|PEEK()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B5&lt;br /&gt;
|LNOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|LogicalNOT&lt;br /&gt;
|-&lt;br /&gt;
!B6&lt;br /&gt;
|VAL()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B7&lt;br /&gt;
|LEN()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B8&lt;br /&gt;
|ASC()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!B9&lt;br /&gt;
|LAND()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical AND&lt;br /&gt;
|-&lt;br /&gt;
!BA&lt;br /&gt;
|LOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical OR&lt;br /&gt;
|-&lt;br /&gt;
!BB&lt;br /&gt;
|LXOR()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Logical XOR&lt;br /&gt;
|-&lt;br /&gt;
!BC&lt;br /&gt;
|TRUE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BD&lt;br /&gt;
|FALSE&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BE&lt;br /&gt;
|EOF()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!BF&lt;br /&gt;
|TRIM$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C0&lt;br /&gt;
|MID$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C1&lt;br /&gt;
|LEFT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C2&lt;br /&gt;
|RIGHT$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C3&lt;br /&gt;
|CHR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C4&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!C5&lt;br /&gt;
|STR$()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real&lt;br /&gt;
|-&lt;br /&gt;
!C6&lt;br /&gt;
|DATE$&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C7&lt;br /&gt;
|TAB&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;ritc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real-&amp;gt;Byte/Integer Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!C8&lt;br /&gt;
|&amp;lt;fix1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!C9&lt;br /&gt;
|&amp;lt;fix2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CA&lt;br /&gt;
|&amp;lt;fix3&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Fix Third on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;irtc&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer-&amp;gt;Real Type Conversion&lt;br /&gt;
|-&lt;br /&gt;
!CB&lt;br /&gt;
|&amp;lt;flt1&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Top of Stack&lt;br /&gt;
|-&lt;br /&gt;
!CC&lt;br /&gt;
|&amp;lt;flt2&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Float Second on Stack&lt;br /&gt;
|-&lt;br /&gt;
!CD&lt;br /&gt;
|NOT()&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!CE&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Byte/Integer&lt;br /&gt;
|-&lt;br /&gt;
!CF&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|(Monadic) Negate Real&lt;br /&gt;
|-&lt;br /&gt;
!D0&lt;br /&gt;
|AND&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D1&lt;br /&gt;
|OR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D2&lt;br /&gt;
|XOR&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!D3&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D4&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D5&lt;br /&gt;
|&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D6&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D7&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D8&lt;br /&gt;
|&amp;lt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!D9&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DA&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DB&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DC&lt;br /&gt;
|&amp;lt;&amp;gt;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator &amp;gt;&amp;lt; is converted to &amp;lt;&amp;gt; in the code&lt;br /&gt;
|-&lt;br /&gt;
!DD&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DE&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!DF&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E0&lt;br /&gt;
|=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Boolean Comparison Operator&lt;br /&gt;
|-&lt;br /&gt;
!E1&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E2&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E3&lt;br /&gt;
|&amp;gt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Greater/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E4&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E5&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E6&lt;br /&gt;
|&amp;lt;=&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Less/Equal Operator&lt;br /&gt;
|-&lt;br /&gt;
!E7&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E8&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Add Operator&lt;br /&gt;
|-&lt;br /&gt;
!E9&lt;br /&gt;
| +&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|String Concantenate Operator&lt;br /&gt;
|-&lt;br /&gt;
!EA&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EB&lt;br /&gt;
| -&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Subtract Operator (Dyadic)&lt;br /&gt;
|-&lt;br /&gt;
!EC&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!ED&lt;br /&gt;
|*&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Multiply Operator&lt;br /&gt;
|-&lt;br /&gt;
!EE&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Byte/Integer Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!EF&lt;br /&gt;
|/&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Real Divide Operator&lt;br /&gt;
|-&lt;br /&gt;
!F0&lt;br /&gt;
|^&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F1&lt;br /&gt;
|**&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Exponent Operator&lt;br /&gt;
|-&lt;br /&gt;
!F2&lt;br /&gt;
|varm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Simple/Record, Parameter Variable Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F3&lt;br /&gt;
|vectorm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F4&lt;br /&gt;
|tablem/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F5&lt;br /&gt;
|matrixm/p&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror&lt;br /&gt;
|-&lt;br /&gt;
!F6&lt;br /&gt;
|field&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field Variable&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|UPDATE&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F7&lt;br /&gt;
|fvector&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 1 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|EXEC&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F8&lt;br /&gt;
|ftable&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 2 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|DIR&lt;br /&gt;
|Editor&lt;br /&gt;
|File Mode&lt;br /&gt;
|-&lt;br /&gt;
!F9&lt;br /&gt;
|fmatrix&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|Instruction, Field 3 Dimensional Array&lt;br /&gt;
|-&lt;br /&gt;
!FA&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FB&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FC&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FD&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FE&lt;br /&gt;
|&lt;br /&gt;
|Unused&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!FF&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|I-Code/Editor&lt;br /&gt;
|STRING Constant (Literal) - Terminator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. The terms Vector, Table and Matrix, as used to describe the arrays, is defined in the Microware OS-9 Basic User Manual (for OS-9/68000, (c)1991), Chapter 3: Program Construction: Complex Data Types and Subroutines on page 3-1.&lt;/div&gt;</summary>
		<author><name>Wayne</name></author>
	</entry>
</feed>