Компьютер ПЭВМ «Поиск». Электронмаш
5 MHz, против 4,7 MHz у оригинальной XT. Однако, в целом, компьютер работал медленнее, чем XT, потому что в Поиске не была реализована полноценная CGA видеокарта. Фактически, текстовые режимы эмулировались – видеоадаптер всегда работал в графическом режиме, а буквы на экране прорисовывал системный BIOS попиксельно. Естественно это отнимало кучу процессорного времени. Еще одним отличием от настоящей XT было отсутствие DMA, что так же сказывалось на быстродействии работы с памятью не в лучшую сторону. Да и самой памяти было далеко не 640Kb, которых бы конечно хватило всем, а поменьше, и ее хватало не всем. Однако, несмотря на все недостатки, ПЭВМ Поиск мог запускать актуальную в то время MS-DOS и работать практически со всеми популярными в то время приложениями и играми, начиная от Norton Commander и Digger, заканчивая Windows и Office. И цена, конечно… Если настоящую XT-шку могли позволить себе в основном только организации, то ПК Поиск был более-менее доступен для рядового советского инженера (месячная зарплата). Но обо всем по порядку…
ПредисловиеВообще, строго говоря, Поисков было несколько модификаций. Самым главным отличием было количество набортной оперативной памяти. Первые модели Поисков имели всего лишь 128 Kb, из которых 32 Kb отнимала видео память. У пользователя оставалась всего лишь 96 Kb свободной памяти. Последние модели уже несли на борту 512 Kb, 32 Kb так же уходило под видео память и у пользователя оставалось 480 Kb. Это уже давало шанс запустить что-то еще, кроме самой DOS.
Впрочем, о DOS я заговорил рано, потому что в стандартную поставку входил сам моноблок, блок питания и пара кассет с системными программами и играми. И все. Таким образам, любой контроллер, будь то контроллер дисковода (и, разумеется, сам дисковод) или контроллер джойстика, пользователь должен был приобретать отдельно. А пока, пользователь мог работать с кассетным магнитофоном в качестве носителя информации. Кассетный интерфейс был “скопи-пащен” с буржуйского компьютера IBM PCjr. Формат записи на кассету был идентичен PCjr и еще одному советскому “брату по духу” – Электроника MC-1502, тоже x86 совместимому, и тоже как Поиск, не без ”изюминки” от создателей. И поэтому, пока у нас нет контроллера дисковода, начну я с кассет.
Формат записи на кассету и кассетный интерфейсПоиск не так популярен среди любителей старых компьютеров, как например, ZX-совместимые и их клоны, поэтому софта для работы с кассетами просто нет, и я решил исправить эту несправедливость. Итак, данные записываются в виде ноликов и единичек. Если полярность успевает смениться с отрицательной на положительную за 1 миллисекунду — то это единичный бит. Если не успевает — то нулевой. Таким образом, ноль – это приблизительно 0.5 миллисекунд, один – 1 миллисекунда. Зная это, можно без проблем декодировать сигнал прямо визуально глазами. Вот, например:
Здесь “размахистые” периоды с большим интервалом – это единицы, короткие – нули. Итого на рисунке изображено 1111 0000 1011 001. Каждая запись начинается с пилот-тона, который состоит из 256 байт 0xFF, то есть 256*8 = 2048 единичных бит, после следует записанный бит ‘0’, и далее синхро-байт 0x16 (00010110). Все данные записываются 256-байтными блоками, после которых следует 2 байта контрольной суммы. Контрольная сумма считается по алгоритму CRC-16 с полиномом 0x1201, начальное значение = 0xFFFF, после подсчета CRC = CRC xor 0xFFFF. После пилот тона, нулевого бита и синхро-байта 0x16 находится 256-байтный заголовок, в котором присутствуют такие важные данные, как имя файла, тип файла, сегмент и смещение куда будет загружена программа.
Заголовок дополняется нулями до 256 байт. Далее идет его контрольная сумма – 2 байта. Последовательность завершается 4 байтами 0xFF. Потом заново идет лидер (пилот-тон) с единицами, бит синхронизации 0, байт синхронизации 0x16 и вот тут уже начинаются блоки с данными. В конце последовательность так же завершается 4мя байтами 0xFF.
Итогом ковыряния с форматом записи стали две небольших утилиты: CAS2WAV и WAV2CAS. Первая позволяет создать из бинарного файла .WAV файл, который в последующем может быть проигран на обычном mp3 плеере. Вторая же, наоборот, пытается из кассетной записи создать бинарный файл. Поэтому, если у кого-то сохранились кассеты от Поиска или от МС-1502, то цифруйте их, пожалуйста, в WAV, для коллекции и истории. Скачать наиболее полный на данный момент набор кассетных программ и игр для Поиска можно здесь: vizersprojects.ru/archive/sannata/apps.zip
КассетыТеперь, когда есть возможность создавать WAV файлы, конвертируем кассетный софт и записываем на mp3-плеер. Подключаем плеер к разъему “МАГНИТОФОН” и включаем питание.
В BIOS Поиска, помимо основных функций обработки прерываний, была записана небольшая программа – монитор, которая позволяла ввести имя файла и загрузить его с магнитофона в память:
Программы и игры, в основном, представляли собой русифицированные версии популярных игр и программ с IBM PC. К примеру, Бейсик есть ни что иное, как Microsoft Basic, который был зашит в ПЗУ компьютера IBM PCjr. Найдите два отличия:
Впрочем, справедливости ради, стоит отметить что были и свои собственные игры, к примеру шахматы или реверси.
Дополнительные контроллеры (адаптеры)Да, как ранее уже упоминалось, к Поиску можно было подключить дополнительные контроллеры, или адаптеры, как сказано в инструкции. Для этого Поиск имел четыре слота расширения, куда можно было установить одновременно до четырех контроллеров. Фактически, шина — стандартная на тот момент ISA-8, но конечно с другим разъемом и каким-то одним (или двумя) инвертированными сигналами. Контроллеры для Поиска выпускались как на заводе, так изготавливались кооперативами и даже любителями.
Первое, что было желанно и необходимо — это контроллер дисковода. С ним Поиск превращался из печатающей машинки для Бейсика и игр в серьезный компьютер с DOS, открывающий пользователю весь набор (ну, почти весь) существующего на тот момент x86 программного обеспечения. Чего только с этими контроллером не делали – турбировали (увеличивали скорость чтения-записи), закладывали в прошивку поддержку 800 Kb форматов дискет, вместо 360 Kb. В общем, они были разные, но в целом работали с дискетами хорошо и быстро. Этой мой контроллер:
А это еще один контроллер дисковода:
Для моделей Поиска с 128Kb оперативной памяти так же необходимо было приобрести “Расширитель оперативной памяти”, что бы запускать что-то еще, кроме самого DOS. “Расширитель оперативной памяти” вставлялся в слот, как обычный контроллер. Были разные модели, на 256 Kb, 512 Kb и даже по слухам на 670Kb. Иногда их совмещали с чем-то еще, например с LPT-портом. На имеющимся у меня экземпляре как раз так и сделано.
Ну и конечно контроллер жесткого магнитного диска с MFM интерфейсом. Зверь редкий и дорогой, как, впрочем, и сам жесткий диск. Позволял подключить к Поиску жесткий диск объемом до 68 Mb. Не менее уникален был и сам шлейф, которым контроллер соединялся с жестким диском.
С ним мне пришлось немного повозиться. Во-первых шлейф. Он не стандартный, и пришлось на скорую руку набросать примерную схему:
И спаять такой переходник:
Дальше, я пытался заставить работать контроллер с имеющимся у меня винчестером Robotron K5504.20 на 20Мб. Низкоуровневое форматирование завершалось без ошибок, но вот при попытке запустить FDISK и разметить системный раздел возникала ошибка: Error reading fixed drive. Я грешил на кабель, перепробовал все комбинации джамперов на контроллере, изменял путем правки в прошивке контроллера параметров для этого конкретного винта — бесполезно. FDISK все-таки иногда запускался, но при попытке записать разделы на диск зависал. Причем я точно знал, что этот Гроботрон полностью рабочий — он без проблем форматировался, размечался и вообще чувствовал себя совершенно нормально на моей XT-шке. Виновник торжества:
После «прозвонки» и проверки кабеля в стотысячный раз я плюнул и все-таки решил подключить свой второй MFM жесткий диск Seagate ST-225, который стоял у меня в XT-шке. Правда, пришлось предварительно делать с него бекап по нульмодему на основной компьютер. И, о чудо!, он без проблем отформатировался и заработал с первого раза. Так и пришлось оставить Сигейт на Поиске, а Гроботрон поставить в XT-шку, хотя я хотел наоборот.
Еще существовал контроллер джойстика и соответственно сам джойстик. Забавное устройство, ни с чем кроме себя не совместимое и ни на что не похожее. Программа драйвер позволяла задать соответствие наклона какой-либо клавише на клавиатуре, тем самым, когда джойстик наклоняли влево, эмулировалось нажатие клавиши “влево” и тд. Вообще, хорошая идея. Все это позволяло играть в игры джойстиком, даже если игра джойстик не поддерживала.
Потроха и ремонтПоиск у меня сломался давно и был неисправен. Неисправность заключалась в периодическом внезапном зависании или даже перезагрузке. Логично предположив, что все дело в памяти и, запустив программу CheckIT с тестом, я увидел такую печальную картину:
Берем в руки кувалду отвертку, отвинчиваем несколько винтов снизу и снимаем верхнюю крышку с клавиатурой. Взору открывается системная плата целиком:
В центре керамический процессор, в правом верхнем углу на панельке ПЗУ с BIOS, а снизу 16 запаянных микросхем К565РУ7Г – это и есть память. Шестнадцать микросхем выпаивать мне не хотелось, поэтому я решил попробовать способ, который где-то раньше слышал: прямо сверху на ножки старой микросхемы одевать новую и смотреть по тесту памяти, изменится ли ситуация. Если что-то меняется, то заменять микросхему. Меня останавливало только одно – нужно каждый раз при надевании новой микросхемы на старую подключать клавиатуру, грузить DOS, грузить CheckIT и запускать тест. И ладно бы со временем, которое тратится на загрузку программы… Еще у клавиатуры не очень надежный шлейф, и от частого включения – отключения ему лучше точно не будет. Короче лень двигатель прогресса. Из архивов был вытащен на свет божий старый добрый TASM (ассемблер). Решено было написать тест, который зашивался бы прямо вместо BIOS и стартовал сразу при включении компа. Вообще, написание программы на ассемблере вместо BIOS немного отличается от написания программы на ассемблере под DOS, например тем, что у нас нет привычных прерываний BIOS (ведь мы его и пишем) и ДОС, и для того, что бы что-то выводить на экран нужно рисовать символы вручную. С другой стороны, вся память в нашем полном распоряжении и с ней можно делать все что угодно. Ну, правда, в одних регистрах много не сохранишь данных, поэтому все-таки какие-то переменные приходится хранить в памяти. Ну и стек конечно тоже, ибо без стека ни подпрограмму не вызвать, ни значения регистра сохранить. Короче стек тоже полезная вещь. Поэтому я сначала тестирую первый килобайт памяти – если есть ошибки, то пикаем три раза и вешаем процессор. Если все нормально – устанавливаем в первый килобайт стек, переменные и начинается выполнение основного теста.
Итого, немного говно так_себе_кода (ибо на коленке и для себя) и тест готов. Зашиваю в ПЗУ, включаю компьютер и вижу то же самое, что показывал мне CheckIT, только уже в своем тесте и моментально:
Все, теперь постепенно начинаю “насаживать” заведомо исправную микросхему поверх впаянных. Довольно быстро нашел первую сбойную в районе 152Kb, заменил, потом долго возился с ошибками в районе 264Kb, но постепенно уменьшал, уменьшал и свел до нуля. Сменил в итоге семь микросхем (возможно, некоторые зря), заодно поднял их на панельки:
Семь хоть и много, но не шестнадцать все-таки. Мой тест проходит без ошибок, CheckIT без ошибок и вообще, все мыслимые и не мыслимые тесты памяти – без ошибок. Победа!
С дисководом, а тем более с жестким диском, Поиск в буквальном смысле «оживал» и становился большим серьезным компьютером. Где оставались те кассетные игрушки, когда тут можно было играть в такое: