| | |
| Lavr wrote: По электрической схеме у меня, наконец, всё срослось! И даже косвенная адресация получилась, на мой взгляд, нескольно необычно, но довольно просто и эффективно. Я Вам скажу честно, когда я наконец понял, что достиг тех схемных решений, над которыми ломал тут голову, я вдруг ощутил - что тошнит меня уже от этой штуки. И я дал себе от неё отдых - позволив себе заняться чем-то другим... | |
| | |
Наткнулся я в своём компьютере на эти все материалы, посмотрел, прочитал и понял, что уже не тошнит, а даже интересно!
И собственный текст читается как чей-то посторонний, а значит к результатам можно теперь относиться критически...
Напомню, чем всё закончилось на предыдущем этапе: я пришел к выводу, что при той же сложности схемы, 8-битный
процессор позволяет сделать схему более эффективной и простой.
Решение, которое теперь положено в основу, это некоторая смесь из
EDUC-8 и микро-ЭВМ типа
MCS-48 (
1816ВЕ48).
От
EDUC-8 взята 8-битность и (если хотите и от
PDP-8) та мысль, что никаких лишних регистров общего назначения
нам не нужно, раз уж у нас есть память. У
MOS 6502, кстати, эта мысль также сквозит.
А от микро-ЭВМ типа
MCS-48 (
1816ВЕ48) взята мысль уложить
КОП+АДРЕС в 2 байта, а не в одно слово, как я пытался ранее.
Аппаратно я достиг косвенной адресации даже проще чем в
EDUC-8 - работа над ним мне очень помогла...
А проще вышло, поскольку косвенная адресация реализована не истинно, как в
EDUC-8 и
PDP-8 - т.е.
"
взять адрес из ячейки и записать его в программный счетчик", а несколько более простым схемотехнически
способом, после которого я и понял, что достиг чего хотел, но без сильного усложнения схемы.
На данный момент у меня получилась следующая система команд, которая реализуется аппаратно весьма
просто всем тем аппаратным обеспечением, которое уже было здесь ранее отработано практически.
Как видно - с адресом работает группа команд, для которых старший ниббл первого байта - это
КОП (код операции),
а младший ниббл + следующий байт - это адрес 12 бит.
Когда старший ниббл достигает значений
E и
F - он становится префиксом.
Таким образом получаются два набора префиксных команд: с префиксом
E - двухбайтовые, и тут я даже растерялся
от обилия возможностей - сиреневым цветом выделены команды, которые пока не определены...
Группа команд с префиксом
F - однобайтовые, и тут все вроде уложилось по минимуму.
Флаги для анализа: "
нуль", "
перенос" и "
знак". Аппаратно и "
четность" результата анализировать можно,
но тут как раз четность и не влезла в набор команд.
NEG = CMA + INR A - вызывает у меня сомнение в необходимости, но пока оставил...
Если кому-либо эта тема спартански-нищебродского аппаратно, но достаточно удобного для работы
с ним проца всё ещё интересна, готов выслушать все советы, пожелания и критические замечания.
PS. При "утряске" в железо система команд претерпела ряд изменений.
От некоторых команд пришлось отказаться для упрощения аппаратной
реализации.Регистров всего два:
А - аккумулятор,
В - буфер считанного из памяти байта.
Они примыкают к
АЛУ, но
В выполняет еще и ряд функции манипуляции
с адресами.
Р - флаг четности числа, то есть, самый младший бит.
От СМР пришлось также отказаться с целью упрощения. В
PDP-8 и
EDUC-8 это
делают обычным вычитанием.
Цвета битов кода команды обозначают примерную дешифрацию групп и самих команд.