Вот и завершился этот затянувшийся ремонт-оживление ПК.
Начало всего этого ТУТ.
После всех этих перерывов, поисков документации, экспериментов, изучения/вспоминания матчасти, размышлений и откладывания на потом.
Теперь при включении комп выдаёт начальную заставку и щёлкает динамиком при нажатии клавиш, всё как полагается.
Прошлый раз я остановился на моменте подключения внешнего модуля с тестовой ПЗУ к разъему компа, т.к комп при подаче питания просто не работал, впрочем выдавая на монитор картинку растра. Это подключение выявило полную неработоспособность связки теста с компом, что меня весьма озадачило, т.к. я помнил, что когда-то железка работала и тест выдавал что надо.
В процессе размышлений оформилось предположение, что тестовому модулю что-то мешает работать и что неплохо бы проверить, а как бы работал тест не в области памяти дополнительных модулей, а заместо микросхемы ППЗУ BIOS. Поэтому принимаю решение выпаять оригинальную микросхему BIOS и поставить на её место панельку, чтобы при необходимости быстро менять микросхемы ПЗУ для тестов и всяких проверок.
Сказано - сделано !
Правда при выпаивании оторвались некоторые дорожки, что потребовало времени на их восстановление.
А перед этим опять порылся в "развалах" своих ПЗУшек, "читая" их программатором. Одна из них показалась похожей на ПЗУшку в тестовом модуле, что так и оказалось. И это тоже послужило толчком к решению о впайке панельки.
После установки панельки перво-наперво вынул микросхему из доп. модуля и воткнул в панельку заместо BIOS, а вдруг заработает ?!
Нее, не заработала ! ))
А вот та другая, найденная в "развалах", попыталась было работать, но как-то нестабильно, при первом включении проходит все этапы теста, доходя до проверки ОЗУ и на нем стопорится, выдавая ошибку об неисправной ячейке ОЗУ. А затем при повторных включениях или ресетах отрабатывает начальный этап теста (меняет цвета палитры растра согласно логике работы программы), как и нужно, но потом вместо продолжения работы переходит снова на проверку палитры, и так по кругу, или же просто виснет на каком-то этапе.
Попереставлял эти ПЗУшки без особого толку и закрались у меня сомнения в целостности кода в них. А ведь исходные тексты на этот тест где-то у меня лежат !
И началась эпопея поиска исходника теста. Так-то помнил, что в своё время хранил исходник на 5" дискете, хе-хе.
Полез на балкон, в коробку, где и хранились у меня эти всякие 5" дискеты. Достаю. Но ведь теперь нужен 5" дисковод для чтения дискет, а ведь давно такие дискеты уже не используются. Проверил старые системники - везде только 3" дюймовые стоят, а ведь нужен 5" дисковод. Пичаль-беда.
Проверил еще места складирования устаревшего, и о чудо ! нахожу пару 5" дюймовых дисководов !! ))
Что ж, теперь подключение. Нахожу специальный шлейф для подключения дисковода к системной плате. Вот такой :
Подсоединяю дисковод, включаю комп, захожу в настройки BIOS, там активирую присутствие 5" дисковода, перегружаю комп. И... комп не определяет 5" дисковод... тэкссс. Заменяю на другой 5" и на этот раз комп его определил. Уффф, хорошо !
Так, теперь проверять дискеты. Т.к. я обычно подписывал архивы, то для начала читаю подписи на конвертах, а в моём случае я еще снабдил каждый конверт с дисками поясняющей распечаткой, отпечатанной еще на матричном принтере ! Хорошо.
Отбираю парочку подходящих дискет. На одной написано PZU-TXT.ARJ. Понятно, что это возможно архив исходников "завёрнутый" архиватором ARJ - когда-то популярным архиватором. Это хорошо, если конечно архив прочитается с дискеты.
На другом конверте написано "ИСХ. ТЕКСТ PZU", хо-хо ! то что надо. Смотрю есть вкладыш с распечаткой содержимого диска, а там... помимо архива, программы ассемблера, которой тогда пользовался, есть исходники в TXT-формате, это просто удача !!
Втыкаю диски в дисковод, читаю, и тут полный облом !! Ни один из этих двух дисков не читается, совсем !! А живой ли дисковод и может ли он правильно читать диски ?!
Нахожу диски, которые дисковод успешно читает, да и записывает. Значит дело не в дисководе, а в дисках. Пичаль-беда.
Вспоминаю, что когда-то переписывал информацию хранящуюся на дискетах на жесткий диск или может на CD-RW. Начинаю перетряхивать все свои носители, вдруг да и найдётся искомое.
Тотальная проверка всех моих носителей показала, что на них исходников нет. Перетряхивал даже все свои 3,5" дискеты !
Грущу.
Заниматься попыткой восстановления диска, на котором есть архив PZU-TXT.ARJ считаю в данном случае плохой затеей, а потому сосредотачиваюсь на на диске, где есть исходники в простом TXT-формате.
Принимаю решение воспользоваться программами которые читают диски по-треково, не обращая внимание на ошибки, "мусор" и прочие Errors, и затем уже разбирать получившиеся данные.
Вспоминаю, что когда-то пользовался программами "Teledisk", "FDA (Floppy Disk Analyzer)".
Вот что про них "говорит" Интернет:
=========
Teledisk
Одна из самых популярных программ для создания образов дискет времен DOS-эры. Последняя версия (предположительно) - 2.18. Использует проприетарный формат TD0. Но, в отличии от WinImage и других современных программ, позволяет работать с любыми видами дискет, в том числе, с защитой от копирования в виде информации в скрытых секторах.
Некоторые возможности программы:
копирование одной или обеих сторон дискеты;
копирование только секторов дискеты, выделенных DOS;
использование алгоритма сжатия данных (Lempel-Zev) для уменьшения размера файла;
автоматическое разделение файлов на несколько дискет при необходимости.
========
Floppy Disk Analyser 6.0.
Этот пакет предназначен для копирования дискет, защищенных от копирования, в частности дистрибутивных и ключевых. Копирует все существующие в настоящее время системы защиты, включая CERBERUS 2.0 и COP's COPYLOCK. Работает на PC AT с процессором 286 и выше под управлением DOS 3.0 и выше. Не работает в среде Windows. FDA копирует дискеты, не копируемые программами CopyWrite, Copy II PC, Disk Explorer и даже платой Option Board Deluxe.
========
После размышлений отказываюсь от мощного и навороченного FDA в пользу более простого в использовании "Teledisk", т.к. в моём случае навороченность не требуется, требуется простое посекторное чтение диска с игнорированием ошибок чтения, а затем разбор получившихся данных.
И так, запускаю "Teledisk" и приказываю программе читать диск и записывать данные в образ .TD0
Так делаю для надёжности пару раз. Потом уже сравнил эти два файла ради интереса встроенной в операционную систему утилитой FC (File Compare). Утилита находит ТРИ отличия - фигня ! ))
Открываю образ .TD0 в своём любимом FAR (File and archive manager) и начинаю разбор глазками. И сразу обнаруживаю куски и огрызки исходников. Отлично !
Начало образа дискеты :
Тут видно место записи директории диска с названиями хранимых файлов на диске, включая названия удалённых файлов.
А сразу за ней идет текст исходников. )
Просмотрел это всё глазками, выдрал куски текста, а затем соединил похожие по смыслу. На диске было записано несколько версий исходника, выбрал самый последний. Было несколько мест в тексте, где были неоднозначности, но оставил, чтоб потом посмотреть более пристально.
Уже позже полез как-то в тёмное место, где у меня хранится всякая документация и тексты по ZX-Spectrum и там НАХОЖУ !! распечатку в бумажном виде этого исходника ! Ха-ха-ха. Сравнил бумажный текст с электронным, нашел несколько неточностей, поправил.
Если бы я точно знал, где лежит эта распечатка и есть ли она!, то не было бы этой увлекательной "пляски" с дискетами и дисководами и всем вот этим восстановлением информации. Хе-хе.
"Граждане ! Храните свои исходники в надежном месте, и помните, где это место !!" )))
Так... исходник нашелся, теперь надо превратить его в бинарный код. Вспоминаю, что в своё время пользовался чем-то простым, где "всё в одном флаконе", но вот название программы ?? Помню, что это был ассемблер не от Microsoft и не от Borland.
Делать нечего, лезу в Интернет.
После некоторых поисков с таким невнятным набором входных данных заносит меня на такой сайт: http://old-dos.ru где есть всё вот это давнишнее! ) И там нахожу ту самую программу - "Turbo Editasm". Она самая ! Отлично !
Теперь вопрос, где всё это запускать. Пытаюсь облегчить себе задачу и провожу поиск в сторону эмулятора ПК ПОИСК !
Набредаю на вот такую программу эмулятора...
Это многомашинный эмулятор различных ПК, где помимо многих прочих есть и эмулятор на ПК ПОИСК. Запускаю, проверяю, смотрю - годно. В плюс автору, в эмуляторе есть встроенный debugger, что мне потом пригодилось, чтоб понять, почему кусок кода в ПЗУ работал не так как надо.
Закидываю в образ hard-diska, с которым работает эмулятор ПК ПОИСК, исходник, ассемблер, вспомогательные программы и начинаю колдовать.
Запуск оболочки Norton Commander.
Запуск ассемблера "Turbo Editasm".
Компиляция по исходнику.
В процессе всего этого оживления затарился вот такими микросхемами, взамен ППЗУ типа 27C64A, которое имеет размер организации памяти 8х8 Кбайт, чтобы не возиться с их стиранием ультрафиолетом.
Когда-то для стирания ППЗУ пользовался лампой ДРЛ (Ртутная газоразрядная лампа) толи на 100 толи на 200 Вт с удалённым верхним стеклом с люминофором, оставляя только внутреннюю кварцевую трубку.
Фотки с интернета.
Светит она конечно жестко ! В процессе стирания я уходил и закрывал комнату, минут на 15-20. После работы этой лампы запах озона был просто... ухх ! У меня сейчас вот такой самодельный стиратель :
Для стирания микросхемы кладутся прямо под лампу.
Стирать микросхему этим стирателем около 20-30 минут, а это потеря времени, в отличии от электрически программируемых AT28C64 производства "Atmel", которые стираются/шьются просто мгновенно, по сравнении.
С заменой ППЗУ 27C64A на AT28C64 у меня случился такой казус.
Стал замечать, что эти микросхемы AT28C64 как-то фигово работают. Вернее в случае, если ставлю их в доп. модуль, то всё нормально и стабильно, а если ставлю заместо Bios, то тут происходят странности.
Первое включение после подачи питания более-менее, но последующие включения или Resetы ломают логику работы, может отработать не до конца и зависнуть и в последующем просто отказаться работать с самого начала старта ! Да что за хрень !!
Пока не пришла мысль, сравнить код в микросхеме, когда она уже просто не стартовала, с эталоном. И что же выясняется ? Сравнение выявило отличия в информации записанной в микросхему с исходным бинарником ! Вот это чудеса чудесные !
Сперва было подумал, что микросхемы не качественные, но в варианте работы в доп. модуле с микросхемами всё было в порядке и отличий с исходным бинарником не было.
Значит лезу в даташиты (datasheet - документация) на микросхемы и внимательно разбираюсь с этим узлом в электросхеме на ПОИСК, как там оно сделано.
И так, чем же отличаются AT28C64 и 27C64A ? Назначением выводов 1 и 27, на рисунках видно как. Выводы 26 у этих микросхем одинаково не используются.
Смотрим в схему, а по схеме 1 вывод ППЗУ соединяется с VCC, т.е. с +5в, 26 вывод соединяется с линией адреса А13, а вывод 27 соединяется с линией адреса А14. Сделано это скорее всего для возможности расширения адресного пространства BIOS и возможности использовать ППЗУ типа 27C128 и 27C256.
Т.к. по документации на AT28C64 вывод 1 (The RDY/BUSY pin is not connected for the AT28C64X.) не используется, 26 вывод тоже не используется, то остаётся изолировать 27 вывод при использовании AT28C64. Что я и делаю вот таким образом...
На плате нахожу подходящее переходное отверстие, перерезаю дорожку от него к ППЗУ, впаиваю в переходное отверстие один контакт 2-х пинового "джампера", второй контакт загибаю и припаиваю к отрезанной дорожке ведущей к ППЗУ. Туда же паяю резистор на 1К к ближайшей линии +5в.
Логика такая: джампер замкнут - значит работает 27C64A как обычно, джампер разомкнут - значит работает AT28C64. Для работы 27C64A не имеет значения, как установлен джампер.
С такой доработкой всё стало прекрасно с AT28C64.
Хотя конечно, можно было просто отрезать дорожку и припаять резистор, на функционал это бы не повлияло, просто не хотелось менять схему.
Но, вернёмся к компиляции.
Делаю бинарник для работы вместо м/с Bios, снова "зашиваю" - ничего не поменялось, также первые минуты работы тест добирается до неисправности микросхемы памяти, пишет адрес и содержимое неисправной ячейки, но вот при последующих Reset-ах и включениях не удается добиться устойчивого повторения работы теста: также не доходит до проверки памяти и сбрасывается на начало, и так по циклу, а иногда просто зависает намертво. Это всё наводит на мысли, что по прогреву микросхем что-то может перестать нормально работать. Начинаю пропаивать ножки сильно греющихся микросхем, а это сам процессор и 556РТ5, может там от нагрева теряется контакт.
Пропаял, эффекта это не дало. Начинаю пропаивать переходные отверстия, которые могут терять контакт. Это тоже не помогло.
Другие "кипятильники" решаю пока не трогать, а это 556РТ4 и 155РЕ3, т.к. ранее их пропаивал. В узел формирования изображения где стоит пара 556РТ4 вообще не лезу, ибо растр есть и там всё работает.
Но всё-равно, судя по наблюдениям камрадов в форумах, которые говорят, что со временем во всех этих РТ4(5), РЕ3, могут восстанавливаться пережигаемые перемычки и информация записанная в них может искажаться, но лезть туда мне совсем не хочется, да и программатора для всех этих однократно прожигаемых ПЗУ у меня нет и если что, то его надо будет колхозить, а не хочетсяя-я-я, ладно, оставляю эту мысль на потом.
Кстати, проверил этот бинарник для ППЗУ BIOS в эмуляторе - отлично работает, проходит все этапы теста ! Значит в коде кажется не напортачил.
Пробую компилировать бинарник для работы в области привилегированного ПЗУ, т.е. доп. модуля. Прошиваю, запускаю - не работает, совсем. Да что такое !
Кстати, в процессе поиска информации по этому ПК набрёл на методику поиска неисправностей !
Прогнал её по пунктам, попутно выявляя некоторые несоответствия в обозначениях микросхем и нумерации их ножек для моей ревизии системной платы.
Так, иду по пунктам, всё как бы соответствует, на аппаратном уровне.
На пункте 4.9 остановился подробнее, часто к нему прибегал, ибо это вариант проверить ЦП и логику в статике. Поставил перемычку, снял перемычку... и в процессе этих действий добился того, что ЦП перестал запускаться после удаления перемычки. Ха-ха.
Посмотрел на это всё печально, потыкался пробником по ножкам - а вдруг ЦП находится в каком-то неподобающем режиме ! Но такого обнаружено не было и стал я в "тупую" прозванивать проводники от ЦП к БИСАм и ППЗУ. Хе-хе.
И через какое-то время обнаруживаю непрохождение адресных сигналов ! Обнаруживаю несколько таких микро-обрывов, восстанавливаю. Чудо-чудное, тест ППЗУ заработал снова и благополучно доходит до неисправной ячейки памяти и останавливается. И всё это стабильно, хоть при "ресетах " хоть при вкл/выкл ПК. Отлично ! До неисправной микросхемы памяти я ещё доберусь, а что там с работой внешней ППЗУ ? Всё тоже самое - не работает.
Ну что ж, тоже начинаю подорожечную прозвонку цепей от разъёма до микросхем. И тоже обнаруживаю обрывы в адресных линиях, хотя визуально всё норм. Восстанавливаю, проверяю - всё работает ! Отлично !
Теперь осталось заменить дефектную микросхему памяти. Выпаиваю. Вот она .....
Меняю, запаиваю. Проверяю, тест отрабатывает до конца, теперь нет сбойных ячеек памяти.
Но есть НЮАНС ! )
===== НЮАНС ON =====
В код теста я вставил процедуру, которая определяет объём памяти на системной плате. Память считается блоками по 16Кб по всему адресному пространству этого процессора 1810ВМ88 (8088) равному 1Мб. Пишем байт(AAH) в ячейку памяти, затем считываем байт из этой же ячейки и сравниваем с записываемым, если они равны, то пишем в эту же ячейку другой байт(55H) и также сравниваем, если равны, то увеличиваем счётчик 16Кб блоков и идем к следующей ячейке со смещением 16Кб. Если байты не совпадают, то просто идём к следующему блоку. И так до размера в 1Мб, затем подсчитываем число 16Кб блоков, это и будет объём памяти на плате.
Так вот, когда код работает в адресном пространстве доп. модуля равном COOOOH, то объём памяти определяется верно.
Но вот когда код работает в области памяти системного ПЗУ, то объём памяти определяется НЕ верно ! Причём выдаваемая цифра при каждом включении/ресете может быть разной. Так и не понял, отчего так. Ведь код-то одинаковый, только работает в разных адресных пространствах.
Тест может выдавать и другие цифры.
В процессе размышлений у меня возникло предположение, что код в ППЗУ BIOS работает быстрее, чем во внешнем модуле.
Пробовал добавлять временнЫе задержки между записью байта и его считыванием и сравнением, но это ни на что не повлияло.
А в эмуляторе "Поиска" код работает стабильно, выдавая всегда объём 640Кб !
Ещё были мысли, что код в основном ППЗУ BIOS как-то настраивает периферию или производит какие-то действия, которые помогают правильно работать ППЗУ в дополнительном модуле. Ведь для старта этого теста в модуле, нужна работающая основная ППЗУ BIOS. Без этого тест не запустится.
Для проверки этого предположения "обнуляю" основную ППЗУ, делая только безусловный JMP на код в области дополнительной ППЗУ модуля, что исключает всякую предварительную настройку периферии.
Проверяю - в такой связке код так же правильно считает размер памяти, т.е. что с настройками периферии, что без этих настроек код в доп. модуле правильно вычисляет объём памяти.
Где-то есть НЮАНС ! ))
Но изначально была поставлена задача проверять "Поиски" с помощью установки доп. модуля с тестом, а это работает !
===== НЮАНС OFF =====
.
.
.
Уже после оживления, просматривая архив файлов, что надёргал из сети по теме "Поиска", набрёл на бинарники тестовых ПЗУ, которые надо устанавливать вместо ППЗУ BIOS.
Вот скрины их работы...
Нумерация микросхем памяти на этом тесте отличается от ревизии моей платы.
Скрины полного цикла работы теста :
Если буфер не исправен :
Если была обнаружена неисправная ячейка памяти, то тест выводит её параметры и останавливается :
Так выводится, если тест работает вместо ППЗУ BIOS и ОЗУ исправно, из-за неправильного определения объёма памяти, при наличии на плате 128Кб, показывая конечный адрес ОЗУ :
.
.
А здесь фотки микросхем памяти, подписанные карандашом на корпусе, какая к какому биту шины данных относятся, для справки : ))
.
В процессе всего этого оживления заглядывал вот в такие книжки : ....