Хабрахабр

С чего начиналась монополия, или немного возни с IBM PC 5150

For English press One

Зачастую на территории восточной (да и части западной тоже) Европы это ZX Spectrum, замечательный компьютер, который, впрочем, не оставил значительного наследия. У каждого любителя старого железа есть фетиш. Этот компьютер тоже любят многие старьевщики, и многие его почитают за его влияние на индустрию. Другое дело — IBM PC 5150. Но историю этого замечательного компьютера знает каждый школьник, а вот что было у него внутри, оказывается, знают не так и много людей. За то, как он вытеснил с рынка всех конкурентов.

640КиБ в те времена было поистине огромным объемом ОЗУ, и на материнской плате первой ревизии компьютера можно было разместить до 64 КиБ максимум. (под катом много картинок и даже видео есть!)
Так, многих шокирует, что 640КиБ ОЗУ в IBM PC 5150 не было. Конечно, существовали карты расширения памяти, но они появились позже, да и вторая ревизия материнской платы содержала уже 64 КиБ ОЗУ в базовом варианте (очень глючный вариант, который, как я полагаю, в продажу не поступал, но об этом позже), а максимум можно было разместить аж 256 КиБ! Да, всего 64 КиБ, как у домашнего Коммодора 64, например, или немногим больше, чем у наиболее популярной версии вышеупомянутого Спектрума. Представьте IBM PC c 16 КиБ ОЗУ… DOS на нем не запустить. Но, покупая первую базовую версию, вы получали лишь 16 КиБ.

А НЖМД для IBM PC 5150 производитель не предлагал даже в качестве опции. … Да он и не нужен был, для этой версии: в ней не было даже дисковода. Дело в том, что в ПЗУ IBM PC был «зашит» интерпретатор языка Бейсик, который грузился при отсутствии другого варианта загрузки. Как же такой компьютер можно было использовать? Как же загружать в него программы без DOS? То есть, все работало именно так, как на 8-битных компьютерах того времени: вы получали компьютер, который после включения загружал из ПЗУ интерпретатор языка Бейсик и имел от 16 до 64 КиБ ОЗУ. Да, IBM PC 5150 имел порт для подключения магнитофона, а бейсик в ПЗУ умел записывать и загружать программы на/с кассет. С помощью магнитофона. Да и сам компьютер, в общем, был 8-битным. Все как на вашем Спектруме! Однако шина данных процессора была обрезана до 8 бит, именно для того, чтобы использовать 8-бит переферию. Нет, процессор был совершенно 16-битным, даже с 20-бит шиной адреса, и она была полностью выведена «наружу» (кстати, именно поэтому 1й мегабайт памяти был так важен для шины ISA все время ее существования, на нее были разведены только 20 бит адреса, и ничего за пределами 1го мегабайта она не «видела»). Так же, как на Спектруме. И, хотя 20 бит адреса позволяли адресовать аж 1 МиБ ОЗУ, весь обмен информацией в IBM PC 5150 осуществлялся по шине, шириной в 8 бит. IBM же собирала свои 5150 исключительно из широкодоступных компонентов, так что, чисто теоретически, любой мог собрать свой клон 5150 прямо на коленке, за исключением, конечно, микропрограммы BIOS, код которой, хотя и был открыт на страницах мануала 5150, был защищен авторским правом. Даже проще, ибо многие компьютеры тех времен уже использовали кастомные чипы, такие, как ULA в ZX-Spectrum или BBC micro, а Commodore для своих нужд приобрела MOS Technology, которая производила некоторые микросхемы исключительно для Commodore, так что клоны этих компьютеров было сделать весма непросто.

