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 20:55, 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
GLOBAL |Reserved |Global Variable
PARAM |Editor |
READ |I-Code |File Mode
TYPE |Editor |
WRITE |I-Code |File Mode
DIM |Editor |
UPDATE |I-Code |File Mode
DATA |I-Code/Editor |
EXEC |I-Code |File Mode
STOP |I-Code/Editor |
READ+EXEC |I-Code |File Mode
BYE |I-Code/Editor |
WRITE+EXEC |I-Code |File Mode
TRON |I-Code/Editor |
UPDATE+EXEC |I-Code |File Mode
TROFF |I-Code/Editor |
PAUSE |I-Code/Editor |
DEG |I-Code/Editor |
RAD |I-Code/Editor |
RETURN |I-Code/Editor |
LET |I-Code/Editor |
<cva> |I-Code/Editor |Complex Variable Assignment
POKE |I-Code/Editor |
IF |I-Code/Editor |
ELSE |I-Code/Editor |
ENDIF |I-Code/Editor |
FOR |I-Code/Editor |
NEXT |I-Code/Editor |
WHILE |I-Code/Editor |
ENDWHILE |I-Code/Editor |
REPEAT |I-Code/Editor |
UNTIL |I-Code/Editor |
LOOP |I-Code/Editor |
ENDLOOP |I-Code/Editor |
EXITIF |I-Code/Editor |
ENDEXIT |I-Code/Editor |
ON |I-Code/Editor |
ERROR |I-Code/Editor |
GOTO |Editor |Unbound
GOTO |I-Code/Editor |Bound
GOSUB |Editor |Unbound
GOSUB |I-Code/Editor |Bound
RUN |I-Code/Editor |
KILL |I-Code/Editor |
INPUT |I-Code/Editor |
PRINT |I-Code/Editor |? Becomes PRINT in the Editor
CHD |I-Code/Editor |
CHX |I-Code/Editor |
CREATE |I-Code/Editor |
OPEN |I-Code/Editor |
SEEK |I-Code/Editor |
READ |I-Code/Editor |
WRITE |I-Code/Editor |
GET |I-Code/Editor |
PUT |I-Code/Editor |
CLOSE |I-Code/Editor |
RESTORE |I-Code/Editor |
DELETE |I-Code/Editor |
CHAIN |I-Code/Editor |
SHELL |I-Code/Editor |
BASE 0 |I-Code/Editor |
BASE 1 |I-Code/Editor |
REM |Editor |! Becomes REM in the Editor
(* |Editor |
END |I-Code/Editor |
<ulrf> |I-Code/Editor |Unbound Line Reference
<blrf> |I-Code/Editor |Bound Line Reference
<dex> |I-Code/Editor |Direct Execution
PROCEDURE |Editor |Procedure start
<erl> |Editor/Debug |Error Line
\ |I-Code/Editor |End-of-Instruction, Continue Line
<eol> |I-Code/Editor |End-of-Instruction and Line
BYTE |Editor |
fbyte |I-Code/Editor |VDT Entry, Field Byte Variable
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