public static int GetImmediateLength(string opcode) { if (ImmediateSizeTable.ContainsKey(opcode)) { return(ImmediateSizeTable[opcode]); } throw new Exception("opcode " + opcode + " not found in immediate size table"); }
static void SetImmediateSizes() { try { ImmediateSizeTable.Add("ADD A,IMMEDIATE", 1); ImmediateSizeTable.Add("AND IMMEDIATE", 1); ImmediateSizeTable.Add("BIT IMMEDIATE,IX_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("BIT IMMEDIATE,IY_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("CALL IMMEDIATE", 2); ImmediateSizeTable.Add("CALLZ IMMEDIATE", 2); ImmediateSizeTable.Add("CALLNZ IMMEDIATE", 2); ImmediateSizeTable.Add("CP IMMEDIATE", 1); ImmediateSizeTable.Add("CP IX_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("CP IY_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("DJNZ IMMEDIATE", 1); ImmediateSizeTable.Add("JP IMMEDIATE", 2); ImmediateSizeTable.Add("JPZ IMMEDIATE", 2); ImmediateSizeTable.Add("JPNC IMMEDIATE", 2); ImmediateSizeTable.Add("JPNZ IMMEDIATE", 2); ImmediateSizeTable.Add("JPP IMMEDIATE", 2); ImmediateSizeTable.Add("JPM IMMEDIATE", 2); ImmediateSizeTable.Add("JPC IMMEDIATE", 2); ImmediateSizeTable.Add("JR IMMEDIATE", 1); ImmediateSizeTable.Add("JRZ IMMEDIATE", 1); ImmediateSizeTable.Add("JRC IMMEDIATE", 1); ImmediateSizeTable.Add("JRNC IMMEDIATE", 1); ImmediateSizeTable.Add("JRNZ IMMEDIATE", 1); ImmediateSizeTable.Add("LD A,IMMEDIATE", 1); ImmediateSizeTable.Add("LD A,IX_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("LD A,IY_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("LD B,IMMEDIATE", 1); ImmediateSizeTable.Add("LD B,IX_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("LD B,IY_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("LD BC,IMMEDIATE", 2); ImmediateSizeTable.Add("LD C,IMMEDIATE", 1); ImmediateSizeTable.Add("LD D,IMMEDIATE", 1); ImmediateSizeTable.Add("LD E,IMMEDIATE", 1); ImmediateSizeTable.Add("LD E,IX_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("LD E,IY_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("LD H,IMMEDIATE", 1); ImmediateSizeTable.Add("LD H,IX_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("LD L,IX_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("LD L,IMMEDIATE", 1); ImmediateSizeTable.Add("LD DE,IMMEDIATE", 2); ImmediateSizeTable.Add("LD HL,IMMEDIATE", 2); ImmediateSizeTable.Add("LD HL_INDEXED,IMMEDIATE", 1); ImmediateSizeTable.Add("LD IX,IMMEDIATE", 2); ImmediateSizeTable.Add("LD IY,IMMEDIATE", 2); ImmediateSizeTable.Add("LD IX,MEMORY", 2); ImmediateSizeTable.Add("LD IY,MEMORY", 2); ImmediateSizeTable.Add("LD IX_INDEXED_PLUS_OFFSET,A", 1); ImmediateSizeTable.Add("LD IX_INDEXED_PLUS_OFFSET,B", 1); ImmediateSizeTable.Add("LD IX_INDEXED_PLUS_OFFSET,IMMEDIATE", 1); ImmediateSizeTable.Add("LD IY_INDEXED_PLUS_OFFSET,A", 1); ImmediateSizeTable.Add("LD IY_INDEXED_PLUS_OFFSET,IMMEDIATE", 1); ImmediateSizeTable.Add("LD DE,MEMORY", 2); ImmediateSizeTable.Add("LD SP,IMMEDIATE", 2); ImmediateSizeTable.Add("RES IMMEDIATE,IX_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("SET IMMEDIATE,IX_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("SET IMMEDIATE,IY_INDEXED_PLUS_OFFSET", 1); ImmediateSizeTable.Add("SUB IMMEDIATE", 1); } catch (Exception ex) { throw new Exception("Exception trying to set immediate lengths.", ex); } }