MediaWiki:Sitenotice:
2024-03-02: The wiki ran out of disk space, so things were not working. This has been resolved by adding another 5GB of quota ;-) Thanks to Tim Lindner for reporting the issues. 2020-05-17: If a page gives you an error about some revision not being found, just EDIT the page and the old page should appear in the editor. If it does, just SAVE that and the page should be restored. OS-9 Al (talk) 12:22, 17 May 2020 (CDT)

The Structure of I-Code

From CoCopedia - The Tandy/Radio Shack Color Computer Wiki
Revision as of 21:06, 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
finteger |I-Code/Editor |VDT Entry, Field Integer Variable
REAL |Editor |
freal |I-Code/Editor |VDT Entry, Field Real Variable
BOOLEAN |Editor |
fboolean |I-Code/Editor |VDT Entry, Field Boolean Variable
STRING |Editor |
fstring |I-Code/Editor |VDT Entry, Field String Variable
THEN |I-Code/Editor |
frecord |I-Code/Editor |VDT Entry, Field Record Variable
TO |I-Code/Editor |
STEP |I-Code/Editor |
DO |I-Code/Editor |
fvectorb |I-Code/Editor |VDT Entry, Field 1 Dimensional Byte Array
USING |I-Code/Editor |
fvectori |I-Code/Editor |VDT Entry, Field 1 Dimensional Integer Array
: |I-Code/Editor |File Mode Operator
fvectorr |I-Code/Editor |VDT Entry, Field 1 Dimensional Real Array
, |I-Code/Editor |Comma Separator
fvectorl |I-Code/Editor |VDT Entry, Field 1 Dimensional Boolean Array
: |I-Code/Editor |Colon
fvectors |I-Code/Editor |VDT Entry, Field 1 Dimensional String Array
( |I-Code/Editor |Left Parenthesis
fvectoru |I-Code/Editor |VDT Entry, Field 1 Dimensional Record Array
) |I-Code/Editor |Right Parenthesis
[ |I-Code/Editor |Left Bracket
] |I-Code/Editor |Right Bracket
ftableb |I-Code/Editor |VDT Entry, Field 2 Dimensional Byte Array
; |I-Code/Editor |Semi-colon
ftablei |I-Code/Editor |VDT Entry, Field 2 Dimensional Integer Array
:= |I-Code/Editor |Assignment Operator
ftabler |I-Code/Editor |VDT Entry, Field 2 Dimensional Real Array
= |I-Code/Editor |Assignment Operator
ftablel |I-Code/Editor |VDT Entry, Field 2 Dimensional Boolean Array
# |I-Code/Editor |Channel (Path) Number Operator
ftables |I-Code/Editor |VDT Entry, Field 2 Dimensional String Array
<ivgt> |I-Code/Editor |Invisible GOTO (used with IF)
ftableu |I-Code/Editor |VDT Entry, Field 2 Dimensional Record Array
|Unused |
|Unused |
fmatrixb |I-Code/Editor |VDT Entry, Field 3 Dimensional Byte Array
fmatrixi |I-Code/Editor |VDT Entry, Field 3 Dimensional Integer Array
fmatrixr |I-Code/Editor |VDT Entry, Field 3 Dimensional Real Array
fmatrixl |I-Code/Editor |VDT Entry, Field 3 Dimensional Boolean Array
fmatrixs |I-Code/Editor |VDT Entry, Field 3 Dimensional String Array
fmatrixu |I-Code/Editor |VDT Entry, Field 3 Dimensional Record Array
|Unused |
|Unused |
byte |I-Code/Editor |VDT entry, Byte Variable
integer |I-Code/Editor |VDT entry, Integer Variable
real |I-Code/Editor |VDT entry, Real Variable
boolean |I-Code/Editor |VDT entry, Boolean Variable
string |I-Code/Editor |VDT entry, String Variable
record |I-Code/Editor |VDT entry, Record Variable
|Unused |
|Unused |
vectorb |I-Code/Editor |VDT Entry, 1 Dimensional Byte Array
vectori |I-Code/Editor |VDT Entry, 1 Dimensional Integer Array
vectorr |I-Code/Editor |VDT Entry, 1 Dimensional Real Array
vectorl |I-Code/Editor |VDT Entry, 1 Dimensional Boolean Array
vectors |I-Code/Editor |VDT Entry, 1 Dimensional String Array
vectoru |I-Code/Editor |VDT Entry, 1 Dimensional Record Array
|Unused |
|Unused |
tableb |I-Code/Editor |VDT Entry, 2 Dimensional Byte Array
tablei |I-Code/Editor |VDT Entry, 2 Dimensional Integer Array
tabler |I-Code/Editor |VDT Entry, 2 Dimensional Real Array
tablel |I-Code/Editor |VDT Entry, 2 Dimensional Boolean Array
tables |I-Code/Editor |VDT Entry, 2 Dimensional String Array
tableu |I-Code/Editor |VDT Entry, 2 Dimensional Record Array
|Unused |
|Unused |
matrixb |I-Code/Editor |VDT Entry, 3 Dimensional Byte Array
matrixi |I-Code/Editor |VDT Entry, 3 Dimensional Integer Array
matrixr |I-Code/Editor |VDT Entry, 3 Dimensional Real Array
matrixl |I-Code/Editor |VDT Entry, 3 Dimensional Boolean Array
matrixs |I-Code/Editor |VDT Entry, 3 Dimensional String Array
matrixu |I-Code/Editor |VDT Entry, 3 Dimensional Record Array
|Unused |
|Unused |
byte |I-Code/Editor |Instruction, Simple Byte Variable
pbyte |I-Code/Editor |VDT Entry, Parameter Byte Variable
DIR |I-Code |File Mode
integer |I-Code/Editor |Instruction, Simple Integer Variable
pinteger |I-Code/Editor |VDT Entry, Parameter Integer Variable
READ+DIR |I-Code |File Mode
real |I-Code/Editor |Instruction, Simple Real Variable
preal |I-Code/Editor |VDT Entry, Parameter Real Variable
WRITE+DIR |I-Code |File Mode
boolean |I-Code/Editor |Instruction, Simple Boolean Variable
pboolean |I-Code/Editor |VDT Entry, Parameter Boolean Variable
UPDATE+DIR |I-Code |File Mode
string |I-Code/Editor |Instruction, Simple String Variable
pstring |I-Code/Editor |VDT Entry, Parameter String Variable
EXEC+DIR |I-Code |File Mode
record/p |I-Code/Editor |Instruction, Record, Parameter (Simple/Record) Variable
vector/p |I-Code/Editor |Instruction, 1 Dimensional Array, Parameter 1 Dimensional Array Variable
table/p |I-Code/Editor |Instruction, 2 Dimensional Array, Parameter 2 Dimensional Array Variable
matrix/p |I-Code/Editor |Instruction, 3 Dimensional Array, Parameter 3 Dimensional Array Variable
precord |I-Code/Editor |VDT Entry, Parameter Record Variable
READ+EXEC+DIR |I-Code |File Mode
vector/p |I-Code/Editor |Instruction, 1 Dimensional Array
WRITE+EXEC+DIR |I-Code |File Mode
table/p |I-Code/Editor |Instruction, 2 Dimensional Array
UPDATE+EXEC+DIR |I-Code |File Mode
matrix/p |I-Code/Editor |Instruction, 3 Dimensional Array
pvectorb |I-Code/Editor |VDT Entry, Parameter 1 Dimensional Byte Array
varm |I-Code/Editor |Instruction, Simple/Record Variable Mirror
pvectori |I-Code/Editor |VDT Entry, Parameter 1 Dimensional Integer Array
fvectorm |I-Code/Editor |VDT Entry, Field 1 Dimensional Array Mirror
pvectorr |I-Code/Editor |VDT Entry, Parameter 1 Dimensional Real Array
ftablem |I-Code/Editor |VDT Entry, Field 2 Dimensional Array Mirror
pvectorl |I-Code/Editor |VDT Entry, Parameter 1 Dimensional Boolean Array
fmatrixm |I-Code/Editor |VDT Entry, Field 3 Dimensional Array Mirror
pvectors |I-Code/Editor |VDT Entry, Parameter 1 Dimensional String Array
<blit> |I-Code/Editor |BYTE Constant (Literal)
pvectoru |I-Code/Editor |VDT Entry, Parameter 1 Dimensional Record Array
<ilit> |I-Code/Editor |INTEGER Constant (Literal)
<rlit> |I-Code/Editor |REAL Constant (Literal)
" |I-Code/Editor |STRING Constant - Beginning (Literal)
ptableb |I-Code/Editor |VDT Entry, Parameter 2 Dimensional Byte Array
$ |I-Code/Editor |Hexadecimal Constant (Literal)
ptablei |I-Code/Editor |VDT Entry, Parameter 2 Dimensional Integer Array
ADDR() |I-Code/Editor |
ptabler |I-Code/Editor |VDT Entry, Parameter 2 Dimensional Real Array
|I-Code/Editor |Second Byte of ADDR()
ptablel |I-Code/Editor |VDT Entry, Parameter 2 Dimensional Boolean Array
SIZE() |I-Code/Editor |
ptables |I-Code/Editor |VDT Entry, Parameter 2 Dimensional String Array
|I-Code/Editor |Second Byte of SIZE()
ptableu |I-Code/Editor |VDT Entry, Parameter 2 Dimensional Record Array
POS() |I-Code/Editor |
ERR() |I-Code/Editor |
MOD() |I-Code/Editor |Byte/Integer
pmatrixb |I-Code/Editor |VDT Entry, Parameter 3 Dimensional Byte Array
MOD() |I-Code/Editor |Real
pmatrixi |I-Code/Editor |VDT Entry, Parameter 3 Dimensional Integer Array
RND() |I-Code/Editor |
pmatrixr |I-Code/Editor |VDT Entry, Parameter 3 Dimensional Real Array
PI |I-Code/Editor |
pmatrixl |I-Code/Editor |VDT Entry, Parameter 3 Dimensional Boolean Array
SUBSTR() |I-Code/Editor |
pmatrixs |I-Code/Editor |VDT Entry, Parameter 3 Dimensional String Array
SGN() |I-Code/Editor |
pmatrixu |I-Code/Editor |VDT Entry, Parameter 3 Dimensional Record Array
SGN() |I-Code/Editor |
SIN() |I-Code/Editor |
COS() |I-Code/Editor |
<subr> |I-Code/Editor |Called Subroutine Name
TAN() |I-Code/Editor |
ASN() |I-Code/Editor |
ACS() |I-Code/Editor |
ATN() |I-Code/Editor |
EXP() |I-Code/Editor |
ABS() |I-Code/Editor |
ABS() |I-Code/Editor |
LOG() |I-Code/Editor |
LOG10() |I-Code/Editor |
SQRT() |I-Code/Editor |
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