На старте IBM PC 5150 предлагался только с монохромным видеоадаптером MDA, неспособным выводить графику. С дисплеем было все еще веселее. Зато текст отображался довольно качественно. Только монохромный текст, только хардкор. Зато немногим позднее в опциях появился цветной адаптер CGA, имевший композитный выход для подключения к телевизору, вдобавок к цифровому RGB-выходу для монитора. Такой адаптер требовал специального монитора и прекрасно подходил для бизнес-пользователей (при наличии дисковода и расширения памяти, чтобы грузить DOS). Зато для домашнего использования она подходила значительно лучше: монитор был не нужен, можно было подключиться к любому телевизору, да и 4 цвета в графике (были две разные палитры одна вырвиглазнее другой) на телевизоре магическим образом превращались в большее количество, если разработчик умел правильно пользоваться композитным выводом. Такая карта значительно хуже отображала текст, так как имела значительно более низкое разрешение, и слабо подходила для бизнеса, даже с соответствующим монитором. В общем, CGA была совсем не такой унылой картой, как многие помнят по играм на VGA мониторе в режиме эмуляции CGA. А многие умели. На телевизоре было лучше.

Когда я его получил, он не включатся. Такой IBM PC 5150 уже был у меня какое-то довольно продолжительное время, но руки до него никак не доходили по одной простой причине: он был какой-то проблемный. Я быстро нашел закоротивший конденсатор и выкусил его (он сидел на линии -12В и был мне не нужен в любом случае), однако с памятью этого компьютера определенно было что-то серьезно не так.

Дело в том, что никакого BIOS Setup на IBM 5150 не было. Здесь надо бы сделать небольшое отступление. Конфигурация памяти выставлялась следующим образом: 2 переключателя в 1м блоке говорили BIOSу, какие из 4х банков памяти непосредственно на плате заполнены, а первые 5 переключателей блока 2 говорили BIOSу полный объем памяти в системе, то есть сумму памяти на материнской плате и картах расширения. BIOS при загрузке читал положение 2х наборов микропереключателей на плате, SW1 и SW2, и по ним определял конфигурацию оборудования: наличие и количество дисководов, тип видеоадаптера, наличие математического сопроцессора, конфигурацию памяти.


На плате видно светло-голубые блоки SW1 и SW2

Тут начинается первая проблема. Каждый банк состоял из 9 микросхем (8 бит+бит четности), и хранил 16 КиБ на первой ревизии платы и 64 КиБ на последующих. Таким образом, если у вас на плате заполнено 3 банка по 64КиБ, компьютер «увидит» лишь 48 КиБ памяти, вместо 192. Из-за бага в BIOS, если плата сконфигурирована на использование не всех банков памяти, то есть от 1 до 3, то BIOS считает, что все банки имеют размер 16 КиБ, даже на поздних ревизиях, где размер банка 64 КиБ. Именно эти два бага заставляют меня думать, что компьютеры, поддерживавшие 256 КиБ на борту, всегда продавались полностью укомплектованными набортной памятью, ведь в противном случае пользователь бы столкнулся с ошибками при включении и невозможностью использовать всю установленную память (а она была ну очень дорогая). В BIOS есть еще один баг, который показывал несуществующие ошибки памяти на платах поздней ревизии, если были установлены не все банки.

Однако, при включении он выдавал ошибку памяти 0800 201 и останавливал POST надписью PARITY CHECK 1. Итак, у меня был IBM PC 5150 с платой поздней ревизии и дополнительной платой памяти на 256 КиБ.

Я начал эксперименты. Беглое гугление показало, что такие ошибки часто вызываются неправильно установленными переключателями на плате. Это не помогло. Для начала, я убрал дополнительную плату памяти и переставил соответственно переключатели. И я решил убрать вообще всю память, которую можно убрать. «Ага», — подумал я: «Дело в набортной памяти». И ошибка пропала! Остался только 0й банк, он распаян на плате и не подлежит замене. Компьютер загрузился в Бейсик и отрапортовал о наличии немногим менее 12 КиБ памяти.

Неужели бейсик столько ест? Первой мыслью было: «Постойте, но у меня же 64 КиБ!!! Конечно, внимательный читатель догадался, что этот (д)эффект — следствие бага №1 в BIOS. Не может быть!». Но на тот момент я этого еще не знал.

