dmolony-DiskBrowser/src/com/bytezone/diskbrowser/applefile/PascalConstants.java
2020-02-07 21:52:46 +10:00

95 lines
5.8 KiB
Java
Executable File

package com.bytezone.diskbrowser.applefile;
// -----------------------------------------------------------------------------------//
public interface PascalConstants
// -----------------------------------------------------------------------------------//
{
static String[] mnemonics =
{ "ABI", "ABR", "ADI", "ADR", "LAND", "DIF", "DVI", "DVR", "CHK", "FLO", "FLT",
"INN", "INT", "LOR", "MODI", "MPI", "MPR", "NGI", "NGR", "LNOT", "SRS", "SBI",
"SBR", "SGS", "SQI", "SQR", "STO", "IXS", "UNI", "LDE", "CSP", "LDCN", "ADJ",
"FJP", "INC", "IND", "IXA", "LAO", "LSA", "LAE", "MOV", "LDO", "SAS", "SRO",
"XJP", "RNP", "CIP", "EQU", "GEQ", "GRT", "LDA", "LDC", "LEQ", "LES", "LOD",
"NEQ", "STR", "UJP", "LDP", "STP", "LDM", "STM", "LDB", "STB", "IXP", "RBP",
"CBP", "EQUI", "GEQI", "GRTI", "LLA", "LDCI", "LEQI", "LESI", "LDL", "NEQI",
"STL", "CXP", "CLP", "CGP", "LPA", "STE", "???", "EFJ", "NFJ", "BPT", "XIT",
"NOP" };
static int[] mnemonicSize =
//
// 128 - 155
// 156 - 183
// 184 - 211
// 212 - 239
// 240 - 255
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 3, 2, 1, 2, 2, 2, 2, 2, 2, 0, 3, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 3, 0, 2, 2,
3, 2, 3, 2, 1, 1, 2, 2, 1, 1, 3, 2, 2, 1, 1, 1, 2, 3, 1, 1, 2, 1, 2, 3, 2, 2, 0,
3, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
static String[] descriptions =
{ "Absolute value of integer - push ABS(ToS)",
"Absolute value of real - push abs((real)ToS)", "Add integers (tos + tos-1)",
"Add reals - push ToS + ToS-1", "Logical AND",
"Set difference - push difference of sets ToS-1 and ToS",
"Divide integers - push ToS-1 / ToS", "Divide reals - push ToS-1 / ToS",
"Check subrange bounds - assert ToS-1 <= ToS-2 <= ToS, pop ToS, pop ToS-1",
"Float next-to-ToS - push integer ToS-1 after converting to a real",
"Float ToS - push integer ToS after converting to a float",
"Set Membership - if int ToS-1 is in set ToS, push true, else push false",
"Set Intersection - push TOS AND TOS-1", "Logical OR",
"Modulo integers - push ToS-1 % ToS", "Multiply TOS by TOS-1",
"Multiply reals - push ToS-1 * ToS",
"Negate Integer - push two's complement of ToS",
"Negate real - push -((real)ToS)", "Logical Not - push one's complement of ToS",
"Build a subrange set", "Subtract Integers push ToS-1 - ToS",
"Subtract reals - push ToS-1 - ToS", "Build a singleton set",
"Square integer - push ToS ^ 2", "Square real - push ToS ^ 2",
"Store indirect word - store ToS into word pointed to by ToS-1",
"Index string array - push &(*ToS-1 + ToS)",
"Set union - push union of sets ToS OR ToS-1",
"Load extended word - push word at segment :1+:2",
"Call Standard Procedure #:1 - ", "Load Constant NIL", "Adjust set",
"Jump if ToS false", "Increment field ptr - push ToS+:1",
"Static index and load word", "Compute word pointer from ToS-1 + ToS * :1 words",
"Load Global - push (BASE+:1)", "Load constant string address",
"Load extended address - push address of word at segment :1+:2",
"Move words - transfer :1 words from *ToS to *ToS-1",
"Load Global Word - push BASE+:1", "String Assign", "Store TOS into BASE+:1",
"Case Jump - :1::2, Error: :3", "Return from non-base procedure (pass :1 words)",
"Call intermediate procedure #:1", "ToS-1 == ToS", "ToS-1 >= ToS", "ToS-1 > ToS",
"Load Intermediate Address - push :1th activation record +:2 bytes",
"Load multi-word constant - :1 words", "ToS-1 <= ToS", "ToS-1 < ToS",
"Load Intermediate Word - push :1th activation record +:2 bytes", "ToS-1 <> ToS",
"Store intermediate word - store TOS into :2, traverse :1", "Unconditional jump",
"Load Packed Field - push *ToS", "Store into packed field",
"Load multiple words - push block of unsigned bytes at *ToS",
"Store multiple words - store block of UB at ToS to *ToS-1",
"Load Byte - index the byte pointer ToS-1 by integer index ToS and push that byte",
"Store Byte - index the byte pointer ToS-2 by integer "
+ "index ToS-1 and move ToS to that location",
"Index packed array - do complicated stuff with :1 and :2",
"Return from base procedure (pass :1 words)",
"Call Base Procedure :1 at lex level -1 or 0", "Compare Integer : ToS-1 = ToS",
"Compare Integer : TOS-1 >= TOS", "Compare Integer : TOS-1 > ToS",
"Load Local Address - push MP+:1", "Load Word - push #:1",
"Compare Integer : TOS-1 <= TOS", "Compare Integer : TOS-1 < ToS",
"Load Local Word - push MP+:1", "Compare Integer : TOS-1 <> TOS",
"Store Local Word - store ToS into MP+:1",
"Call external procedure #:2 in segment #:1", "Call local procedure #:1",
"Call global procedure #:1", "Load a packed array - use :1 and :2",
"Store extended word - store ToS into word at segment :1+:2", "210 ",
"Equal false jump - jump :1 if ToS-1 <> ToS",
"Not equal false jump - jump :1 if ToS-1 == ToS",
"Breakpoint - not used (does NOP)", "Exit OS - cold boot", "No-op" };
static String[] CSP =
{ "000", "NEW", "MVL", "MVR", "EXIT", "", "", "IDS", "TRS", "TIM", "FLC", "SCN", "",
"", "", "", "", "", "", "", "", "021", "TNC", "RND", "", "", "", "", "", "", "",
"MRK", "RLS", "33", "34", "POT", "36", "37", "38", "39", "40" };
static String[] SegmentKind = { "Linked", "HostSeg", "SegProc", "UnitSeg", "SeprtSeg",
"UnlinkedIntrins", "LinkedIntrins", "DataSeg" };
}