ZeroNet Blogs

Static ZeroNet blogs mirror

Вот эту историю точно пару раз где-то расписывал, но сейчас всё перерыл — не нашёл :-/ Одна из вещей, зачем нужен этот блог :)

Чем позже что-то вспоминаешь, тем выше вероятность ошибиться с датами. Но было это дело на «Поиске» (советском аналоге PC XT), а его родители Стасу купили то ли в конце второго, то ли начале третьего курса. Значит, где-то 1991—1992гг.

Опуская воду — повадился у нас в общаге люд играть у Стаса на компе. Играть много, плотно, сменяя друг друга круглые сутки. А Стасу и поучиться иногда надо, и поиграть тоже хочется. А человек он мягкий, просто выгнать и запереть дверь не может. Он даже как-то периодами мне комп отдавал (мы в разных комнатах жили), когда надо было навёрстывать упущенное в обучении. К нему тогда никто не ломится. А я все выгоню, скажу, «мне самому надо» и давай программировать или играть :)

Словом, мучился он мучился и кому-то из нас в голову пришла светлая мысль.


Я написал небольшой резидент, который проверяет статус NumLock. Если он включен (а его такой статус был в BIOS нами по дефолту прописан), то через несколько случайных минут комп зависает. Выключен — ничего не делается. То есть пока сам сидишь, во время загрузки компа NumLock выключаешь и работаешь спокойно. А кто не знает, тот этот момент упускает и комп скоро виснет. Так позависает народ в играх, позависает, да удручённо и уйдёт восвояси. А комп — свободен.

Но вскоре (и недели не прошло) как-то сидит у Стаса и сидит часами, то ли Серёга П., то ли Андреич… Играет целый день, хоть бы что. Мы в недоумении, может, резидент заглючил, или ещё чего — при нём же не проверишь :) К вечеру приходит ещё народ играть. Кто-то начинает комп перезагружать, а тот, целый день игравший, ещё и поясняет — «стой, надо NumLock выключить! А то комп почему-то с ним постоянно виснет!». Приплыли :) Пытливый разум обнаружил эмпирически условие работоспособности компа :D

soviet_pk_3_16_b.jpg (742x1000)

Вот так наш «Поиск» почти выглядел. И монитор такой же, из цветного ТВ, и блоки расширения. Только что дисковод был сдвоенный и ещё HDD на 20Мбайт был :)

28.05.2018

Как только мы обзавелись калькуляторами МК-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 году (надо бы попробовать уточнить) и наши интересы уже переключались на персональные компьютеры :)

Ссылки