ZeroNet Blogs

Static ZeroNet blogs mirror

Как только мы обзавелись калькуляторами МК-85 (вот, тут у меня тема на форуме), сразу захотели влезть в его машинные потроха, чтобы вылезти за пределы ограничений Бейсика.

У меня тогда очень рука была набита всякой ЕГГОГ-ологией на МК-61, так что я через (вероятно) несколько месяцев случайно наткнулся на уязвимость в работе оператора INPUT и смог забраться в память. И даже вытащить почти всю прошивку в HEX-виде.

Дальше стояла задача расколоть систему команд процессора.


Тут нужно отметить, что во времена СССР почти вся специальная вычислительная техника имела собственные процессоры со своей системой команд. А часто и совершенно невообразимой архитектурой. Так что я был готов пойти по стопам Шампольона и попытаться расколоть систему команд неизвестного мне процессора по готовому коду в ПЗУ.

Долго ли, коротко ли… не помню, сколько я с ним провозился. Вычислил переходы, вызовы подпрограмм, ещё что-то. И понял, что объём работы, на самом деле огромный. Так что даже особо и не напрягался, тем более, что у моего МК-85 и без того задач было очень много.

Задачей анализа системы команд процессора занимался и мой товарищ, GAW. Но он отнёсся к вопросу как-то прохладнее и мы работали каждый сам по себе. И вот однажды, он появляется (кажется, это было после каких-то очередных каникул или праздников и он уезжал на них домой в Тверь) и огорошивает меня тем, что знает систему команд процессора МК-85 o_O Он пошёл другим путём. Простым и очевидным, с которого меня сбил зоопарк советских микропроцессоров. Он просто пересмотрел все известные ему системы команд. Начал с x86, кажется, а со второй попытки, опаньки, внезапно убедился, что МК-85 работает на архитектуре DEC :) Самое смешное, что я тогда систему команд DEC знал наизусть. Но, как и все люди, в восьмеричном виде. А дампы ПЗУ МК-85 анализировал в шестнадцатеричном :) Стоило бы мне хоть один кусочек кода расписать в восьмеричном виде, как система команд была бы мгновенно опознана.

Но всё хорошо, что хорошо кончается :) А вот дальше GAW совершил настоящий подвиг, который меня восхищает до сих пор. Он вручную дизассемблировал 16 кбайт ПЗУ МК-85 и записал это дело в тетрадку. Ручкой. В ТЕТРАДКУ! Это офигенный объём работы :) Мои представления о человеческих возможностях тогда были основательно пересмотрены. Я бы не осилил, наверное. Когда-то я вручную дизассемблировал 2 кбайта ПЗУ «Радио 86РК», и это мне казалось реально крутым :)

Вот этот эпохальный труд в формате DjVu:

http://balancer.ru/computers/mk/mk-85/files/MK-85_BIOS_GAW.djvu

(позже переложу в ZeroNet)

Потом он написал простейший монитор, который позволял вводить в память МК-85 свои программы и МК-85 был подчинён полностью :) Надо заметить, что мы тогда могли запускать программу на Бейсике как кусок машинного кода. Но была тонкость — программа должна была выглядеть как вводимая Бейсик-программа. А ввести можно было не все символы. Поэтому задача усложнялась требованием написания программы-монитора так, чтобы она состояла только из символов, которые можно было ввести штатными средствами. Но GAW эту задачу решил.

А потом весь наш задел так и оказался не востребованным. Дело было, вероятно, в 1992 году (надо бы попробовать уточнить) и наши интересы уже переключались на персональные компьютеры :)

Ссылки