dmd_core/src/instr.rs

192 lines
5.2 KiB
Rust

//
// Single-byte instructions
//
pub const HALT: u16 = 0x00;
pub const SPOPRD: u16 = 0x02;
pub const SPOPD2: u16 = 0x03;
pub const MOVAW: u16 = 0x04;
pub const SPOPRT: u16 = 0x06;
pub const SPOPT2: u16 = 0x07;
pub const RET: u16 = 0x08;
pub const MOVTRW: u16 = 0x0C;
pub const SAVE: u16 = 0x10;
pub const SPOPWD: u16 = 0x13;
pub const EXTOP: u16 = 0x14;
pub const SPOPWT: u16 = 0x17;
pub const RESTORE: u16 = 0x18;
pub const SWAPWI: u16 = 0x1C;
pub const SWAPHI: u16 = 0x1E;
pub const SWAPBI: u16 = 0x1F;
pub const POPW: u16 = 0x20;
pub const SPOPRS: u16 = 0x22;
pub const SPOPS2: u16 = 0x23;
pub const JMP: u16 = 0x24;
pub const CFLUSH: u16 = 0x27;
pub const TSTW: u16 = 0x28;
pub const TSTH: u16 = 0x2A;
pub const TSTB: u16 = 0x2B;
pub const CALL: u16 = 0x2C;
pub const BPT: u16 = 0x2E;
pub const WAIT: u16 = 0x2F;
pub const EMB: u16 = 0x30;
pub const SPOP: u16 = 0x32;
pub const SPOPWS: u16 = 0x33;
pub const JSB: u16 = 0x34;
pub const BSBH: u16 = 0x36;
pub const BSBB: u16 = 0x37;
pub const BITW: u16 = 0x38;
pub const BITH: u16 = 0x3A;
pub const BITB: u16 = 0x3B;
pub const CMPW: u16 = 0x3C;
pub const CMPH: u16 = 0x3E;
pub const CMPB: u16 = 0x3F;
pub const RGEQ: u16 = 0x40;
pub const BGEH: u16 = 0x42;
pub const BGEB: u16 = 0x43;
pub const RGTR: u16 = 0x44;
pub const BGH: u16 = 0x46;
pub const BGB: u16 = 0x47;
pub const RLSS: u16 = 0x48;
pub const BLH: u16 = 0x4A;
pub const BLB: u16 = 0x4B;
pub const RLEQ: u16 = 0x4C;
pub const BLEH: u16 = 0x4E;
pub const BLEB: u16 = 0x4F;
pub const RGEQU: u16 = 0x50;
pub const BGEUH: u16 = 0x52;
pub const BGEUB: u16 = 0x53;
pub const RGTRU: u16 = 0x54;
pub const BGUH: u16 = 0x56;
pub const BGUB: u16 = 0x57;
pub const BLSSU: u16 = 0x58;
pub const BLUH: u16 = 0x5A;
pub const BLUB: u16 = 0x5B;
pub const RLEQU: u16 = 0x5C;
pub const BLEUH: u16 = 0x5E;
pub const BLEUB: u16 = 0x5F;
pub const RVC: u16 = 0x60;
pub const BVCH: u16 = 0x62;
pub const BVCB: u16 = 0x63;
pub const RNEQU: u16 = 0x64;
pub const BNEH_D: u16 = 0x66;
pub const BNEB_D: u16 = 0x67;
pub const RVS: u16 = 0x68;
pub const BVSH: u16 = 0x6A;
pub const BVSB: u16 = 0x6B;
pub const REQLU: u16 = 0x6C;
pub const BEH_D: u16 = 0x6E;
pub const BEB_D: u16 = 0x6F;
pub const NOP: u16 = 0x70;
pub const NOP3: u16 = 0x72;
pub const NOP2: u16 = 0x73;
pub const BNEQ: u16 = 0x74;
pub const RNEQ: u16 = 0x74;
pub const BNEH: u16 = 0x76;
pub const BNEB: u16 = 0x77;
pub const RSB: u16 = 0x78;
pub const BRH: u16 = 0x7A;
pub const BRB: u16 = 0x7B;
pub const REQL: u16 = 0x7C;
pub const BEH: u16 = 0x7E;
pub const BEB: u16 = 0x7F;
pub const CLRW: u16 = 0x80;
pub const CLRH: u16 = 0x82;
pub const CLRB: u16 = 0x83;
pub const MOVW: u16 = 0x84;
pub const MOVH: u16 = 0x86;
pub const MOVB: u16 = 0x87;
pub const MCOMW: u16 = 0x88;
pub const MCOMH: u16 = 0x8A;
pub const MCOMB: u16 = 0x8B;
pub const MNEGW: u16 = 0x8C;
pub const MNEGH: u16 = 0x8E;
pub const MNEGB: u16 = 0x8F;
pub const INCW: u16 = 0x90;
pub const INCH: u16 = 0x92;
pub const INCB: u16 = 0x93;
pub const DECW: u16 = 0x94;
pub const DECH: u16 = 0x96;
pub const DECB: u16 = 0x97;
pub const ADDW2: u16 = 0x9C;
pub const ADDH2: u16 = 0x9E;
pub const ADDB2: u16 = 0x9F;
pub const PUSHW: u16 = 0xA0;
pub const MODW2: u16 = 0xA4;
pub const MODH2: u16 = 0xA6;
pub const MODB2: u16 = 0xA7;
pub const MULW2: u16 = 0xA8;
pub const MULH2: u16 = 0xAA;
pub const MULB2: u16 = 0xAB;
pub const DIVW2: u16 = 0xAC;
pub const DIVH2: u16 = 0xAE;
pub const DIVB2: u16 = 0xAF;
pub const ORW2: u16 = 0xB0;
pub const ORH2: u16 = 0xB2;
pub const ORB2: u16 = 0xB3;
pub const XORW2: u16 = 0xB4;
pub const XORH2: u16 = 0xB6;
pub const XORB2: u16 = 0xB7;
pub const ANDW2: u16 = 0xB8;
pub const ANDH2: u16 = 0xBA;
pub const ANDB2: u16 = 0xBB;
pub const SUBW2: u16 = 0xBC;
pub const SUBH2: u16 = 0xBE;
pub const SUBB2: u16 = 0xBF;
pub const ALSW3: u16 = 0xC0;
pub const ARSW3: u16 = 0xC4;
pub const ARSH3: u16 = 0xC6;
pub const ARSB3: u16 = 0xC7;
pub const INSFW: u16 = 0xC8;
pub const INSFH: u16 = 0xCA;
pub const INSFB: u16 = 0xCB;
pub const EXTFW: u16 = 0xCC;
pub const EXTFH: u16 = 0xCE;
pub const EXTFB: u16 = 0xCF;
pub const LLSW3: u16 = 0xD0;
pub const LLSH3: u16 = 0xD2;
pub const LLSB3: u16 = 0xD3;
pub const LRSW3: u16 = 0xD4;
pub const ROTW: u16 = 0xD8;
pub const ADDW3: u16 = 0xDC;
pub const ADDH3: u16 = 0xDE;
pub const ADDB3: u16 = 0xDF;
pub const PUSHAW: u16 = 0xE0;
pub const MODW3: u16 = 0xE4;
pub const MODH3: u16 = 0xE6;
pub const MODB3: u16 = 0xE7;
pub const MULW3: u16 = 0xE8;
pub const MULH3: u16 = 0xEA;
pub const MULB3: u16 = 0xEB;
pub const DIVW3: u16 = 0xEC;
pub const DIVH3: u16 = 0xEE;
pub const DIVB3: u16 = 0xEF;
pub const ORW3: u16 = 0xF0;
pub const ORH3: u16 = 0xF2;
pub const ORB3: u16 = 0xF3;
pub const XORW3: u16 = 0xF4;
pub const XORH3: u16 = 0xF6;
pub const XORB3: u16 = 0xF7;
pub const ANDW3: u16 = 0xF8;
pub const ANDH3: u16 = 0xFA;
pub const ANDB3: u16 = 0xFB;
pub const SUBW3: u16 = 0xFC;
pub const SUBH3: u16 = 0xFE;
pub const SUBB3: u16 = 0xFF;
//
// Multi-byte instructions
//
pub const MVERNO: u16 = 0x3009;
pub const ENBVJMP: u16 = 0x300D;
pub const DISVJMP: u16 = 0x3013;
pub const MOVBLW: u16 = 0x3019;
pub const STREND: u16 = 0x301F;
pub const INTACK: u16 = 0x302F;
pub const STRCPY: u16 = 0x3035;
pub const RETG: u16 = 0x3045;
pub const GATE: u16 = 0x3061;
pub const CALLPS: u16 = 0x30AC;
pub const RETPS: u16 = 0x30C8;