§ Моя новая попытка

Мне нравится делать эмуляторы. Иногда я делаю их на С или С++, иногда на Javascript, и даже, в очень редких случаях — даже на PHP. А еще порой, бывает, использую и Верилог для создания процессоров. Список моих созданных процессоров очень скромный, но он есть. Это Z80, 8086, 6502 и AVR. Все эти процессоры были сделаны с нуля и записаны на верилоге. Мне просто нравится заниматься этим, и я просто пишу очередной процессор "спидраном", почти с закрытыми глазами, как это делают игровые видеоблогеры.

§ О процессоре 8086

Как и всегда, все дело в том, что увидел впервые. Для меня первым компьютером был именно компьютер на базе 80286/386, и потому именно его мне и хочется повторить. В частности, именно до 286. Вопрос, смогу ли я это сделать? Думаю, нет, но попытаться все-таки стоит.
Процессор 8086 не так прост, он содержит большое количество инструкции и методов адресации. Он работал на скорости от 4 до 16 Мгц, а я его буду запускать на своей любимой частоте в ПЛИС, 25 мгц, частоте стандартного видеоадаптера VGA, 640 x 480. Процессор 286 имеет защищенный режим и возможность адресовать память до 24 бит, то есть, 16 мегабайт памяти. Но это на самом деле, заблуждение, что адресовать столько можно было. Дело в том, что указать сегмент можно было реально в любой точке памяти в пределах 16 Мб, но так как указатели 16-битные, то доступное "окно" составляет всего лишь 128Кб (например если делать bx+si). Поэтому, в реальности, защищенный режим 286 был не особо востребован и все пользовались обычным RealMode, либо же VM86, где можно было легко адресовать 1 Мб без проблем с медленной загрузкой новых селекторов.
Так же процессор 8086 имел довольно медленную скорость исполнения самих инструкции, долго декодировал, долго обращался к памяти, тратил много тактов, можно сказать, просто так, на ожидание памяти. В моем случае, я постараюсь сделать чтобы он, по возможности, работал побыстрее.

§ Моя цель

Я хочу создать рабочий процессор, который бы поддерживал инструкции 8086 и желательно, 80186 и даже 80286. Не думаю, что достигну этой цели до конца. У процессора 8086 инструкции 60h-6Fh повторяются с инструкциями 70h-7Fh, а вот начиная с 186, они там уже другие. Зная это, я буду ориентироваться сразу на поддержку инструкции 60h-6Fh так, как будто это более старшая модель.
Когда процессор будет создан, написан и отлажен, мне бы хотелось написать для него несколько простых программ и очень, до невозможности простую ОС, которая будет представлять из себя лишь только командную строку с возможностью запускать приложения, читая из из диска с FAT16. ОС должна быть настолько элементарна, чтобы занимала как можно меньше кода и смогла бы поддерживать файловую систему, клавиатуру и запуск приложений. И всё. Это должно работать на созданном мной процессоре.

§ Задача

Хотелось бы написать так, чтобы всем было понятно, чтобы не только тот, кто знает верилог, смог бы разобраться, но и даже тот, кто его не изучал. Часть схем я буду делать сначала в логисиме. Например, АЛУ или некоторые блоки управления, регистры, и прочее, по возможности, насколько у меня получится, объясняя каждую деталь максимально подробно.
Что из этого получится, я не знаю, но надеюсь, что что-то да получится. Будем пробовать!