115 lines
3.8 KiB
JavaScript
115 lines
3.8 KiB
JavaScript
class IS_STI extends Microcode_Instruction {
|
|
constructor(props) {
|
|
super(props);
|
|
this.Bytecode = 0x3E0;
|
|
this.Mnemonic = "STI";
|
|
this.LongName = "Set Thread Interrupt (2nd word MUST BE 0x80)";
|
|
this.Aliases = new Array();
|
|
|
|
this.Type = InstructionTypes.SingleWord;
|
|
this.Operands = new Array();
|
|
this.Words = 2;
|
|
this.Cycles = 12;
|
|
|
|
this.Microcode[2] = CONTROL_OUT_SP | CONTROL_RRI;
|
|
this.Microcode[3] = CONTROL_OUT_AB | CONTROL_RI;
|
|
this.Microcode[4] = CONTROL_OUT_PC | CONTROL_RRI;
|
|
this.Microcode[5] = CONTROL_OUT_RO | CONTROL_RBIL | CONTROL_PCC;
|
|
this.Microcode[6] = CONTROL_OUT_SR | CONTROL_RAIL;
|
|
this.Microcode[7] = CONTROL_OUT_AB | CONTROL_ALU_OR;
|
|
this.Microcode[8] = CONTROL_OUT_AO | CONTROL_RAIL;
|
|
this.Microcode[9] = CONTROL_OUT_SS;
|
|
this.Microcode[10] = CONTROL_OUT_SP | CONTROL_RRI;
|
|
this.Microcode[11] = CONTROL_OUT_RO | CONTROL_RAIL | CONTROL_RBIH;
|
|
}
|
|
}
|
|
is_STI = new IS_STI;
|
|
Instructions.push(is_STI);
|
|
|
|
class IS_CTI extends Microcode_Instruction {
|
|
constructor(props) {
|
|
super(props);
|
|
this.Bytecode = 0x3E1;
|
|
this.Mnemonic = "CTI";
|
|
this.LongName = "Clear Thread Interrupt (2nd word MUST BE 0x7F)";
|
|
this.Aliases = new Array();
|
|
|
|
this.Type = InstructionTypes.SingleWord;
|
|
this.Operands = new Array();
|
|
this.Words = 2;
|
|
this.Cycles = 12;
|
|
|
|
this.Microcode[2] = CONTROL_OUT_SP | CONTROL_RRI;
|
|
this.Microcode[3] = CONTROL_OUT_AB | CONTROL_RI;
|
|
this.Microcode[4] = CONTROL_OUT_PC | CONTROL_RRI;
|
|
this.Microcode[5] = CONTROL_OUT_RO | CONTROL_RBIL | CONTROL_PCC;
|
|
this.Microcode[6] = CONTROL_OUT_SR | CONTROL_RAIL;
|
|
this.Microcode[7] = CONTROL_OUT_AB | CONTROL_ALU_AND;
|
|
this.Microcode[8] = CONTROL_OUT_AO | CONTROL_RAIL;
|
|
this.Microcode[9] = CONTROL_OUT_SS;
|
|
this.Microcode[10] = CONTROL_OUT_SP | CONTROL_RRI;
|
|
this.Microcode[11] = CONTROL_OUT_RO | CONTROL_RAIL | CONTROL_RBIH;
|
|
}
|
|
}
|
|
is_CTI = new IS_CTI;
|
|
Instructions.push(is_CTI);
|
|
|
|
class IS_RTI extends Microcode_Instruction {
|
|
constructor(props) {
|
|
super(props);
|
|
this.Bytecode = 0x3FE;
|
|
this.Mnemonic = "RTI";
|
|
this.LongName = "Return from Thread Interrupt (internal instruction ONLY)";
|
|
this.Aliases = new Array();
|
|
|
|
this.Type = InstructionTypes.SingleWord;
|
|
this.Operands = new Array();
|
|
this.Words = 1;
|
|
this.Cycles = 6;
|
|
this.Microcode[0] = CONTROL_OUT_SP | CONTROL_RRI;
|
|
this.Microcode[1] = CONTROL_OUT_PC | CONTROL_RI | CONTROL_SPD | CONTROL_SPC;
|
|
this.Microcode[2] = CONTROL_OUT_TI | CONTROL_PCI;
|
|
this.Microcode[3] = CONTROL_RHI;
|
|
this.Microcode[4] = CONTROL_OUT_PC | CONTROL_RRI;
|
|
this.Microcode[5] = CONTROL_OUT_RO | CONTROL_IRI | CONTROL_PCC;
|
|
|
|
}
|
|
}
|
|
is_RTI = new IS_RTI;
|
|
Instructions.push(is_RTI);
|
|
|
|
|
|
class IS_NOP extends Microcode_Instruction {
|
|
constructor(props) {
|
|
super(props);
|
|
this.Bytecode = 0x3ff;
|
|
this.Mnemonic = "NOP";
|
|
this.LongName = "NO OPERATION";
|
|
this.Aliases = new Array();
|
|
|
|
this.Type = InstructionTypes.SingleWord;
|
|
this.Operands = new Array();
|
|
this.Words = 1;
|
|
this.Cycles = 2;
|
|
}
|
|
}
|
|
is_NOP = new IS_NOP;
|
|
Instructions.push(is_NOP);
|
|
|
|
class IS_NOP0 extends Microcode_Instruction {
|
|
constructor(props) {
|
|
super(props);
|
|
this.Bytecode = 0x0;
|
|
this.Mnemonic = "NOP";
|
|
this.LongName = "NO OPERATION";
|
|
this.Aliases = new Array();
|
|
|
|
this.Type = InstructionTypes.SingleWord;
|
|
this.Operands = new Array();
|
|
this.Words = 1;
|
|
this.Cycles = 2;
|
|
}
|
|
}
|
|
is_NOP0 = new IS_NOP0;
|
|
Instructions.push(is_NOP0);
|