Именно там я узнал, что моя плата видит только 16КиБ, если установлен только 1 банк памяти, и что ошибка 0800 201 означает, что неисправна микросхема, отвечающая за бит четности в банке 0, и пропадала ошибка при изъятии остальных банков именно потому, что BIOS видел только первые 16 КиБ в таком случае, а ошибка была выше. В общем, после долгой возни я наткнулся на совершенно замечательный сайт, который с тех пор является для меня библей IBM PC, и выручал потом еще не раз. К еще большему сожалению, после того, как я выпаял эту микросхему и установил на ее место колодку, плата включаться перестала совсем. К сожалению, банк 0 впаян в плату. А еще могло испортиться ПЗУ. На первый взгляд, никаких повреждений от пайки я не увидел, но, так как я выпаивал микросхему феном, стараясь греть всю плату, а не только место пайки, я подозревал, что могла испортиться еще какая-то микросхема памяти, и теперь уже в том месте, где располагались первые 16 КиБ, так как, в случае ошибок в первых 16 КиБ, компьютер не подает никаких признаков жизни. В общем, надо было разбираться, а времени не было. Или что-то еще. И я отложил этот компьютер до лучших времен.

Так как я давно хотел собрать себе клон Спектрума, а тут обещали 100% совместимость с оригинальной ULA на широкодоступной рассыпухе, мне стало очень интересно. Довольно давно, я наткнулся на просторах The Ben Heck Show на книгу ZX Spectrum ULA: How to design a microcomputer. Я знаю, что это не спортивно, но мне хотелось сначала иметь рабочий Спектрум, чтобы потом его кастомизировать, а покупка готовой современной фабричной платы очень сильно ускоряет процесс, да и стоит она недорого. В итоге я купил и книгу, и, прочитав ее, решил купить плату, разведенную автором. Однако, сам процесс сборки платы мне так понравился, что я начал искать, чего бы еще такого собрать.

И я нашел её.

Очень очень качественная. Да, это, насколько возможно, точная копия оригинальной платы 5150, но только это новая, современная плата. Из отличий от оригинала я увидел лишь другой корпус генератора задержки (насколько я понял, он использовался для сигналов регенерации DRAM):


слева в большом корпусе оригинальный генератор задержки, справа в DIP-8 современный

