Exemplo n.º 1
0
        public CrystalTimer(Quartz32768HzCrystal master, Scheduler scheduler, int timerNumber)
        {
            switch (timerNumber)
            {
            case 1:
                InterruptId = Calculator.InterruptId.CrystalTimer1;
                break;

            case 2:
                InterruptId = Calculator.InterruptId.CrystalTimer2;
                break;

            case 3:
                InterruptId = Calculator.InterruptId.CrystalTimer3;
                break;

            default:
                throw new ArgumentOutOfRangeException("timerNumber must be between 1 and 3");
            }
            TimerNumber = timerNumber;
            MasterTimer = master;
            //Oscillation = new EventHandler(DoTick);
            Scheduler = scheduler;

            NextWtIncrement         = new Scheduler.WallTimeEvent();
            NextWtIncrement.Tag     = "Crystal timer " + timerNumber.ToString() + " wall-time tick";
            NextWtIncrement.Handler = new EventHandler <Scheduler.WallTimeEvent>(DoTickWt);
            NextScIncrement         = new Scheduler.SystemClockEvent();
            NextScIncrement.Tag     = "Crystal timer " + timerNumber.ToString() + " clock-time tick";
            NextScIncrement.Handler = new EventHandler <Scheduler.SystemClockEvent>(DoTickSc);
            //Scheduler.EnqueueRelativeEvent(NextWtIncrement, 1.0 / 32768);
        }
Exemplo n.º 2
0
 public Ti84PlusCSe()
 {
     Flash              = new Flash4096K();
     Ram                = new Ram128K();
     MemoryMapper       = new MemoryMapperSE();
     MemoryMapper.Cpu   = Cpu;
     MemoryMapper.Flash = Flash;
     MemoryMapper.Ram   = Ram;
     (Mapper).Master    = this;
     Cpu.MemoryRead     = new Z80Core.Z80Cpu.BusRead(MemoryMapper.BusRead);
     Cpu.MemoryWrite    = new Z80Core.Z80Cpu.BusWrite(MemoryMapper.BusWrite);
     Cpu.IoPortRead     = new Z80Core.Z80Cpu.BusRead(ReadPort);
     Cpu.IoPortWrite    = new Z80Core.Z80Cpu.BusWrite(WritePort);
     Crystal            = new Quartz32768HzCrystal(this);
     DBus               = new DBusDummy();
     CrystalTimer1      = new CrystalTimer(Crystal, Scheduler, 1);
     CrystalTimer2      = new CrystalTimer(Crystal, Scheduler, 2);
     CrystalTimer3      = new CrystalTimer(Crystal, Scheduler, 3);
     Apd                = new ApdTimerSe(Scheduler, InterruptId.ApdTimer1, this, 1.0 / 512);
     PApd               = new ApdTimerSe(Scheduler, InterruptId.ApdTimer2, this, 1.0 / 1024);
 }