PROCESSEUR d'Émulation et de verrouillage à une vitesse d'horloge

Si vous aviez lu mes autres question, vous savez que j'ai passé ce week-end, en mettant ensemble un PROCESSEUR 6502 émulateur comme un exercice de programmation.

Le CPU émulateur est presque terminé, et semble être assez précis de mes essais limités, mais il est en cours d'exécution incroyablement rapide, et j'ai envie d'étrangler jusqu'à la réelle vitesse d'horloge de la machine.

Mon test du courant de boucle est: est-ce

    //Just loop infinitely.
    while (1 == 1)
    {                
        CPU.ClockCyclesBeforeNext--;

        if (CPU.ClockCyclesBeforeNext <= 0)
        {
            //Find out how many clock cycles this instruction will take
            CPU.ClockCyclesBeforeNext = CPU.OpcodeMapper.Map[CPU.Memory[CPU.PC]].CpuCycles;

            //Run the instruction
            CPU.ExecuteInstruction(CPU.Memory[CPU.PC]);

            //Debugging Info
            CPU.DumpDebug();
            Console.WriteLine(CPU.OpcodeMapper.Map[CPU.Memory[CPU.PC]].ArgumentLength);

            //Move to next instruction
            CPU.PC += 1 + CPU.OpcodeMapper.Map[CPU.Memory[CPU.PC]].ArgumentLength;                                        
        }
    }

Comme vous pouvez le dire, chaque opcode prend une quantité spécifique de temps, donc je n'ai pas exécuter l'instruction suivante jusqu'à ce que je compte en bas de Cycle du PROCESSEUR de l'horloge. Cela fournit un bon timing entre les opcodes, c'est juste que le tout fonctionne de manière rapide.

Ciblée, à la vitesse du PROCESSEUR est à 1,79 mhz, cependant j'aimerais quelle que soit la solution de l'horloge, question de garder la vitesse à 1.79 mhz, même comme je l'ai ajouter à la complexité, donc je n'ai pas à le régler jusqu'.

Des idées?

InformationsquelleAutor FlySwat | 2008-09-21