Дело в том, что полярные электролиты на оригинальной плате (как и на клоне) — трехконтактные. и разводку керамических конденсаторов: в оригинальной плате, как и на клоне, все площадки под конденсаторы — 3х контактные. То есть конденсатор хотя и полярный, но устанавливать его можно на плату любой стороной. Средний плюс, а оба по краям — один и тот же вывод минуса. Для керамики же все не так. Таким образом, для электролитов на оригинальной плате (и на клоне) средний контакт всегда плюс, а оба по краям — минус. На плате же все равно 3 дырки, но теперь средняя — минус, как и одна из соседних с ней, а другая — плюс. Так как керамика не полярная, ей не нужна такая защита от дурака-сборщика, и конденсаторы имеют привычные два контакта. Поэтому контакты керамических конденсаторов на клоне слишком близко друг к другу, что немного мешает сборке. На клоне же, конфигурация отверстий для керамики такая же, как для электролитов: плюс в середине. Самое интересное же, что в набор входят все микросхемы, необходимые для сборки, включая микросхему с прошивкой IBM PC-совместимого BIOS. На этом видимые мне различия заканчиваются. Можно сделать переходник, но это не эстетично. Часть из них сейчас довольно трудно найти, а чистую микросхему BIOS еще надо суметь прошить, ведь на IBM 5150 не использовалась JEDEC распиновка. Минусы — цена. Не все микросхемы в комплекте новые, на некоторых есть едва-едва заметные следы пайки, но все корпуса в отменном состоянии и вообще все выглядит как очень качественный продукт. Но меня это не остановило: оригинальная б/у плата у меня была, это мне не сильно помогло. За цену набора можно купить 2-3 оригинальные платы б/у на ибее. В общем, после пары убитых вечеров, плату было не отличить от оригинала (да, хотя с платой шел опенсорсный клон BIOS, но я установил оригинальные микросхемы от IBM: Да и радость сборки Спектрума еще не прошла, а там я все делали покупал отдельно от платы (ну, процентов 80 у меня и так было, так как это были разные 74HC, да и клонов процессора Z80 у меня достаточно в запаснике).

Итак, после сборки платы и её установки в корпус, нам понадобятся: Паять такую качественную плату — сплошное удовольствие, хотя я и хочу со временем восстановить оригинальную, но на первое время подойдет и эта (все знают, что нет ничего более постоянного, чем временные решения, да?).

контроллер флоппи-дисков: 1.

На одну дискету 5,25 дюйма влезает 360КБ данных, на 3,5 дюймовую — 720КБ. Оригинальный IBM 5150 умеет читать и писать только на дискеты двойной плотности. Для записи дискет я подключил его к более современному компьютеру (486) и записал системную дискету с PC-DOS 3. В моем компьютере установлен один дисковод на 5,25 дюйма. 30, несколько архиваторов (в расчете добавить позже НЖМД, либо его флеш-эмуляцию), драйвер для сетевой карты и несколько игр.

еще немного памяти: 2.


Оцените размеры этой сверхвысокоинтегрированной платы, по сравнению с клавиатурой.

На шину ISA адрес и данные приходили уже отдельно, после демультиплексора. Эта плата вставляется в слот шины ISA, которая в те времена была не тормозной устаревшей шиной, а вполне себе расширением локальной шины процессора 8088, так как процессор этот, хотя и был 16-битным, имел урезанную 8-бит шину данных, к тому же мультиплексированую с шиной адреса. 17 МГц.
Кроме того, на этой плате есть часы реального времени (да, на материнской плате их не было), правда, им нужен драйвер, который бы извлекал из платы время и устанавливал его в DOS при загрузке, а еще тут есть один последовательный и один параллельный порт. И работала шина на частоте процессора, 4. Это, конечно, перебор для 5150, но запас карман не тянет. Памяти я установил сюда до отказа — 384 КиБ, чтобы всего иметь максимально возможные 640 КиБ.

Видеоадаптер: 3.

Но какой VGA для IBM 5150? Сначала я тестировал компьютер с заведомо работоспособным адаптером VGA, рассчитанным на шину 16 бит, но работающим на 8-бит шине. Сюда же нужен CGA или Hercules (MDA не рассматриваю, так как хочется графики). VGA — это про 386, ну, может, поздние 286. Например, такой:

А вот с CGA: Все скриншоты и видео до сих пор — с адаптером VGA.

Не совсем. Итак, все подключено, все работает, системная дискета создана, монитор с композитным входом есть, можно начинать тесты? IBM PC 5150 и PC/XT 5160 использовали такой же DIN5 коннектор, как IBM PC AT 5170, клавиатуры которой полностью совместимы со стандартом PS/2 (при условии замены разъема), широко доступным и сегодня, однако в 5150 и 5160 используются другие сигналы. Нужна еще клавиатура. Купить клавиатуры для 5150 и 5160 можно на ибее, но просят за них примерно как за целый 5150 без клавиатуры. То есть, если подключить AT или PS/2 клавиатуру к 5150, работать она не будет. И как бы мне ни нравилась Model F, платить столько за клавиатуру я не готов.

К счастью, есть выход:

А, и программатор, да.
Маленький PIC, 3 резистора, диод, ну и конденсатор, для храбрости — все, что нужно, чтобы превратить PS/2 в XT. Тогда «переходник» будет мощнее самого центрального процессора 8088, установленного в 5150. Что интересно, 8-бит CPU в этом микроконтроллере может работать на частоте 20 МГц.

Там я залипал в Golden Axe, Death Track и Prince. Первым IBM PC-совместимым компьютером, появившемся в моей жизни был какой-то клон на базе 286 процессора у мамы на работе. И игралось весело! Однако опыт на клоне 8088 тоже имелся: значительно позже у друга появился Поиск, за которым мы тоже проводили много времени, играя в различные игры (учились программированию, если так можно было назвать наши поделки на Бейсике, мы на Спектруме), и у меня в памяти сохранились воспоминания, как мы играли примерно в этот же набор игр на его Поиске, то есть, фактически, на клоне PC, причем, довольно тормозном.

Или, скорее, раньше требования к скорости игр у меня были сильно ниже. Однако, как и в случае Дума на 386, память меня подвела. Вот сколько длится загрузка игры Lemmings (конвертер композитного сигнала в VGA не смог извлечь цвет из сигнала CGA, поэтому картинка черно-белая): Оригинальный IBM PC был очень неторопливым компьютером.

Жесткие диски появились позже, и доукомплектовать диском IBM 5150 было не так просто: блок питания был на это не расчитан. В общем, именно так использование компьютера и проходило: загрузились с системной дискеты, вставили рабочую (для работы, все же, часто покупался второй дисковод, чтобы не «передергивать» дискеты все время), загрузили программу.

Естественно, в такой конфигурации это не получится, на 360 КБ дискету не уместить сетевой драйвер и стек TCP/IP. А очень хочется поиграться с сетью на 5150. Продолжим комплектовать компьютер: Поэтому, придется нарушать традиции.

Собственно, сетевая плата: 4.

image

Имеет разъем для 10Мбит витой пары и рискует быть самым быстрым устройством в системе. Плата для шины 16 бит, однако она превосходно работает на 8-бит шине.

Пятый и последний слот расширения займет контроллер жесткого диска (Да, слотов в 5150 всего 5. 5. В 5160 (IBM PC/XT) их было уже 8, хотя там был нюанс.):

К сожалению, этот контроллер очень плохо работал на родном процессоре AMD 8088, причем понял я это не сразу, я лишь после того, как восстановил оригинальную материнскую плату (см. Это опенсорсный XT-IDE, так как MFM диски в рабочем состоянии на сегодняшний день уже огромная редкость. Во время работы компьютер постоянно блокировался, выдавая ошибку четности памяти. П.С.). Замена процессора на NEC V20 полностью решила проблему,

Винчестер я прикрутил формата 2,5 дюйма, чтобы не колхозить никаких переходников: но понять это у меня получилось только через несколько недель экспериментов.

Вообще, приятно, что инженеры, проектировавшие корпус 5150 предусмотрели возможность установки дисков формата 2,5 дюйма!

Ну а вообще, сундучок со сказками выглядит очень олд-скульно!

итак, загрузка с жесткого диска:

Я не стал все это добро запихивать в autoexec.bat, так как оно занимает довольно много памяти, и не всегда нужно. Для запуска сети решил написать небольшой bat файл, который загружает пакетный драйвер сетевой платы и dhcp.exe из пакета mTCP. А если нужно, батник запустить недолго:

надо проверить, работает ли интернет:

ну и мой ftp, для которого все и затевалось:

посмотрим, что там:

Ну и, на последок, еще один пример того, насколько медленным был IBM PC 5150:

Заметьте, тут точно больше 4х цветов.

S. P. Естественно, будучи уверенным в mad skillz в пайке, я не мог серьезно предположить, что повредил плату, выпаивая микросхему бита четности. В итоге я восстановил оригинальную плату. Выпаяв весь нулевой банк, я тщательно проверил каждую микросхему: все они были в порядке. Я подозревал, что испортилась какая-то еще микросхема. Только случайно я обнаружил, что повредил металлизацию переходного отверстия, отвечающего за сигнал записи бита четности банка 0. Несколько раз прозвонил все дорожки, они тоже оказались в порядке. И контакт с ней был. Так получилось, что, прозванивая контакты, я проверил соединение сигнала записи с соседней микросхемой, относившейся к 1му банку. А не было контакта с остальным банком 0, так как до него вела дорожка на верхнем слое. Поэтому-то я и не заметил повреждения. В общем, пришлось припаять проводок, чтобы не выпаивать колодку, но после этого плата снова ожила.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть