mirror of
https://github.com/livingcomputermuseum/Darkstar.git
synced 2026-04-16 00:50:39 +00:00
642 lines
36 KiB
C#
642 lines
36 KiB
C#
/*
|
|
BSD 2-Clause License
|
|
|
|
Copyright Vulcan Inc. 2017-2018 and Living Computer Museum + Labs 2018
|
|
All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are met:
|
|
|
|
* Redistributions of source code must retain the above copyright notice, this
|
|
list of conditions and the following disclaimer.
|
|
|
|
* Redistributions in binary form must reproduce the above copyright notice,
|
|
this list of conditions and the following disclaimer in the documentation
|
|
and/or other materials provided with the distribution.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
|
|
namespace D.CP
|
|
{
|
|
public enum MacroType
|
|
{
|
|
Mesa,
|
|
Lisp,
|
|
}
|
|
|
|
public enum MacroOperand
|
|
{
|
|
None,
|
|
Byte,
|
|
SignedByte,
|
|
Pair,
|
|
TwoByte,
|
|
Word,
|
|
ThreeByte,
|
|
}
|
|
/// <summary>
|
|
/// Provides facilities for interpreting Mesa bytecodes
|
|
/// </summary>
|
|
public struct MacroInstruction
|
|
{
|
|
private MacroInstruction(byte opcode, string mnemonic, MacroOperand operand)
|
|
{
|
|
_mnemonic = mnemonic;
|
|
_operand = operand;
|
|
}
|
|
|
|
public string Mnemonic
|
|
{
|
|
get { return _mnemonic; }
|
|
}
|
|
|
|
public MacroOperand Operand
|
|
{
|
|
get { return _operand; }
|
|
}
|
|
|
|
public static MacroInstruction GetInstruction(MacroType type, byte opcode)
|
|
{
|
|
MacroInstruction inst = Invalid;
|
|
switch(type)
|
|
{
|
|
case MacroType.Mesa:
|
|
inst = _mesaInstructionTable[opcode];
|
|
break;
|
|
|
|
case MacroType.Lisp:
|
|
inst = _lispInstructionTable[opcode];
|
|
break;
|
|
}
|
|
|
|
return inst;
|
|
}
|
|
|
|
private string _mnemonic;
|
|
private MacroOperand _operand;
|
|
|
|
private static MacroInstruction[] _mesaInstructionTable =
|
|
{
|
|
Invalid,
|
|
new MacroInstruction(0x01, "LL0", MacroOperand.None),
|
|
new MacroInstruction(0x02, "LL1", MacroOperand.None),
|
|
new MacroInstruction(0x03, "LL2", MacroOperand.None),
|
|
new MacroInstruction(0x04, "LL3", MacroOperand.None),
|
|
new MacroInstruction(0x05, "LL4", MacroOperand.None),
|
|
new MacroInstruction(0x06, "LL5", MacroOperand.None),
|
|
new MacroInstruction(0x07, "LL6", MacroOperand.None),
|
|
new MacroInstruction(0x08, "LL7", MacroOperand.None),
|
|
new MacroInstruction(0x09, "LL8", MacroOperand.None),
|
|
new MacroInstruction(0x0a, "LL9", MacroOperand.None),
|
|
new MacroInstruction(0x0b, "LL10", MacroOperand.None),
|
|
new MacroInstruction(0x0c, "LL11", MacroOperand.None),
|
|
new MacroInstruction(0x0d, "LLB", MacroOperand.Byte),
|
|
new MacroInstruction(0x0e, "LLD0", MacroOperand.None),
|
|
new MacroInstruction(0x0f, "LLD1", MacroOperand.None),
|
|
|
|
new MacroInstruction(0x10, "LLD2", MacroOperand.None),
|
|
new MacroInstruction(0x11, "LLD3", MacroOperand.None),
|
|
new MacroInstruction(0x12, "LLD4", MacroOperand.None),
|
|
new MacroInstruction(0x13, "LLD5", MacroOperand.None),
|
|
new MacroInstruction(0x14, "LLD6", MacroOperand.None),
|
|
new MacroInstruction(0x15, "LLD7", MacroOperand.None),
|
|
new MacroInstruction(0x16, "LLD8", MacroOperand.None),
|
|
new MacroInstruction(0x17, "LLD10", MacroOperand.None),
|
|
new MacroInstruction(0x18, "LLDB", MacroOperand.Byte),
|
|
new MacroInstruction(0x19, "SL0", MacroOperand.None),
|
|
new MacroInstruction(0x1a, "SL1", MacroOperand.None),
|
|
new MacroInstruction(0x1b, "SL2", MacroOperand.None),
|
|
new MacroInstruction(0x1c, "SL3", MacroOperand.None),
|
|
new MacroInstruction(0x1d, "SL4", MacroOperand.None),
|
|
new MacroInstruction(0x1e, "SL5", MacroOperand.None),
|
|
new MacroInstruction(0x1f, "SL6", MacroOperand.None),
|
|
|
|
new MacroInstruction(0x20, "SL7", MacroOperand.None),
|
|
new MacroInstruction(0x21, "SL8", MacroOperand.None),
|
|
new MacroInstruction(0x22, "SL9", MacroOperand.None),
|
|
new MacroInstruction(0x23, "SL10", MacroOperand.None),
|
|
new MacroInstruction(0x24, "SLB", MacroOperand.Byte),
|
|
new MacroInstruction(0x25, "SLD0", MacroOperand.None),
|
|
new MacroInstruction(0x26, "SLD1", MacroOperand.None),
|
|
new MacroInstruction(0x27, "SLD2", MacroOperand.None),
|
|
new MacroInstruction(0x28, "SLD3", MacroOperand.None),
|
|
new MacroInstruction(0x29, "SLD4", MacroOperand.None),
|
|
new MacroInstruction(0x2a, "SLD5", MacroOperand.None),
|
|
new MacroInstruction(0x2b, "SLD6", MacroOperand.None),
|
|
new MacroInstruction(0x2c, "SLD8", MacroOperand.None),
|
|
new MacroInstruction(0x2d, "PL0", MacroOperand.None),
|
|
new MacroInstruction(0x2e, "PL1", MacroOperand.None),
|
|
new MacroInstruction(0x2f, "PL2", MacroOperand.None),
|
|
|
|
new MacroInstruction(0x30, "PL3", MacroOperand.None),
|
|
new MacroInstruction(0x31, "PLB", MacroOperand.Byte),
|
|
new MacroInstruction(0x32, "PLD0", MacroOperand.None),
|
|
new MacroInstruction(0x33, "PLDB", MacroOperand.Byte),
|
|
new MacroInstruction(0x34, "LG0", MacroOperand.None),
|
|
new MacroInstruction(0x35, "LG1", MacroOperand.None),
|
|
new MacroInstruction(0x36, "LG2", MacroOperand.None),
|
|
new MacroInstruction(0x37, "LGB", MacroOperand.Byte),
|
|
new MacroInstruction(0x38, "LGD0", MacroOperand.None),
|
|
new MacroInstruction(0x39, "LGD2", MacroOperand.None),
|
|
new MacroInstruction(0x3a, "LGDB", MacroOperand.Byte),
|
|
new MacroInstruction(0x3b, "SGB", MacroOperand.Byte),
|
|
new MacroInstruction(0x3c, "BNDCK", MacroOperand.None),
|
|
new MacroInstruction(0x3d, "BRK", MacroOperand.None),
|
|
Invalid,
|
|
new MacroInstruction(0x3f, "STC", MacroOperand.None),
|
|
|
|
new MacroInstruction(0x40, "R0", MacroOperand.None),
|
|
new MacroInstruction(0x41, "R1", MacroOperand.None),
|
|
new MacroInstruction(0x42, "RB", MacroOperand.Byte),
|
|
new MacroInstruction(0x43, "RL0", MacroOperand.None),
|
|
new MacroInstruction(0x44, "RLB", MacroOperand.Byte),
|
|
new MacroInstruction(0x45, "RD0", MacroOperand.None),
|
|
new MacroInstruction(0x46, "RDB", MacroOperand.None),
|
|
new MacroInstruction(0x47, "RDL0", MacroOperand.None),
|
|
new MacroInstruction(0x48, "RDLB", MacroOperand.Byte),
|
|
new MacroInstruction(0x49, "W0", MacroOperand.None),
|
|
new MacroInstruction(0x4a, "WB", MacroOperand.Byte),
|
|
new MacroInstruction(0x4b, "PSB", MacroOperand.Byte),
|
|
new MacroInstruction(0x4c, "WLB", MacroOperand.Byte),
|
|
new MacroInstruction(0x4d, "PSLB", MacroOperand.Byte),
|
|
new MacroInstruction(0x4e, "WDB", MacroOperand.Byte),
|
|
new MacroInstruction(0x4f, "PSD0", MacroOperand.None),
|
|
|
|
new MacroInstruction(0x50, "PSDB", MacroOperand.Byte),
|
|
new MacroInstruction(0x51, "WDLB", MacroOperand.Byte),
|
|
new MacroInstruction(0x52, "PSDLB", MacroOperand.Byte),
|
|
new MacroInstruction(0x53, "RLI00", MacroOperand.None),
|
|
new MacroInstruction(0x54, "RLI01", MacroOperand.None),
|
|
new MacroInstruction(0x55, "RLI02", MacroOperand.None),
|
|
new MacroInstruction(0x56, "RLI03", MacroOperand.None),
|
|
new MacroInstruction(0x57, "RLIP", MacroOperand.Pair),
|
|
new MacroInstruction(0x58, "RLILP", MacroOperand.Pair),
|
|
new MacroInstruction(0x59, "RLDI00", MacroOperand.None),
|
|
new MacroInstruction(0x5a, "RLDIP", MacroOperand.Pair),
|
|
new MacroInstruction(0x5b, "RLDILP", MacroOperand.Pair),
|
|
new MacroInstruction(0x5c, "RGIP", MacroOperand.Pair),
|
|
new MacroInstruction(0x5d, "RGILP", MacroOperand.Pair),
|
|
new MacroInstruction(0x5e, "WLIP", MacroOperand.Pair),
|
|
new MacroInstruction(0x5f, "WLILP", MacroOperand.Pair),
|
|
|
|
new MacroInstruction(0x60, "WLDILP", MacroOperand.Pair),
|
|
new MacroInstruction(0x61, "RS", MacroOperand.None),
|
|
new MacroInstruction(0x62, "RLS", MacroOperand.None),
|
|
new MacroInstruction(0x63, "WS", MacroOperand.None),
|
|
new MacroInstruction(0x64, "WLS", MacroOperand.None),
|
|
new MacroInstruction(0x65, "R0F", MacroOperand.Byte),
|
|
new MacroInstruction(0x66, "RF", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x67, "RL0F", MacroOperand.Byte),
|
|
new MacroInstruction(0x68, "RLF", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x69, "RLFS", MacroOperand.None),
|
|
new MacroInstruction(0x6a, "RLIPF", MacroOperand.Word),
|
|
new MacroInstruction(0x6b, "RLILPF", MacroOperand.Word),
|
|
new MacroInstruction(0x6c, "WOF", MacroOperand.None),
|
|
new MacroInstruction(0x6d, "WF", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x6e, "PSF", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x6f, "PS0F", MacroOperand.None),
|
|
|
|
new MacroInstruction(0x70, "WS0F", MacroOperand.Byte),
|
|
new MacroInstruction(0x71, "WL0F", MacroOperand.Byte),
|
|
new MacroInstruction(0x72, "WLF", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x73, "PSLF", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x74, "WLFS", MacroOperand.Byte),
|
|
new MacroInstruction(0x75, "SLDB", MacroOperand.Byte),
|
|
new MacroInstruction(0x76, "SGDB", MacroOperand.Byte),
|
|
new MacroInstruction(0x77, "LLKB", MacroOperand.Byte),
|
|
new MacroInstruction(0x78, "RKIB", MacroOperand.Byte),
|
|
new MacroInstruction(0x79, "RKDIB", MacroOperand.Byte),
|
|
new MacroInstruction(0x7a, "LKB", MacroOperand.Byte),
|
|
new MacroInstruction(0x7b, "SHIFT", MacroOperand.None),
|
|
new MacroInstruction(0x7c, "SHIFTSB", MacroOperand.SignedByte),
|
|
new MacroInstruction(0x7d, "MBP", MacroOperand.Pair),
|
|
new MacroInstruction(0x7e, "RBP", MacroOperand.Pair),
|
|
new MacroInstruction(0x7f, "WBP", MacroOperand.Pair),
|
|
|
|
new MacroInstruction(0x80, "CATCH", MacroOperand.Byte),
|
|
new MacroInstruction(0x81, "J2", MacroOperand.None),
|
|
new MacroInstruction(0x82, "J3", MacroOperand.None),
|
|
new MacroInstruction(0x83, "J4", MacroOperand.None),
|
|
new MacroInstruction(0x84, "J5", MacroOperand.None),
|
|
new MacroInstruction(0x85, "J6", MacroOperand.None),
|
|
new MacroInstruction(0x86, "J7", MacroOperand.None),
|
|
new MacroInstruction(0x87, "J8", MacroOperand.None),
|
|
new MacroInstruction(0x88, "JB", MacroOperand.Byte),
|
|
new MacroInstruction(0x89, "JW", MacroOperand.Word),
|
|
new MacroInstruction(0x8a, "JEP", MacroOperand.Pair),
|
|
new MacroInstruction(0x8b, "JEB", MacroOperand.Byte),
|
|
new MacroInstruction(0x8c, "JEBB", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x8d, "JNEP", MacroOperand.Pair),
|
|
new MacroInstruction(0x8e, "JNEB", MacroOperand.Byte),
|
|
new MacroInstruction(0x8f, "JNEBB", MacroOperand.TwoByte),
|
|
|
|
new MacroInstruction(0x90, "JLB", MacroOperand.Byte),
|
|
new MacroInstruction(0x91, "JGB", MacroOperand.Byte),
|
|
new MacroInstruction(0x92, "JGEB", MacroOperand.Byte),
|
|
new MacroInstruction(0x93, "JLEB", MacroOperand.Byte),
|
|
new MacroInstruction(0x94, "JULB", MacroOperand.Byte),
|
|
new MacroInstruction(0x95, "JUGB", MacroOperand.Byte),
|
|
new MacroInstruction(0x96, "JUGEB", MacroOperand.Byte),
|
|
new MacroInstruction(0x97, "JULEB", MacroOperand.Byte),
|
|
new MacroInstruction(0x98, "JZ3", MacroOperand.None),
|
|
new MacroInstruction(0x99, "JZ4", MacroOperand.None),
|
|
new MacroInstruction(0x9a, "JZB", MacroOperand.Byte),
|
|
new MacroInstruction(0x9b, "JNZ3", MacroOperand.None),
|
|
new MacroInstruction(0x9c, "JNZ4", MacroOperand.None),
|
|
new MacroInstruction(0x9d, "JNZB", MacroOperand.Byte),
|
|
new MacroInstruction(0x9e, "JDEB", MacroOperand.Byte),
|
|
new MacroInstruction(0x9f, "JDNEB", MacroOperand.Byte),
|
|
|
|
new MacroInstruction(0xa0, "JIB", MacroOperand.Byte),
|
|
new MacroInstruction(0xa1, "JIW", MacroOperand.Word),
|
|
new MacroInstruction(0xa2, "REC", MacroOperand.None),
|
|
new MacroInstruction(0xa3, "REC2", MacroOperand.None),
|
|
new MacroInstruction(0xa4, "DIS", MacroOperand.None),
|
|
new MacroInstruction(0xa5, "DIS2", MacroOperand.None),
|
|
new MacroInstruction(0xa6, "EXCH", MacroOperand.None),
|
|
new MacroInstruction(0xa7, "DEXCH", MacroOperand.None),
|
|
new MacroInstruction(0xa8, "DUP", MacroOperand.None),
|
|
new MacroInstruction(0xa9, "DDUP", MacroOperand.None),
|
|
new MacroInstruction(0xaa, "EXDIS", MacroOperand.None),
|
|
new MacroInstruction(0xab, "NEG", MacroOperand.None),
|
|
new MacroInstruction(0xac, "INC", MacroOperand.None),
|
|
new MacroInstruction(0xad, "DEC", MacroOperand.None),
|
|
new MacroInstruction(0xae, "DINC", MacroOperand.None),
|
|
new MacroInstruction(0xaf, "DBL", MacroOperand.None),
|
|
|
|
new MacroInstruction(0xb0, "DDBL", MacroOperand.None),
|
|
new MacroInstruction(0xb1, "TRPL", MacroOperand.None),
|
|
new MacroInstruction(0xb2, "AND", MacroOperand.None),
|
|
new MacroInstruction(0xb3, "IOR", MacroOperand.None),
|
|
new MacroInstruction(0xb4, "ADDSB", MacroOperand.SignedByte),
|
|
new MacroInstruction(0xb5, "ADD", MacroOperand.None),
|
|
new MacroInstruction(0xb6, "SUB", MacroOperand.None),
|
|
new MacroInstruction(0xb7, "DADD", MacroOperand.None),
|
|
new MacroInstruction(0xb8, "DSUB", MacroOperand.None),
|
|
new MacroInstruction(0xb9, "ADC", MacroOperand.None),
|
|
new MacroInstruction(0xba, "ACD", MacroOperand.None),
|
|
new MacroInstruction(0xbb, "AL0IB", MacroOperand.Byte),
|
|
new MacroInstruction(0xbc, "MUL", MacroOperand.None),
|
|
new MacroInstruction(0xbd, "DCMP", MacroOperand.None),
|
|
new MacroInstruction(0xbe, "UDCMP", MacroOperand.None),
|
|
Invalid,
|
|
|
|
new MacroInstruction(0xc0, "LI0", MacroOperand.None),
|
|
new MacroInstruction(0xc1, "LI1", MacroOperand.None),
|
|
new MacroInstruction(0xc2, "LI2", MacroOperand.None),
|
|
new MacroInstruction(0xc3, "LI3", MacroOperand.None),
|
|
new MacroInstruction(0xc4, "LI4", MacroOperand.None),
|
|
new MacroInstruction(0xc5, "LI5", MacroOperand.None),
|
|
new MacroInstruction(0xc6, "LI6", MacroOperand.None),
|
|
new MacroInstruction(0xc7, "LI7", MacroOperand.None),
|
|
new MacroInstruction(0xc8, "LI8", MacroOperand.None),
|
|
new MacroInstruction(0xc9, "LI9", MacroOperand.None),
|
|
new MacroInstruction(0xca, "LI10", MacroOperand.None),
|
|
new MacroInstruction(0xcb, "LIN1", MacroOperand.None),
|
|
new MacroInstruction(0xcc, "LINI", MacroOperand.None),
|
|
new MacroInstruction(0xcd, "LIB", MacroOperand.Byte),
|
|
new MacroInstruction(0xce, "LIW", MacroOperand.Word),
|
|
new MacroInstruction(0xcf, "LINB", MacroOperand.Byte),
|
|
|
|
new MacroInstruction(0xd0, "LIHB", MacroOperand.Byte),
|
|
new MacroInstruction(0xd1, "LID0", MacroOperand.None),
|
|
new MacroInstruction(0xd2, "LA0", MacroOperand.None),
|
|
new MacroInstruction(0xd3, "LA1", MacroOperand.None),
|
|
new MacroInstruction(0xd4, "LA2", MacroOperand.None),
|
|
new MacroInstruction(0xd5, "LA3", MacroOperand.None),
|
|
new MacroInstruction(0xd6, "LA6", MacroOperand.None),
|
|
new MacroInstruction(0xd7, "LA8", MacroOperand.None),
|
|
new MacroInstruction(0xd8, "LAB", MacroOperand.Byte),
|
|
new MacroInstruction(0xd9, "LAW", MacroOperand.Word),
|
|
new MacroInstruction(0xda, "GA0", MacroOperand.None),
|
|
new MacroInstruction(0xdb, "GA1", MacroOperand.None),
|
|
new MacroInstruction(0xdc, "GAB", MacroOperand.Byte),
|
|
new MacroInstruction(0xdd, "GAW", MacroOperand.Word),
|
|
Invalid,
|
|
new MacroInstruction(0xdf, "EFC0", MacroOperand.None),
|
|
|
|
new MacroInstruction(0xe0, "EFC1", MacroOperand.None),
|
|
new MacroInstruction(0xe1, "EFC2", MacroOperand.None),
|
|
new MacroInstruction(0xe2, "EFC3", MacroOperand.None),
|
|
new MacroInstruction(0xe3, "EFC4", MacroOperand.None),
|
|
new MacroInstruction(0xe4, "EFC5", MacroOperand.None),
|
|
new MacroInstruction(0xe5, "EFC6", MacroOperand.None),
|
|
new MacroInstruction(0xe6, "EFC7", MacroOperand.None),
|
|
new MacroInstruction(0xe7, "EFC8", MacroOperand.None),
|
|
new MacroInstruction(0xe8, "EFC9", MacroOperand.None),
|
|
new MacroInstruction(0xe9, "EFC10", MacroOperand.None),
|
|
new MacroInstruction(0xea, "EFC11", MacroOperand.None),
|
|
new MacroInstruction(0xeb, "EFC12", MacroOperand.None),
|
|
new MacroInstruction(0xec, "EFCB", MacroOperand.Byte),
|
|
new MacroInstruction(0xed, "LFC", MacroOperand.Word),
|
|
new MacroInstruction(0xee, "SFC", MacroOperand.None),
|
|
new MacroInstruction(0xef, "RET", MacroOperand.None),
|
|
|
|
new MacroInstruction(0xf0, "KFCB", MacroOperand.Byte),
|
|
new MacroInstruction(0xf1, "ME", MacroOperand.None),
|
|
new MacroInstruction(0xf2, "MX", MacroOperand.None),
|
|
new MacroInstruction(0xf3, "BLT", MacroOperand.None),
|
|
new MacroInstruction(0xf4, "BLTL", MacroOperand.None),
|
|
new MacroInstruction(0xf5, "BLTC", MacroOperand.None),
|
|
new MacroInstruction(0xf6, "BLTCL", MacroOperand.None),
|
|
new MacroInstruction(0xf7, "LP", MacroOperand.None),
|
|
new MacroInstruction(0xf8, "ESC", MacroOperand.Byte),
|
|
new MacroInstruction(0xf9, "ESCL", MacroOperand.Word),
|
|
new MacroInstruction(0xfa, "LGA0", MacroOperand.None),
|
|
new MacroInstruction(0xfb, "LGAB", MacroOperand.Byte),
|
|
new MacroInstruction(0xfc, "LGAW", MacroOperand.Word),
|
|
new MacroInstruction(0xfd, "DESC", MacroOperand.None),
|
|
Invalid,
|
|
Invalid,
|
|
};
|
|
|
|
private static MacroInstruction[] _lispInstructionTable =
|
|
{
|
|
Invalid,
|
|
new MacroInstruction(0x01, "CAR", MacroOperand.None),
|
|
new MacroInstruction(0x02, "CDR", MacroOperand.None),
|
|
new MacroInstruction(0x03, "LISTP", MacroOperand.None),
|
|
new MacroInstruction(0x04, "NTYPX", MacroOperand.None),
|
|
new MacroInstruction(0x05, "TYPEP", MacroOperand.Byte),
|
|
new MacroInstruction(0x06, "DTEST", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x07, "UNWIND", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x08, "FN0", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x09, "FN1", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x0a, "FN2", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x0b, "FN3", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x0c, "FN4", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x0d, "FNX", MacroOperand.ThreeByte),
|
|
new MacroInstruction(0x0e, "APPLYFN", MacroOperand.None),
|
|
new MacroInstruction(0x0f, "CHECKAPPLY", MacroOperand.None),
|
|
|
|
new MacroInstruction(0x10, "RETURN", MacroOperand.None),
|
|
new MacroInstruction(0x11, "BIND", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x12, "UNBIND", MacroOperand.None),
|
|
new MacroInstruction(0x13, "DUNBIND", MacroOperand.None),
|
|
new MacroInstruction(0x14, "RPLPTR.N", MacroOperand.Byte),
|
|
new MacroInstruction(0x15, "GCREF", MacroOperand.Byte),
|
|
new MacroInstruction(0x16, "ASSOC", MacroOperand.None),
|
|
new MacroInstruction(0x17, "GVAR<-", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x18, "RPLACA", MacroOperand.None),
|
|
new MacroInstruction(0x19, "RPLACD", MacroOperand.None),
|
|
new MacroInstruction(0x1a, "CONS", MacroOperand.None),
|
|
new MacroInstruction(0x1b, "CMLASSOC", MacroOperand.None),
|
|
new MacroInstruction(0x1c, "FMEMB", MacroOperand.None),
|
|
new MacroInstruction(0x1d, "CMLMEMBER", MacroOperand.None),
|
|
new MacroInstruction(0x1e, "FINDKEY", MacroOperand.Byte),
|
|
new MacroInstruction(0x1f, "CREATECELL", MacroOperand.None),
|
|
|
|
new MacroInstruction(0x20, "BIN", MacroOperand.None),
|
|
new MacroInstruction(0x21, "BOUT", MacroOperand.None),
|
|
new MacroInstruction(0x22, "PROLOGOPDISP", MacroOperand.None),
|
|
new MacroInstruction(0x23, "RESTLIST", MacroOperand.Byte),
|
|
new MacroInstruction(0x24, "MISCN", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x25, "ENDCOLLECT", MacroOperand.None),
|
|
new MacroInstruction(0x26, "RPLCONS", MacroOperand.None),
|
|
Invalid,
|
|
new MacroInstruction(0x28, "ELT", MacroOperand.None),
|
|
new MacroInstruction(0x29, "NTHCHC", MacroOperand.None),
|
|
new MacroInstruction(0x2a, "SETA", MacroOperand.None),
|
|
new MacroInstruction(0x2b, "RPLCHARCODE", MacroOperand.None),
|
|
new MacroInstruction(0x2c, "EVAL", MacroOperand.None),
|
|
new MacroInstruction(0x2d, "EVALV", MacroOperand.None),
|
|
new MacroInstruction(0x2e, "TYPECHECK.N", MacroOperand.Byte),
|
|
new MacroInstruction(0x2f, "STKSCAN", MacroOperand.None),
|
|
|
|
new MacroInstruction(0x30, "BUSBLT", MacroOperand.Byte),
|
|
new MacroInstruction(0x31, "MISC8", MacroOperand.Byte),
|
|
new MacroInstruction(0x32, "UBFLOAT3", MacroOperand.Byte),
|
|
new MacroInstruction(0x33, "TYPEMASK.N", MacroOperand.Byte),
|
|
new MacroInstruction(0x34, "PROLOGREADPTR", MacroOperand.None),
|
|
new MacroInstruction(0x35, "PROLOGREADTAG", MacroOperand.None),
|
|
new MacroInstruction(0x36, "PROLOGWRITETAGPTR", MacroOperand.None),
|
|
new MacroInstruction(0x37, "PROLOGWRITE0PTR", MacroOperand.None),
|
|
new MacroInstruction(0x38, "PSEUDOCOLOR", MacroOperand.None),
|
|
Invalid,
|
|
new MacroInstruction(0x3a, "EQL", MacroOperand.None),
|
|
new MacroInstruction(0x3b, "DRAWLINE", MacroOperand.None),
|
|
new MacroInstruction(0x3c, "STORE.N", MacroOperand.Byte),
|
|
new MacroInstruction(0x3d, "COPY.N", MacroOperand.Byte),
|
|
new MacroInstruction(0x3e, "RAID", MacroOperand.None),
|
|
new MacroInstruction(0x3f, "\\RETURN", MacroOperand.None),
|
|
|
|
new MacroInstruction(0x40, "IVAR0", MacroOperand.None),
|
|
new MacroInstruction(0x41, "IVAR1", MacroOperand.None),
|
|
new MacroInstruction(0x42, "IVAR2", MacroOperand.None),
|
|
new MacroInstruction(0x43, "IVAR3", MacroOperand.None),
|
|
new MacroInstruction(0x44, "IVAR4", MacroOperand.None),
|
|
new MacroInstruction(0x45, "IVAR5", MacroOperand.None),
|
|
new MacroInstruction(0x46, "IVAR6", MacroOperand.None),
|
|
new MacroInstruction(0x47, "IVARX", MacroOperand.Byte),
|
|
new MacroInstruction(0x48, "PVAR0", MacroOperand.None),
|
|
new MacroInstruction(0x49, "PVAR1", MacroOperand.None),
|
|
new MacroInstruction(0x4a, "PVAR2", MacroOperand.None),
|
|
new MacroInstruction(0x4b, "PVAR3", MacroOperand.None),
|
|
new MacroInstruction(0x4c, "PVAR4", MacroOperand.None),
|
|
new MacroInstruction(0x4d, "PVAR5", MacroOperand.None),
|
|
new MacroInstruction(0x4e, "PVAR6", MacroOperand.None),
|
|
new MacroInstruction(0x4f, "PVARX", MacroOperand.Byte),
|
|
|
|
new MacroInstruction(0x50, "FVAR0", MacroOperand.None),
|
|
new MacroInstruction(0x51, "FVAR1", MacroOperand.None),
|
|
new MacroInstruction(0x52, "FVAR2", MacroOperand.None),
|
|
new MacroInstruction(0x53, "FVAR3", MacroOperand.None),
|
|
new MacroInstruction(0x54, "FVAR4", MacroOperand.None),
|
|
new MacroInstruction(0x55, "FVAR5", MacroOperand.None),
|
|
new MacroInstruction(0x56, "FVAR6", MacroOperand.None),
|
|
new MacroInstruction(0x57, "FVARX", MacroOperand.Byte),
|
|
new MacroInstruction(0x58, "PVAR0<-", MacroOperand.None),
|
|
new MacroInstruction(0x59, "PVAR1<-", MacroOperand.None),
|
|
new MacroInstruction(0x5a, "PVAR2<-", MacroOperand.None),
|
|
new MacroInstruction(0x5b, "PVAR3<-", MacroOperand.None),
|
|
new MacroInstruction(0x5c, "PVAR4<-", MacroOperand.None),
|
|
new MacroInstruction(0x5d, "PVAR5<-", MacroOperand.None),
|
|
new MacroInstruction(0x5e, "PVAR6<-", MacroOperand.None),
|
|
new MacroInstruction(0x5f, "PVARX<-", MacroOperand.Byte),
|
|
|
|
new MacroInstruction(0x60, "GVAR", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x61, "ARG0", MacroOperand.None),
|
|
new MacroInstruction(0x62, "IVARX<-", MacroOperand.Byte),
|
|
new MacroInstruction(0x63, "FVARX<-", MacroOperand.Byte),
|
|
new MacroInstruction(0x64, "COPY", MacroOperand.None),
|
|
new MacroInstruction(0x65, "MYARGCOUNT", MacroOperand.None),
|
|
new MacroInstruction(0x66, "MYALINK", MacroOperand.None),
|
|
new MacroInstruction(0x67, "ACONST", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x68, "'NIL", MacroOperand.None),
|
|
new MacroInstruction(0x69, "'T", MacroOperand.None),
|
|
new MacroInstruction(0x6a, "'0", MacroOperand.None),
|
|
new MacroInstruction(0x6b, "'1", MacroOperand.None),
|
|
new MacroInstruction(0x6c, "SIC", MacroOperand.Byte),
|
|
new MacroInstruction(0x6d, "SNIC", MacroOperand.Byte),
|
|
new MacroInstruction(0x6e, "SICX", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x6f, "GCONST", MacroOperand.ThreeByte),
|
|
|
|
new MacroInstruction(0x70, "ATOMNUMBER", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x71, "READFLAGS", MacroOperand.None),
|
|
new MacroInstruction(0x72, "READRP", MacroOperand.None),
|
|
new MacroInstruction(0x73, "WRITEMAP", MacroOperand.None),
|
|
new MacroInstruction(0x74, "READPRINTERPORT", MacroOperand.None),
|
|
new MacroInstruction(0x75, "WRITEPRINTERPORT", MacroOperand.None),
|
|
new MacroInstruction(0x76, "PILOTBITBLT", MacroOperand.None),
|
|
new MacroInstruction(0x77, "RCLK", MacroOperand.None),
|
|
new MacroInstruction(0x78, "MISC1", MacroOperand.Byte),
|
|
new MacroInstruction(0x79, "MISC2", MacroOperand.Byte),
|
|
new MacroInstruction(0x7a, "RECLAIMCELL", MacroOperand.None),
|
|
new MacroInstruction(0x7b, "GCSCAN1", MacroOperand.None),
|
|
new MacroInstruction(0x7c, "GCSCAN2", MacroOperand.None),
|
|
new MacroInstruction(0x7d, "SUBRCALL", MacroOperand.TwoByte),
|
|
new MacroInstruction(0x7e, "CONTEXT", MacroOperand.None),
|
|
Invalid,
|
|
|
|
new MacroInstruction(0x80, "JUMP0", MacroOperand.None),
|
|
new MacroInstruction(0x81, "JUMP1", MacroOperand.None),
|
|
new MacroInstruction(0x82, "JUMP2", MacroOperand.None),
|
|
new MacroInstruction(0x83, "JUMP3", MacroOperand.None),
|
|
new MacroInstruction(0x84, "JUMP4", MacroOperand.None),
|
|
new MacroInstruction(0x85, "JUMP5", MacroOperand.None),
|
|
new MacroInstruction(0x86, "JUMP6", MacroOperand.None),
|
|
new MacroInstruction(0x87, "JUMP7", MacroOperand.None),
|
|
new MacroInstruction(0x88, "JUMP8", MacroOperand.None),
|
|
new MacroInstruction(0x89, "JUMP9", MacroOperand.None),
|
|
new MacroInstruction(0x8a, "JUMP10", MacroOperand.None),
|
|
new MacroInstruction(0x8b, "JUMP11", MacroOperand.None),
|
|
new MacroInstruction(0x8c, "JUMP12", MacroOperand.None),
|
|
new MacroInstruction(0x8d, "JUMP13", MacroOperand.None),
|
|
new MacroInstruction(0x8e, "JUMP14", MacroOperand.None),
|
|
new MacroInstruction(0x8f, "JUMP15", MacroOperand.None),
|
|
|
|
new MacroInstruction(0x90, "FJUMP0", MacroOperand.None),
|
|
new MacroInstruction(0x91, "FJUMP1", MacroOperand.None),
|
|
new MacroInstruction(0x92, "FJUMP2", MacroOperand.None),
|
|
new MacroInstruction(0x93, "FJUMP3", MacroOperand.None),
|
|
new MacroInstruction(0x94, "FJUMP4", MacroOperand.None),
|
|
new MacroInstruction(0x95, "FJUMP5", MacroOperand.None),
|
|
new MacroInstruction(0x96, "FJUMP6", MacroOperand.None),
|
|
new MacroInstruction(0x97, "FJUMP7", MacroOperand.None),
|
|
new MacroInstruction(0x98, "FJUMP8", MacroOperand.None),
|
|
new MacroInstruction(0x99, "FJUMP9", MacroOperand.None),
|
|
new MacroInstruction(0x9a, "FJUMP10", MacroOperand.None),
|
|
new MacroInstruction(0x9b, "FJUMP11", MacroOperand.None),
|
|
new MacroInstruction(0x9c, "FJUMP12", MacroOperand.None),
|
|
new MacroInstruction(0x9d, "FJUMP13", MacroOperand.None),
|
|
new MacroInstruction(0x9e, "FJUMP14", MacroOperand.None),
|
|
new MacroInstruction(0x9f, "FJUMP15", MacroOperand.None),
|
|
|
|
new MacroInstruction(0xa0, "TJUMP2", MacroOperand.None),
|
|
new MacroInstruction(0xa1, "TJUMP3", MacroOperand.None),
|
|
new MacroInstruction(0xa2, "TJUMP4", MacroOperand.None),
|
|
new MacroInstruction(0xa3, "TJUMP5", MacroOperand.None),
|
|
new MacroInstruction(0xa4, "TJUMP6", MacroOperand.None),
|
|
new MacroInstruction(0xa5, "TJUMP7", MacroOperand.None),
|
|
new MacroInstruction(0xa6, "TJUMP8", MacroOperand.None),
|
|
new MacroInstruction(0xa7, "TJUMP9", MacroOperand.None),
|
|
new MacroInstruction(0xa8, "TJUMPa", MacroOperand.None),
|
|
new MacroInstruction(0xa9, "TJUMPb", MacroOperand.None),
|
|
new MacroInstruction(0xaa, "TJUMPc", MacroOperand.None),
|
|
new MacroInstruction(0xab, "TJUMPe", MacroOperand.None),
|
|
new MacroInstruction(0xac, "TJUMPf", MacroOperand.None),
|
|
new MacroInstruction(0xad, "TJUMP10", MacroOperand.None),
|
|
new MacroInstruction(0xae, "TJUMP11", MacroOperand.None),
|
|
new MacroInstruction(0xaf, "TJUMP12", MacroOperand.None),
|
|
|
|
new MacroInstruction(0xb0, "JUMPX", MacroOperand.Byte),
|
|
new MacroInstruction(0xb1, "JUMPXX", MacroOperand.TwoByte),
|
|
new MacroInstruction(0xb2, "FJUMPX", MacroOperand.Byte),
|
|
new MacroInstruction(0xb3, "TJUMPX", MacroOperand.Byte),
|
|
new MacroInstruction(0xb4, "NFJUMPX", MacroOperand.Byte),
|
|
new MacroInstruction(0xb5, "NTJUMPX", MacroOperand.Byte),
|
|
new MacroInstruction(0xb6, "AREF1", MacroOperand.None),
|
|
new MacroInstruction(0xb7, "ASET1", MacroOperand.None),
|
|
new MacroInstruction(0xb8, "PVAR0<-^", MacroOperand.None),
|
|
new MacroInstruction(0xb9, "PVAR1<-^", MacroOperand.None),
|
|
new MacroInstruction(0xba, "PVAR2<-^", MacroOperand.None),
|
|
new MacroInstruction(0xbb, "PVAR3<-^", MacroOperand.None),
|
|
new MacroInstruction(0xbc, "PVAR4<-^", MacroOperand.None),
|
|
new MacroInstruction(0xbd, "PVAR5<-^", MacroOperand.None),
|
|
new MacroInstruction(0xbe, "PVAR6<-^", MacroOperand.None),
|
|
new MacroInstruction(0xbf, "POP", MacroOperand.None),
|
|
|
|
new MacroInstruction(0xc0, "POP.N", MacroOperand.Byte),
|
|
new MacroInstruction(0xc1, "ATOMCELL.N", MacroOperand.Byte),
|
|
new MacroInstruction(0xc2, "GETBASEBYTE", MacroOperand.None),
|
|
new MacroInstruction(0xc3, "INSTANCEP", MacroOperand.TwoByte),
|
|
new MacroInstruction(0xc4, "BLT", MacroOperand.None),
|
|
new MacroInstruction(0xc5, "MISC10", MacroOperand.TwoByte),
|
|
Invalid,
|
|
new MacroInstruction(0xc7, "PUTBASEBYTE", MacroOperand.None),
|
|
new MacroInstruction(0xc8, "GETBASE.N", MacroOperand.Byte),
|
|
new MacroInstruction(0xc9, "GETBASEPTR.N", MacroOperand.Byte),
|
|
new MacroInstruction(0xca, "GETBITS.N.FD", MacroOperand.TwoByte),
|
|
Invalid,
|
|
new MacroInstruction(0xcc, "CMLEQUAL", MacroOperand.None),
|
|
new MacroInstruction(0xcd, "PUTBASE.N", MacroOperand.Byte),
|
|
new MacroInstruction(0xce, "PUTBASEPTR.N", MacroOperand.Byte),
|
|
new MacroInstruction(0xcf, "PUTBITS.N.FD", MacroOperand.TwoByte),
|
|
|
|
new MacroInstruction(0xd0, "ADDBASE", MacroOperand.None),
|
|
new MacroInstruction(0xd1, "VAG2", MacroOperand.None),
|
|
new MacroInstruction(0xd2, "HILOC", MacroOperand.None),
|
|
new MacroInstruction(0xd3, "LOLOC", MacroOperand.None),
|
|
new MacroInstruction(0xd4, "PLUS2", MacroOperand.None),
|
|
new MacroInstruction(0xd5, "DIFFERENCE", MacroOperand.None),
|
|
new MacroInstruction(0xd6, "TIMES2", MacroOperand.None),
|
|
new MacroInstruction(0xd7, "QUOTIENT", MacroOperand.None),
|
|
new MacroInstruction(0xd8, "IPLUS2", MacroOperand.None),
|
|
new MacroInstruction(0xd9, "IDIFFERENCE", MacroOperand.None),
|
|
new MacroInstruction(0xda, "ITIMES2", MacroOperand.None),
|
|
new MacroInstruction(0xdb, "IQUOTIENT", MacroOperand.None),
|
|
new MacroInstruction(0xdc, "IREMAINDER", MacroOperand.None),
|
|
new MacroInstruction(0xdd, "IPLUS.N", MacroOperand.Byte),
|
|
new MacroInstruction(0xde, "IDIFFERENCE.N", MacroOperand.Byte),
|
|
Invalid,
|
|
|
|
new MacroInstruction(0xe0, "LLSH1", MacroOperand.None),
|
|
new MacroInstruction(0xe1, "LLSH8", MacroOperand.None),
|
|
new MacroInstruction(0xe2, "LRSH1", MacroOperand.None),
|
|
new MacroInstruction(0xe3, "LRSH8", MacroOperand.None),
|
|
new MacroInstruction(0xe4, "LOGOR2", MacroOperand.None),
|
|
new MacroInstruction(0xe5, "LOGAND2", MacroOperand.None),
|
|
new MacroInstruction(0xe6, "LOGXOR2", MacroOperand.None),
|
|
new MacroInstruction(0xe7, "LSH", MacroOperand.None),
|
|
new MacroInstruction(0xe8, "FPLUS2", MacroOperand.None),
|
|
new MacroInstruction(0xe9, "FDIFFERENCE", MacroOperand.None),
|
|
new MacroInstruction(0xea, "FTIMES2", MacroOperand.None),
|
|
new MacroInstruction(0xeb, "FQUOTIENT", MacroOperand.None),
|
|
new MacroInstruction(0xec, "UBFLOAT2", MacroOperand.Byte),
|
|
new MacroInstruction(0xed, "UBFLOAT1", MacroOperand.Byte),
|
|
new MacroInstruction(0xee, "AREF2", MacroOperand.None),
|
|
new MacroInstruction(0xef, "ASET2", MacroOperand.None),
|
|
|
|
new MacroInstruction(0xe0, "EQ", MacroOperand.None),
|
|
new MacroInstruction(0xe1, "IGREATERP", MacroOperand.None),
|
|
new MacroInstruction(0xe2, "FGREATERP", MacroOperand.None),
|
|
new MacroInstruction(0xe3, "GREATERP", MacroOperand.None),
|
|
new MacroInstruction(0xe4, "EQUAL", MacroOperand.None),
|
|
new MacroInstruction(0xe5, "MAKENUMBER", MacroOperand.None),
|
|
new MacroInstruction(0xe6, "BOXIPLUS", MacroOperand.None),
|
|
new MacroInstruction(0xe7, "BOXIDIFFERENCE", MacroOperand.None),
|
|
new MacroInstruction(0xe8, "FLOATBLT", MacroOperand.None),
|
|
new MacroInstruction(0xe9, "FFTSTEP", MacroOperand.None),
|
|
new MacroInstruction(0xea, "MISC3", MacroOperand.ThreeByte),
|
|
new MacroInstruction(0xeb, "MISC4", MacroOperand.ThreeByte),
|
|
Invalid,
|
|
new MacroInstruction(0xed, "SWAP", MacroOperand.None),
|
|
new MacroInstruction(0xee, "NOP", MacroOperand.None),
|
|
Invalid,
|
|
};
|
|
|
|
private static MacroInstruction Invalid = new MacroInstruction(0x00, "INVALID", MacroOperand.None);
|
|
}
|
|
}
|