DEFINITION MODULE Tables; (* Title : Tables.DEF Author : Kim Moser System : JPI TopSpeed Modula-2 with PMI Repertoire 1.5c Descrip : Handles SymbolTable, MOT, and PseudoOp functions for VLC *) CONST InvalidOpCode=65534; (*Used in MOTentry.OpCode to signify invalid opcode*) InvalidSymbol=65533; (*Used in Tables.SymbolAddress to signify non-existent symbol*) (****************************************************************************** SYMBOL TABLE PROCEDURES ******************************************************************************) PROCEDURE InitMOT; PROCEDURE AddSymbol(TheSymbolName: ARRAY OF CHAR; TheSymbolAddress: CARDINAL): BOOLEAN; (* If TheSymbol did not previously exist, adds TheSymbol to SymbolTable and returns TRUE; else returns FALSE *) PROCEDURE SymbolAddress(TheSymbolName: ARRAY OF CHAR): CARDINAL; (* If symbol exists, returns the address of Symbol.TheSymbolName; else returns 0. *) PROCEDURE GetAllSymbols; (* Prints all symbols and their addresses *) (****************************************************************************** MOT PROCEDURES ******************************************************************************) PROCEDURE GetOpCode(TheOperator: ARRAY OF CHAR; VAR OpCode: CARDINAL; VAR NumOperandsExpected: CARDINAL): BOOLEAN; (* If TheOp is a valid opcode, then returns MOTentry[n].OpCode in OpCode, MOTentry[n].Operands in NumOperandsExpected, and MOTentry[n].Operator in TheOpCode, where MOTentry[n].Operator=TheOp and returns TRUE, else returns FALSE *) END Tables.