Инструкция
1
Выберите язык программирования. Рекомендуемая и, наверное, единственная альтернатива - Си и Ассемблер. В Си можно сделать код, который будет переноситься на другие платформы. Он относительно прост для понимания и легок в отладке, но гораздо медленнее, чем другие. Ассемблер же отличается своей высокой скоростью работы, в нем используются процессорные регистры, что способствует приближению программы к рекомпилирующей. Однако в нем весьма трудно отслеживать и исправлять коды. Важно хорошо знать выбранный язык и хорошо оптимизировать код по скорости.
2
Присвойте начальное значение циклическому и программному счетчику. Циклический counter отсчитывает количество тактов, через которое происходит прерывание, а программный PC показывает область памяти, в которой лежит следующая по очереди опкодовая команда.
3
После получения опкода вычтите из циклического счетчика количество тактов, которое занимает процесс выполнения опкода. Обратите ваше внимание, что некоторые команды различаются по количеству тактов в зависимости от аргументов. Для таких команд измените счетчик в коде выполнения позднее.
4
После успешного выполнения опкода проверьте надобность вызывания прерываний. В этот момент выполните задачи, которые необходимо срочно синхронизировать по времени.
5
Проверьте каждый проход цикла на надобность завершения его работы. Помните, что программа должна быть модульной, поскольку большинство компьютеров состоит из модулей, а типичный эмулятор по возможности должен полностью повторять оригинальную систему. Это обеспечит более быструю и простую отладку программы, и вы сможете использовать одинаковые модули для различных эмуляторов, потому как многие компьютеры созданы на базе одинаковых моделей процессоров или видеопроцессоров.