MediaWiki:Sitenotice
2026-03-12: Cocopedia.com is now using a new caching system that should make things faster. Please let me know if you encounter any new issues. OS-9 Al (talk)

The Structure of I-Code

From CoCopedia - The Tandy/Radio Shack Color Computer Wiki
Revision as of 21:26, 27 June 2013 by Wayne (talk | contribs)
Jump to navigation Jump to search

The 'I' 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 Reverse Polish Notation) order.

The tokens used by Basic09 are a single byte ranging from $00 to $FF. The table below defines the tokens.

I-Code Token List

Token Name Used In Description
00 GLOBAL Reserved Global Variable
01 PARAM Editor
01 READ I-Code File Mode
02 TYPE Editor
02 WRITE I-Code File Mode
03 DIM Editor
03 UPDATE I-Code File Mode
04 DATA I-Code/Editor
04 EXEC I-Code File Mode
05 STOP I-Code/Editor
05 READ+EXEC I-Code File Mode
06 BYE I-Code/Editor
06 WRITE+EXEC I-Code File Mode
07 TRON I-Code/Editor
07 UPDATE+EXEC I-Code File Mode
08 TROFF I-Code/Editor
09 PAUSE I-Code/Editor
0A DEG I-Code/Editor
0B RAD I-Code/Editor
0C RETURN I-Code/Editor
0D LET I-Code/Editor
0E <cva> I-Code/Editor Complex Variable Assignment
0F POKE I-Code/Editor
10 IF I-Code/Editor
11 ELSE I-Code/Editor
12 ENDIF I-Code/Editor
13 FOR I-Code/Editor
14 NEXT I-Code/Editor
15 WHILE I-Code/Editor
16 ENDWHILE I-Code/Editor
17 REPEAT I-Code/Editor
18 UNTIL I-Code/Editor
19 LOOP I-Code/Editor
1A ENDLOOP I-Code/Editor
1B EXITIF I-Code/Editor
1C ENDEXIT I-Code/Editor
1D ON I-Code/Editor
1E ERROR I-Code/Editor
1F GOTO Editor Unbound
20 GOTO I-Code/Editor Bound
21 GOSUB Editor Unbound
22 GOSUB I-Code/Editor Bound
23 RUN I-Code/Editor
24 KILL I-Code/Editor
25 INPUT I-Code/Editor
26 PRINT I-Code/Editor ? Becomes PRINT in the Editor
27 CHD I-Code/Editor
28 CHX I-Code/Editor
29 CREATE I-Code/Editor
2A OPEN I-Code/Editor
2B SEEK I-Code/Editor
2C READ I-Code/Editor
2D WRITE I-Code/Editor
2E GET I-Code/Editor
2F PUT I-Code/Editor
30 CLOSE I-Code/Editor
31 RESTORE I-Code/Editor
32 DELETE I-Code/Editor
33 CHAIN I-Code/Editor
34 SHELL I-Code/Editor
35 BASE 0 I-Code/Editor
36 BASE 1 I-Code/Editor
37 REM Editor ! Becomes REM in the Editor
38 (* Editor
39 END I-Code/Editor
3A <ulrf> I-Code/Editor Unbound Line Reference
3B <blrf> I-Code/Editor Bound Line Reference
3C <dex> I-Code/Editor Direct Execution
3D PROCEDURE Editor Procedure start
3D <erl> Editor/Debug Error Line
3E \ I-Code/Editor End-of-Instruction, Continue Line
3F <eol> I-Code/Editor End-of-Instruction and Line
40 BYTE Editor
40 fbyte I-Code/Editor VDT Entry, Field Byte Variable
41 INTEGER Editor
41 finteger I-Code/Editor VDT Entry, Field Integer Variable
42 REAL Editor
42 freal I-Code/Editor VDT Entry, Field Real Variable
43 BOOLEAN Editor
43 fboolean I-Code/Editor VDT Entry, Field Boolean Variable
44 STRING Editor
44 fstring I-Code/Editor VDT Entry, Field String Variable
45 THEN I-Code/Editor
45 frecord I-Code/Editor VDT Entry, Field Record Variable
46 TO I-Code/Editor
47 STEP I-Code/Editor
48 DO I-Code/Editor
48 fvectorb I-Code/Editor VDT Entry, Field 1 Dimensional Byte Array
49 USING I-Code/Editor
49 fvectori I-Code/Editor VDT Entry, Field 1 Dimensional Integer Array
4A : I-Code/Editor File Mode Operator
4A fvectorr I-Code/Editor VDT Entry, Field 1 Dimensional Real Array
4B , I-Code/Editor Comma Separator
4B fvectorl I-Code/Editor VDT Entry, Field 1 Dimensional Boolean Array
4C : I-Code/Editor Colon
4C fvectors I-Code/Editor VDT Entry, Field 1 Dimensional String Array
4D ( I-Code/Editor Left Parenthesis
4D fvectoru I-Code/Editor VDT Entry, Field 1 Dimensional Record Array
4E ) I-Code/Editor Right Parenthesis
4F [ I-Code/Editor Left Bracket
50 ] I-Code/Editor Right Bracket
50 ftableb I-Code/Editor VDT Entry, Field 2 Dimensional Byte Array
51 ; I-Code/Editor Semi-colon
51 ftablei I-Code/Editor VDT Entry, Field 2 Dimensional Integer Array
52 := I-Code/Editor Assignment Operator
52 ftabler I-Code/Editor VDT Entry, Field 2 Dimensional Real Array
53 = I-Code/Editor Assignment Operator
53 ftablel I-Code/Editor VDT Entry, Field 2 Dimensional Boolean Array
54 # I-Code/Editor Channel (Path) Number Operator
54 ftables I-Code/Editor VDT Entry, Field 2 Dimensional String Array
55 <ivgt> I-Code/Editor Invisible GOTO (used with IF)
55 ftableu I-Code/Editor VDT Entry, Field 2 Dimensional Record Array
56 Unused
57 Unused
58 fmatrixb I-Code/Editor VDT Entry, Field 3 Dimensional Byte Array
59 fmatrixi I-Code/Editor VDT Entry, Field 3 Dimensional Integer Array
5A fmatrixr I-Code/Editor VDT Entry, Field 3 Dimensional Real Array
5B fmatrixl I-Code/Editor VDT Entry, Field 3 Dimensional Boolean Array
5C fmatrixs I-Code/Editor VDT Entry, Field 3 Dimensional String Array
5D fmatrixu I-Code/Editor VDT Entry, Field 3 Dimensional Record Array
5E Unused
5F Unused
60 byte I-Code/Editor VDT entry, Byte Variable
61 integer I-Code/Editor VDT entry, Integer Variable
62 real I-Code/Editor VDT entry, Real Variable
63 boolean I-Code/Editor VDT entry, Boolean Variable
64 string I-Code/Editor VDT entry, String Variable
65 record I-Code/Editor VDT entry, Record Variable
66 Unused
67 Unused
68 vectorb I-Code/Editor VDT Entry, 1 Dimensional Byte Array
69 vectori I-Code/Editor VDT Entry, 1 Dimensional Integer Array
6A vectorr I-Code/Editor VDT Entry, 1 Dimensional Real Array
6B vectorl I-Code/Editor VDT Entry, 1 Dimensional Boolean Array
6C vectors I-Code/Editor VDT Entry, 1 Dimensional String Array
6D vectoru I-Code/Editor VDT Entry, 1 Dimensional Record Array
6E Unused
6F Unused
70 tableb I-Code/Editor VDT Entry, 2 Dimensional Byte Array
71 tablei I-Code/Editor VDT Entry, 2 Dimensional Integer Array
72 tabler I-Code/Editor VDT Entry, 2 Dimensional Real Array
73 tablel I-Code/Editor VDT Entry, 2 Dimensional Boolean Array
74 tables I-Code/Editor VDT Entry, 2 Dimensional String Array
75 tableu I-Code/Editor VDT Entry, 2 Dimensional Record Array
76 Unused
77 Unused
78 matrixb I-Code/Editor VDT Entry, 3 Dimensional Byte Array
79 matrixi I-Code/Editor VDT Entry, 3 Dimensional Integer Array
7A matrixr I-Code/Editor VDT Entry, 3 Dimensional Real Array
7B matrixl I-Code/Editor VDT Entry, 3 Dimensional Boolean Array
7C matrixs I-Code/Editor VDT Entry, 3 Dimensional String Array
7D matrixu I-Code/Editor VDT Entry, 3 Dimensional Record Array
7E Unused
7F Unused
80 byte I-Code/Editor Instruction, Simple Byte Variable
80 pbyte I-Code/Editor VDT Entry, Parameter Byte Variable
80 DIR I-Code File Mode
81 integer I-Code/Editor Instruction, Simple Integer Variable
81 pinteger I-Code/Editor VDT Entry, Parameter Integer Variable
81 READ+DIR I-Code File Mode
82 real I-Code/Editor Instruction, Simple Real Variable
82 preal I-Code/Editor VDT Entry, Parameter Real Variable
82 WRITE+DIR I-Code File Mode
83 boolean I-Code/Editor Instruction, Simple Boolean Variable
83 pboolean I-Code/Editor VDT Entry, Parameter Boolean Variable
83 UPDATE+DIR I-Code File Mode
84 string I-Code/Editor Instruction, Simple String Variable
84 pstring I-Code/Editor VDT Entry, Parameter String Variable
84 EXEC+DIR I-Code File Mode
85 record/p I-Code/Editor Instruction, Record, Parameter (Simple/Record) Variable
85 vector/p I-Code/Editor Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable
85 table/p I-Code/Editor Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable
85 matrix/p I-Code/Editor Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable
85 precord I-Code/Editor VDT Entry, Parameter Record Variable
85 READ+EXEC+DIR I-Code File Mode
86 vector/p I-Code/Editor Instruction, 1 Dimensional Array
86 WRITE+EXEC+DIR I-Code File Mode
87 table/p I-Code/Editor Instruction, 2 Dimensional Array
87 UPDATE+EXEC+DIR I-Code File Mode
88 matrix/p I-Code/Editor Instruction, 3 Dimensional Array
88 pvectorb I-Code/Editor VDT Entry, Parameter 1 Dimensional Byte Array
89 varm I-Code/Editor Instruction, Simple/Record Variable Mirror
89 pvectori I-Code/Editor VDT Entry, Parameter 1 Dimensional Integer Array
8A fvectorm I-Code/Editor VDT Entry, Field 1 Dimensional Array Mirror
8A pvectorr I-Code/Editor VDT Entry, Parameter 1 Dimensional Real Array
8B ftablem I-Code/Editor VDT Entry, Field 2 Dimensional Array Mirror
8B pvectorl I-Code/Editor VDT Entry, Parameter 1 Dimensional Boolean Array
8C fmatrixm I-Code/Editor VDT Entry, Field 3 Dimensional Array Mirror
8C pvectors I-Code/Editor VDT Entry, Parameter 1 Dimensional String Array
8D <blit> I-Code/Editor BYTE Constant (Literal)
8D pvectoru I-Code/Editor VDT Entry, Parameter 1 Dimensional Record Array
8E <ilit> I-Code/Editor INTEGER Constant (Literal)
8F <rlit> I-Code/Editor REAL Constant (Literal)
90 " I-Code/Editor STRING Constant - Beginning (Literal)
90 ptableb I-Code/Editor VDT Entry, Parameter 2 Dimensional Byte Array
91 $ I-Code/Editor Hexadecimal Constant (Literal)
91 ptablei I-Code/Editor VDT Entry, Parameter 2 Dimensional Integer Array
92 ADDR() I-Code/Editor
92 ptabler I-Code/Editor VDT Entry, Parameter 2 Dimensional Real Array
93 <addr> I-Code/Editor Second Byte of ADDR()
93 ptablel I-Code/Editor VDT Entry, Parameter 2 Dimensional Boolean Array
94 SIZE() I-Code/Editor
94 ptables I-Code/Editor VDT Entry, Parameter 2 Dimensional String Array
95 <size> I-Code/Editor Second Byte of SIZE()
95 ptableu I-Code/Editor VDT Entry, Parameter 2 Dimensional Record Array
96 POS() I-Code/Editor
97 ERR() I-Code/Editor
98 MOD() I-Code/Editor Byte/Integer
98 pmatrixb I-Code/Editor VDT Entry, Parameter 3 Dimensional Byte Array
99 MOD() I-Code/Editor Real
99 pmatrixi I-Code/Editor VDT Entry, Parameter 3 Dimensional Integer Array
9A RND() I-Code/Editor
9A pmatrixr I-Code/Editor VDT Entry, Parameter 3 Dimensional Real Array
9B PI I-Code/Editor
9B pmatrixl I-Code/Editor VDT Entry, Parameter 3 Dimensional Boolean Array
9C SUBSTR() I-Code/Editor
9C pmatrixs I-Code/Editor VDT Entry, Parameter 3 Dimensional String Array
9D SGN() I-Code/Editor
9D pmatrixu I-Code/Editor VDT Entry, Parameter 3 Dimensional Record Array
9E SGN() I-Code/Editor
9F SIN() I-Code/Editor
A0 COS() I-Code/Editor
A0 <subr> I-Code/Editor Called Subroutine Name
A1 TAN() I-Code/Editor
A2 ASN() I-Code/Editor
A3 ACS() I-Code/Editor
A4 ATN() I-Code/Editor
A5 EXP() I-Code/Editor
A6 ABS() I-Code/Editor
A7 ABS() I-Code/Editor
A8 LOG() I-Code/Editor
A9 LOG10() I-Code/Editor
AA SQRT() I-Code/Editor
AB SQR() I-Code/Editor Becomes SQRT() in the Code
INT() |I-Code/Editor |Byte/Integer
INT() |I-Code/Editor |Real
FIX() |I-Code/Editor |Byte/Integer
FIX() |I-Code/Editor |Real
FLOAT() |I-Code/Editor |Byte/Integer
FLOAT() |I-Code/Editor |Real
SQ() |I-Code/Editor |Byte/Integer
SQ() |I-Code/Editor |Real
PEEK() |I-Code/Editor |
LNOT() |I-Code/Editor |Logical NOT
VAL() |I-Code/Editor |
LEN() |I-Code/Editor |
ASC() |I-Code/Editor |
LAND() |I-Code/Editor |Logical AND
LOR() |I-Code/Editor |Logical OR
LXOR() |I-Code/Editor |Logical XOR
TRUE |I-Code/Editor |
FALSE |I-Code/Editor |
EOF() |I-Code/Editor |
TRIM$() |I-Code/Editor |
MID$() |I-Code/Editor |
LEFT$() |I-Code/Editor |
RIGHT$() |I-Code/Editor |
CHR$() |I-Code/Editor |
STR$() |I-Code/Editor |Byte/Integer
STR$() |I-Code/Editor |Real
DATE$ |I-Code/Editor |
TAB |I-Code/Editor |
<ritc> |I-Code/Editor |Real->Byte/Integer Type Conversion
<fix1> |I-Code/Editor |Fix Top of Stack
<fix2> |I-Code/Editor |Fix Second on Stack
<fix3> |I-Code/Editor |Fix Third on Stack
<irtc> |I-Code/Editor |Byte/Integer->Real Type Conversion
<flt1> |I-Code/Editor |Float Top of Stack
<flt2> |I-Code/Editor |Float Second on Stack
NOT() |I-Code/Editor |
- |I-Code/Editor |(Monadic) Negate Byte/Integer
- |I-Code/Editor |(Monadic) Negate Real
AND |I-Code/Editor |
OR |I-Code/Editor |
XOR |I-Code/Editor |
> |I-Code/Editor |Byte/Integer Comparison Operator
> |I-Code/Editor |Real Comparison Operator
> |I-Code/Editor |String Comparison Operator
< |I-Code/Editor |Byte/Integer Comparison Operator
< |I-Code/Editor |Real Comparison Operator
< |I-Code/Editor |String Comparison Operator
<> |I-Code/Editor |Byte/Integer Comparison Operator >< is converted to <> in the code
<> |I-Code/Editor |Real Comparison Operator >< is converted to <> in the code
<> |I-Code/Editor |String Comparison Operator >< is converted to <> in the code
<> |I-Code/Editor |Boolean Comparison Operator >< is converted to <> in the code
= |I-Code/Editor |Byte/Integer Comparison Operator
= |I-Code/Editor |Real Comparison Operator
= |I-Code/Editor |String Comparison Operator
= |I-Code/Editor |Boolean Comparison Operator
>= |I-Code/Editor |Byte/Integer Greater/Equal Operator
>= |I-Code/Editor |Real Greater/Equal Operator
>= |I-Code/Editor |String Greater/Equal Operator
<= |I-Code/Editor |Byte/Integer Less/Equal Operator
<= |I-Code/Editor |Real Less/Equal Operator
<= |I-Code/Editor |String Less/Equal Operator
+ |I-Code/Editor |Byte/Integer Add Operator
+ |I-Code/Editor |Real Add Operator
+ |I-Code/Editor |String Concantenate Operator
- |I-Code/Editor |Byte/Integer Subtract Operator (Dyadic)
- |I-Code/Editor |Real Subtract Operator (Dyadic)
* |I-Code/Editor |Byte/Integer Multiply Operator
* |I-Code/Editor |Real Multiply Operator
/ |I-Code/Editor |Byte/Integer Divide Operator
/ |I-Code/Editor |Real Divide Operator
^ |I-Code/Editor |Exponent Operator
** |I-Code/Editor |Exponent Operator
varm/p |I-Code/Editor |Instruction, Simple/Record, Parameter Variable Mirror
vectorm/p |I-Code/Editor |Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Mirror
tablem/p |I-Code/Editor |Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Mirror
matrixm/p |I-Code/Editor |Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Mirror
field |I-Code/Editor |Instruction, Field Variable
UPDATE |Editor |
fvector |I-Code/Editor |Instruction, Field 1 Dimensional Array
EXEC |Editor |
ftable |I-Code/Editor |Instruction, Field 2 Dimensional Array
DIR |Editor |
fmatrix |I-Code/Editor |Instruction, Field 3 Dimensional Array
|Unused |
|Unused |
|Unused |
|Unused |
|Unused |
" |I-Code/Editor |STRING Constant - Terminator