Example #1
0
        public static Register[] instantiate()
        {
            Register[] retval = new Register[61];

            for (char c = 'A'; c <= 'Z'; c++)
            {
                if (c == 'X' || c == 'Y')
                    continue;
                retval[c - 'A'] = new CustomRegister(c);
            }
            retval[23] = new XRegister();
            retval[24] = new YRegister();

            retval[26] = new AimRegister();
            retval[27] = new BottomRegister();
            retval[28] = new ChannelRegister();
            retval[29] = new ChrononRegister();
            retval[30] = new CollisionRegister();
            retval[31] = new DamageRegister();
            retval[32] = new DopplerRegister();
            retval[33] = new EnergyRegister();
            retval[34] = new FriendRegister();
            retval[35] = new HistoryRegister();
            retval[36] = new IDRegister();
            retval[37] = new KillsRegister();
            retval[38] = new LeftRegister();
            retval[39] = new LookRegister();
            retval[40] = new MoveXRegister();
            retval[41] = new MoveYRegister();
            retval[42] = new ProbeRegister();
            retval[43] = new RadarRegister();
            retval[44] = new RandomRegister();
            retval[45] = new RangeRegister();
            retval[46] = new RightRegister();
            retval[47] = new RobotsRegister();
            retval[48] = new ScanRegister();
            retval[49] = new ShieldRegister();
            retval[50] = new SignalRegister();
            retval[51] = new SpeedXRegister();
            retval[52] = new SpeedYRegister();
            retval[53] = new TeamMatesRegister();
            retval[54] = new TopRegister();
            retval[55] = new WallRegister();

            retval[56] = new BulletRegister();
            retval[57] = new FireRegister();
            retval[58] = new MissileRegister();
            retval[59] = new HellboreRegister();
            retval[60] = new StunnerRegister();

            return retval;
        }
Example #2
0
 public void addRegister(Register register)
 {
     register.robot = this;
     interp.addRegister(register);
 }
Example #3
0
 public void addRegister(Register register)
 {
     foreach (String name in register.names)
         registers.Add(name, register);
 }
Example #4
0
 public void addRegister(Register register)
 {
     registerMap.Add(register.code, register);
     registerList.Add(register);
     if (register.order != -1)
     {
         if (register.order < 1000)
             interruptList.Add(register.order, register);
         else
             lateInterruptList.Add(register.order, register);
     }
 }
Example #5
0
        private void fireInterrupt(Register reg)
        {
            // The robot should clean up with RTI (or INTON).
            // These instructions will cause the next pending interrupt to dequeue
            interruptsEnabled = false;

            try
            {
                stack_.Push(pc);
            }
            catch (StackOverflowException e)
            {
                throw new StackOverflowException("Interrupt caused stack overflow", e);
            }

            pc = reg.interrupt;
        }