public ProgcomUnit(ISignalProcessor s) { mSignalProcessor = s; mCPU = CreateCPU(); mAssembler = CreateAssembler(); IO = new ProgcomIO(this, 32, null); }
public ProgcomUnit(ISignalProcessor s) { mSignalProcessor = s; mCPU = CreateCPU(); mAssembler = CreateAssembler(); IO = new ProgcomIO(this, 32, null); }
private IProgcomAssembler CreateAssembler() { IProgcomAssembler assembler = mCPU.GetCompatibleAssembler(); assembler.bindGlobalCall("GLOBAL_MAINTHROTTLE", 0); assembler.bindGlobalCall("GLOBAL_YAW", 1); assembler.bindGlobalCall("GLOBAL_PITCH", 2); assembler.bindGlobalCall("GLOBAL_ROLL", 3); assembler.bindGlobalCall("GLOBAL_SURFACE_EAST", 4); assembler.bindGlobalCall("GLOBAL_SURFACE_UP", 7); assembler.bindGlobalCall("GLOBAL_SURFACE_NORTH", 10); assembler.bindGlobalCall("GLOBAL_VESSEL_X", 13); assembler.bindGlobalCall("GLOBAL_VESSEL_Y", 16); assembler.bindGlobalCall("GLOBAL_VESSEL_HEADING", 16); assembler.bindGlobalCall("GLOBAL_VESSEL_Z", 19); assembler.bindGlobalCall("GLOBAL_ORBITSPEED", 22); assembler.bindGlobalCall("GLOBAL_SURFACESPEED", 25); assembler.bindGlobalCall("GLOBAL_ANGULARVELOCITY", 28); assembler.bindGlobalCall("GLOBAL_ALTITUDE", 31); assembler.bindGlobalCall("GLOBAL_NUMPAD_OUT", 32); assembler.bindGlobalCall("GLOBAL_NUMPAD_MSG", 36); assembler.bindGlobalCall("GLOBAL_NUMPAD_IN", 37); assembler.bindGlobalCall("GLOBAL_NUMPAD_NEWIN", 38); assembler.bindGlobalCall("GLOBAL_NUMPAD_FORMAT", 39); assembler.bindGlobalCall("GLOBAL_TIMER", 40); assembler.bindGlobalCall("GLOBAL_VECTORACCURACY", VEC_ACC_OFFSET); assembler.bindGlobalCall("GLOBAL_SPEEDACCURACY", SPD_ACC_OFFSET); assembler.bindGlobalCall("GLOBAL_IENABLE", 44); assembler.bindGlobalCall("GLOBAL_CLOCK", 45); assembler.bindGlobalCall("GLOBAL_IADRESS", 46); assembler.bindGlobalCall("GLOBAL_TIMER_MAX", 47); assembler.bindGlobalCall("GLOBAL_PILOT_THROTTLE", 48); assembler.bindGlobalCall("GLOBAL_PILOT_YAW", 49); assembler.bindGlobalCall("GLOBAL_PILOT_PITCH", 50); assembler.bindGlobalCall("GLOBAL_PILOT_ROLL", 51); assembler.bindGlobalCall("GLOBAL_PILOT_RCS_RIGHT", 52); assembler.bindGlobalCall("GLOBAL_PILOT_RCS_UP", 53); assembler.bindGlobalCall("GLOBAL_PILOT_RCS_FORWARD", 54); assembler.bindGlobalCall("GLOBAL_RCS_RIGHT", 52); assembler.bindGlobalCall("GLOBAL_RCS_UP", 53); assembler.bindGlobalCall("GLOBAL_RCS_FORWARD", 54); assembler.bindGlobalCall("GLOBAL_ACTIONGROUP", 55); assembler.bindGlobalCall("GLOBAL_GSB0", 64); assembler.bindGlobalCall("GLOBAL_GSB1", 68); assembler.bindGlobalCall("GLOBAL_GSB2", 72); assembler.bindGlobalCall("GLOBAL_GSB3", 76); assembler.bindGlobalCall("GLOBAL_GSB4", 80); assembler.bindGlobalCall("GLOBAL_GSB5", 84); assembler.bindGlobalCall("GLOBAL_GSB6", 88); assembler.bindGlobalCall("GLOBAL_GSB7", 92); assembler.bindGlobalCall("GLOBAL_SCREEN_MODE", MONITOR_MODE); assembler.bindGlobalCall("GLOBAL_SCREEN", MONITOR_OFFSET); assembler.bindGlobalCall("GLOBAL_SCREEN_COLOR", CLR_OFFSET); assembler.bindGlobalCall("GLOBAL_SCREEN_FONT", FONT_OFFSET); assembler.bindGlobalCall("CPU_CLOCKRATE", mCPU.ClockRate); assembler.bindGlobalCall("CPU_RAM", mCPU.Memory.Length); assembler.bindGlobalCall("CPU_MAXADDRESS", mCPU.Memory.Length - 1); return(assembler); }