Exemple #1
0
        public int ProcessCPUCycle()
        {
            int ticks = CPU.Process();

            SID.Process(ticks);
            CIA1.Process(ticks);
            CIA2.Process(ticks);

            Datasette.Process(ticks);

            /*
             * //  process floppy
             * Floppy.Process(ticks);
             *
             * //  build signals on IEC-Bus
             * IEC.Process(this);
             */

            // CIA2.SetFlagPIN(...)

            //
            //  inter-chip-handlings
            //

            //  datasette -> CPU
            CIA1.SetFlagPIN(Datasette.Get_D4_READ());

            //  check for IRQ's
            bool IRQ_CIA = CIA1.HasIRQ();
            bool IRQ_VIC = VIC.HasIRQ();

            CPU.IRQ = IRQ_CIA || IRQ_VIC;

            //  check for NMI's
            CPU.SetNMI(CIA2.HasIRQ());

            return(ticks);
        }