8SA1Sim/js/isa/stx.js
2021-04-11 16:22:48 -07:00

1156 lines
38 KiB
JavaScript

/*
SAVE x Instructions
OPCODE Range: 0x100:0x1FF
Addressing follows the following bit table:
0b000XXXXX Immediate store (8 bit for A-D, 16 bit for paired registers)
0b001XXXXX 16 bit Absolute + 16 bit Immediate Offset (signed)
0b010XXXXX 16 bit Absolute
0b011XXXXX 24 bit Absolute
0b100XXXXX 16 bit Indirect
0b101XXXXX 24 bit Indirect
0b110XXXXX 24 bit Indirect + 16 bit immediate offset (signed)
0b111XXXXX 24 bit Absolute + 16 bit Absolute offset (signed)
Register FROM follows the following bit table:
0bXXX00000 [0x00] ABCD // ONLY for absolutes and indirects
0bXXX00001 [0x01] CDAB // ONLY for absolutes and indirects
0bXXX00010 [0x02] AL
0bXXX00011 [0x03] AH
0bXXX00100 [0x04] BL
0bXXX00101 [0x05] BH
0bXXX00110 [0x06] CL
0bXXX00111 [0x07] CH
0bXXX01000 [0x08] DL
0bXXX01001 [0x09] DH
0bXXX01010 [0x0A] AB
0bXXX01011 [0x0B] AC
0bXXX01100 [0x0C] AD
0bXXX01101 [0x0D] BA
0bXXX01110 [0x0E] BC
0bXXX01111 [0x0F] BD
0bXXX10000 [0x10] CA
0bXXX10001 [0x11] CB
0bXXX10010 [0x12] CD
0bXXX10011 [0x13] DA
0bXXX10100 [0x14] DB
0bXXX10101 [0x15] DC
0bXXX10110 [0x16] ABSP
0bXXX10111 [0x17] CDSP
0bXXX11000 [0x18] ALSP
0bXXX11001 [0x19] AHSP
0bXXX11010 [0x1A] BLSP
0bXXX11011 [0x1B] BHSP
0bXXX11100 [0x1C]
0bXXX11101 [0x1D]
0bXXX11110 [0x1E] SP
0bXXX11111 [0x1F] SPP
Examples:
24 bit indirect STAB [SP] -> 0x1D6 [0b10110110] (Stack is pushed with LSW of address first, followed by MSW of address.)
16 bit absolute STAL 0x0420 -> 0x142 [0b01000010]
*/
//--------------------------- General Purpose Registers STx Absolutes ---------------------------
class IS_STAB_CDabs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x140;
this.Mnemonic = "STAB";
this.LongName = "STORE Registers A and B";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "CD", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_CD | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_AB | CONTROL_RI;
}
}
is_STAB_cda = new IS_STAB_CDabs16;
Instructions.push(is_STAB_cda);
class IS_STCD_ABabs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x141;
this.Mnemonic = "STCD";
this.LongName = "STORE Registers C and D";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "AB", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_AB | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_CD | CONTROL_RI;
}
}
is_STCD_aba = new IS_STCD_ABabs16;
Instructions.push(is_STCD_aba);
class IS_STAL_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x142;
this.Mnemonic = "STAL";
this.LongName = "STORE Register A to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_AL | CONTROL_RI | CONTROL_PCC;
}
}
is_STAL_a = new IS_STAL_abs16;
Instructions.push(is_STAL_a);
class IS_STAH_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x143;
this.Mnemonic = "STAH";
this.LongName = "STORE Register A to HIGH Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_AH | CONTROL_RI | CONTROL_PCC;
}
}
is_STAH_a = new IS_STAH_abs16;
Instructions.push(is_STAH_a);
class IS_STBL_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x144;
this.Mnemonic = "STBL";
this.LongName = "STORE Register B to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_BL | CONTROL_RI | CONTROL_PCC;
}
}
is_STBL_a = new IS_STBL_abs16;
Instructions.push(is_STBL_a);
class IS_STBH_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x145;
this.Mnemonic = "STBH";
this.LongName = "STORE Register B to HIGH Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_BH | CONTROL_RI | CONTROL_PCC;
}
}
is_STBH_a = new IS_STBH_abs16;
Instructions.push(is_STBH_a);
class IS_STCL_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x146;
this.Mnemonic = "STCL";
this.LongName = "STORE Register C to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_CL | CONTROL_RI | CONTROL_PCC;
}
}
is_STCL_a = new IS_STCL_abs16;
Instructions.push(is_STCL_a);
class IS_STCH_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x147;
this.Mnemonic = "STCH";
this.LongName = "STORE Register C to HIGH Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_CH | CONTROL_RI | CONTROL_PCC;
}
}
is_STCH_a = new IS_STCH_abs16;
Instructions.push(is_STCH_a);
class IS_STDL_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x148;
this.Mnemonic = "STDL";
this.LongName = "STORE Register D to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_DL | CONTROL_RI | CONTROL_PCC;
}
}
is_STDL_a = new IS_STDL_abs16;
Instructions.push(is_STDL_a);
class IS_STDH_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x149;
this.Mnemonic = "STDH";
this.LongName = "STORE Register D to HIGH Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_DH | CONTROL_RI | CONTROL_PCC;
}
}
is_STDH_a = new IS_STDH_abs16;
Instructions.push(is_STDH_a);
class IS_STAB_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x14A;
this.Mnemonic = "STAB";
this.LongName = "STORE Register A and B";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_AB | CONTROL_RI | CONTROL_PCC;
}
}
is_STAB_a = new IS_STAB_abs16;
Instructions.push(is_STAB_a);
class IS_STAC_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x14B;
this.Mnemonic = "STAC";
this.LongName = "STORE Register A and C";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_AC | CONTROL_RI | CONTROL_PCC;
}
}
is_STAC_a = new IS_STAC_abs16;
Instructions.push(is_STAC_a);
class IS_STAD_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x14C;
this.Mnemonic = "STAD";
this.LongName = "STORE Register A and D";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_AD | CONTROL_RI | CONTROL_PCC;
}
}
is_STAD_a = new IS_STAD_abs16;
Instructions.push(is_STAD_a);
class IS_STBA_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x14D;
this.Mnemonic = "STBA";
this.LongName = "STORE Register B and A";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_BA | CONTROL_RI | CONTROL_PCC;
}
}
is_STBA_a = new IS_STBA_abs16;
Instructions.push(is_STBA_a);
class IS_STBC_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x14E;
this.Mnemonic = "STBC";
this.LongName = "STORE Register B and C";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_BC | CONTROL_RI | CONTROL_PCC;
}
}
is_STBC_a = new IS_STBC_abs16;
Instructions.push(is_STBC_a);
class IS_STBD_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x14F;
this.Mnemonic = "STBD";
this.LongName = "STORE Register B and D";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_BD | CONTROL_RI | CONTROL_PCC;
}
}
is_STBD_a = new IS_STBD_abs16;
Instructions.push(is_STBD_a);
class IS_STCA_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x150;
this.Mnemonic = "STCA";
this.LongName = "STORE Register C and A";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_CA | CONTROL_RI | CONTROL_PCC;
}
}
is_STCA_a = new IS_STCA_abs16;
Instructions.push(is_STCA_a);
class IS_STCB_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x151;
this.Mnemonic = "STCB";
this.LongName = "STORE Register C and B";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_CB | CONTROL_RI | CONTROL_PCC;
}
}
is_STCB_a = new IS_STCB_abs16;
Instructions.push(is_STCB_a);
class IS_STCD_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x152;
this.Mnemonic = "STCD";
this.LongName = "STORE Register C and D";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_CD | CONTROL_RI | CONTROL_PCC;
}
}
is_STCD_a = new IS_STCD_abs16;
Instructions.push(is_STCD_a);
class IS_STDA_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x153;
this.Mnemonic = "STDA";
this.LongName = "STORE Register D and A";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_DA | CONTROL_RI | CONTROL_PCC;
}
}
is_STDA_a = new IS_STDA_abs16;
Instructions.push(is_STDA_a);
class IS_STDB_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x154;
this.Mnemonic = "STDB";
this.LongName = "STORE Register D and B";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_DB | CONTROL_RI | CONTROL_PCC;
}
}
is_STDB_a = new IS_STDB_abs16;
Instructions.push(is_STDB_a);
class IS_STDC_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x155;
this.Mnemonic = "STDC";
this.LongName = "STORE Register D and C";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 2;
this.Cycles = 4;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_DC | CONTROL_RI | CONTROL_PCC;
}
}
is_STDC_a = new IS_STDC_abs16;
Instructions.push(is_STDC_a);
class IS_STSP_abs16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x15E;
this.Mnemonic = "STSP";
this.LongName = "STORE Stack Pointer";
this.Aliases = new Array();
this.Type = InstructionTypes.Absolute16;
this.Operands = new Array({Operand: "", Bitwidth: 16});
this.Words = 1;
this.Cycles = 5;
this.Microcode[2] = CONTROL_SPC;
this.Microcode[3] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_SP | CONTROL_RI | CONTROL_SPD | CONTROL_SPC;
}
}
is_STSP_a = new IS_STSP_abs16;
Instructions.push(is_STSP_a);
//--------------------------- General Purpose Registers STx Indirect ---------------------------
class IS_STAB_CDind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x180;
this.Mnemonic = "STAB";
this.LongName = "STORE Register A and B";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "[CD]", Bitwidth: 16});
this.Words = 1;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_CD | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_AB | CONTROL_RI;
}
}
is_STAB_cdin = new IS_STAB_CDind16;
Instructions.push(is_STAB_cdin);
class IS_STCD_ABind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x181;
this.Mnemonic = "STCD";
this.LongName = "STORE Register C and D";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "[AB]", Bitwidth: 16});
this.Words = 1;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_AB | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_CD | CONTROL_RI;
}
}
is_STCD_abin = new IS_STCD_ABind16;
Instructions.push(is_STCD_abin);
class IS_STAL_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x182;
this.Mnemonic = "STAL";
this.LongName = "STORE Register A to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_AL | CONTROL_RI;
}
}
is_STAL_in = new IS_STAL_ind16;
Instructions.push(is_STAL_in);
class IS_STAH_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x183;
this.Mnemonic = "STAH";
this.LongName = "STORE Register A to HIGH Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_AH | CONTROL_RI;
}
}
is_STAH_in = new IS_STAH_ind16;
Instructions.push(is_STAH_in);
class IS_STBL_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x184;
this.Mnemonic = "STBL";
this.LongName = "STORE Register B to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_BL | CONTROL_RI;
}
}
is_STBL_in = new IS_STBL_ind16;
Instructions.push(is_STBL_in);
class IS_STBH_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x185;
this.Mnemonic = "STBH";
this.LongName = "STORE Register B to HIGH Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_BH | CONTROL_RI;
}
}
is_STBH_in = new IS_STBH_ind16;
Instructions.push(is_STBH_in);
class IS_STCL_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x186;
this.Mnemonic = "STCL";
this.LongName = "STORE Register C to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_CL | CONTROL_RI;
}
}
is_STCL_in = new IS_STCL_ind16;
Instructions.push(is_STCL_in);
class IS_STCH_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x187;
this.Mnemonic = "STCH";
this.LongName = "STORE Register C to HIGH Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_CH | CONTROL_RI;
}
}
is_STCH_in = new IS_STCH_ind16;
Instructions.push(is_STCH_in);
class IS_STDL_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x188;
this.Mnemonic = "STDL";
this.LongName = "STORE Register D to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_DL | CONTROL_RI;
}
}
is_STDL_in = new IS_STDL_ind16;
Instructions.push(is_STDL_in);
class IS_STDH_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x189;
this.Mnemonic = "STDH";
this.LongName = "STORE Register D to HIGH Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_DH | CONTROL_RI;
}
}
is_STDH_in = new IS_STDH_ind16;
Instructions.push(is_STDH_in);
class IS_STAB_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x18A;
this.Mnemonic = "STAB";
this.LongName = "STORE Registers A and B";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_AB | CONTROL_RI;
}
}
is_STAB_in = new IS_STAB_ind16;
Instructions.push(is_STAB_in);
class IS_STAC_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x18B;
this.Mnemonic = "STAC";
this.LongName = "STORE Registers A and C";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_AC | CONTROL_RI;
}
}
is_STAC_in = new IS_STAC_ind16;
Instructions.push(is_STAC_in);
class IS_STAD_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x18C;
this.Mnemonic = "STAD";
this.LongName = "STORE Registers A and D";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_AD | CONTROL_RI;
}
}
is_STAD_in = new IS_STAD_ind16;
Instructions.push(is_STAD_in);
class IS_STBA_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x18D;
this.Mnemonic = "STBA";
this.LongName = "STORE Registers B and A";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_BA | CONTROL_RI;
}
}
is_STBA_in = new IS_STBA_ind16;
Instructions.push(is_STBA_in);
class IS_STBC_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x18E;
this.Mnemonic = "STBC";
this.LongName = "STORE Registers B and C";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_BC | CONTROL_RI;
}
}
is_STBC_in = new IS_STBC_ind16;
Instructions.push(is_STBC_in);
class IS_STBD_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x18F;
this.Mnemonic = "STBD";
this.LongName = "STORE Registers B and D";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_BD | CONTROL_RI;
}
}
is_STBD_in = new IS_STBD_ind16;
Instructions.push(is_STBD_in);
class IS_STCA_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x190;
this.Mnemonic = "STCA";
this.LongName = "STORE Registers C and A";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_CA | CONTROL_RI;
}
}
is_STCA_in = new IS_STCA_ind16;
Instructions.push(is_STCA_in);
class IS_STCB_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x191;
this.Mnemonic = "STCB";
this.LongName = "STORE Registers C and B";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_CB | CONTROL_RI;
}
}
is_STCB_in = new IS_STCB_ind16;
Instructions.push(is_STCB_in);
class IS_STCD_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x192;
this.Mnemonic = "STCD";
this.LongName = "STORE Registers C and D";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_CD | CONTROL_RI;
}
}
is_STCD_in = new IS_STCD_ind16;
Instructions.push(is_STCD_in);
class IS_STDA_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x193;
this.Mnemonic = "STDA";
this.LongName = "STORE Registers D and A";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_DA | CONTROL_RI;
}
}
is_STDA_in = new IS_STDA_ind16;
Instructions.push(is_STDA_in);
class IS_STDB_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x194;
this.Mnemonic = "STDB";
this.LongName = "STORE Registers D and B";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_DB | CONTROL_RI;
}
}
is_STDB_in = new IS_STDB_ind16;
Instructions.push(is_STDB_in);
class IS_STDC_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x195;
this.Mnemonic = "STDC";
this.LongName = "STORE Registers D and C";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "#", Bitwidth: 16});
this.Words = 2;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_PC | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_DC | CONTROL_RI;
}
}
is_STDC_in = new IS_STDC_ind16;
Instructions.push(is_STDC_in);
class IS_STAB_SPind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x196;
this.Mnemonic = "STAB";
this.LongName = "STORE Registers A and B";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "[SP]", Bitwidth: 16});
this.Words = 1;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_AB | CONTROL_RI;
}
}
is_STAB_spin = new IS_STAB_SPind16;
Instructions.push(is_STAB_spin);
class IS_STCD_SPind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x197;
this.Mnemonic = "STCD";
this.LongName = "STORE Registers C and D";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "[SP]", Bitwidth: 16});
this.Words = 1;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_CD | CONTROL_RI;
}
}
is_STCD_spin = new IS_STCD_SPind16;
Instructions.push(is_STCD_spin);
class IS_STAL_SPind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x198;
this.Mnemonic = "STAL";
this.LongName = "STORE Register A to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "[SP]", Bitwidth: 16});
this.Words = 1;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_AL | CONTROL_RI;
}
}
is_STAL_spin = new IS_STAL_SPind16;
Instructions.push(is_STAL_spin);
class IS_STAH_SPind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x199;
this.Mnemonic = "STAH";
this.LongName = "STORE Register A to HIGH Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "[SP]", Bitwidth: 16});
this.Words = 1;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_AH | CONTROL_RI;
}
}
is_STAH_spin = new IS_STAH_SPind16;
Instructions.push(is_STAH_spin);
class IS_STBL_SPind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x19A;
this.Mnemonic = "STBL";
this.LongName = "STORE Register B to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "[SP]", Bitwidth: 16});
this.Words = 1;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_BL | CONTROL_RI;
}
}
is_STBL_spin = new IS_STBL_SPind16;
Instructions.push(is_STBL_spin);
class IS_STBH_SPind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x19B;
this.Mnemonic = "STBH";
this.LongName = "STORE Register B to HIGH Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "[SP]", Bitwidth: 16});
this.Words = 1;
this.Cycles = 5;
this.Microcode[2] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_RO | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_BH | CONTROL_RI;
}
}
is_STBH_spin = new IS_STBH_SPind16;
Instructions.push(is_STBH_spin);
class IS_STSP_ind16 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x19E;
this.Mnemonic = "STSP";
this.LongName = "STORE Stack Pointer";
this.Aliases = new Array();
this.Type = InstructionTypes.Indirect16;
this.Operands = new Array({Operand: "[SP]", Bitwidth: 16});
this.Words = 1;
this.Cycles = 6;
this.Microcode[2] = CONTROL_SPC;
this.Microcode[3] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_RO | CONTROL_RRI | CONTROL_SPD | CONTROL_SPC;
this.Microcode[5] = CONTROL_OUT_SP | CONTROL_RI;
}
}
is_STSP_in = new IS_STSP_ind16;
Instructions.push(is_STSP_in);
class IS_STAB_sp extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x156;
this.Mnemonic = "STAB";
this.LongName = "STORE Register A and B";
this.Aliases = new Array();
this.Type = InstructionTypes.RegisterAbsolute;
this.Operands = new Array({Operand: "SP", Bitwidth: 16});
this.Words = 1;
this.Cycles = 6;
this.Microcode[2] = CONTROL_SPC;
this.Microcode[3] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_RO | CONTROL_RRI | CONTROL_SPD | CONTROL_SPC;
this.Microcode[5] = CONTROL_OUT_AB | CONTROL_RI;
}
}
is_STAB_sp = new IS_STAB_sp;
Instructions.push(is_STAB_sp);
class IS_PSTAL_sp_ind extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x198;
this.Mnemonic = "PSTAL";
this.LongName = "Page STORE Register A to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.RegisterIndirect;
this.Operands = new Array({Operand: "[SP]", Bitwidth: 16});
this.Words = 1;
this.Cycles = 6;
this.Microcode[2] = CONTROL_SPC;
this.Microcode[3] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[4] = CONTROL_OUT_RO | CONTROL_RRI | CONTROL_SPD | CONTROL_SPC;
this.Microcode[5] = CONTROL_OUT_AL | CONTROL_RI;
}
}
is_PSTAL_spin = new IS_PSTAL_sp_ind;
Instructions.push(is_PSTAL_spin);
class IS_STAL_sp_ind24 extends Microcode_Instruction {
constructor(props) {
super(props);
this.Bytecode = 0x1D8;
this.Mnemonic = "STAL";
this.LongName = "STORE Register A to LOW Byte";
this.Aliases = new Array();
this.Type = InstructionTypes.RegisterIndirect;
this.Operands = new Array({Operand: "[SP]", Bitwidth: 24});
this.Words = 1;
this.Cycles = 12;
this.Microcode[2] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[3] = CONTROL_OUT_HO | CONTROL_RI | CONTROL_SPC;
this.Microcode[4] = CONTROL_SPC;
this.Microcode[5] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[6] = CONTROL_OUT_RO | CONTROL_RHI | CONTROL_SPD | CONTROL_SPC;
this.Microcode[7] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[8] = CONTROL_OUT_RO | CONTROL_RRI | CONTROL_SPD | CONTROL_SPC;
this.Microcode[9] = CONTROL_OUT_AL | CONTROL_RI;
this.Microcode[10] = CONTROL_OUT_SP | CONTROL_RRI;
this.Microcode[11] = CONTROL_OUT_RO | CONTROL_RHI;
//this.Microcode[12] = 0;
}
}
is_STAL_spin = new IS_STAL_sp_ind24;
Instructions.push(is_STAL_spin);