Ejemplo n.º 1
0
        public ProgcomUnit(ISignalProcessor s)
        {
            mSignalProcessor = s;
            mCPU             = CreateCPU();
            mAssembler       = CreateAssembler();

            IO = new ProgcomIO(this, 32, null);
        }
Ejemplo n.º 2
0
        public ProgcomUnit(ISignalProcessor s)
        {
            mSignalProcessor = s;
            mCPU = CreateCPU();
            mAssembler = CreateAssembler();

            IO = new ProgcomIO(this, 32, null);
        }
Ejemplo n.º 3
0
        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);
        }