[Перевод] Разбираем особенности IBM 4860 PCjr

tsgpbd3a3ukcgjs7fzugedaasc8.jpeg


Старые компьютеры у многих из нас вызывают приятные ностальгические чувства и воспоминания. Но ведь не все даже амбициозные проекты в итоге смогли удержаться на рынке и стать мэйнстримом. В данном случае речь об IBM PCjr, оказавшимся не самым удачным продуктом компании, и в этой статье мы на практике разберем основные «особенности» и причуды этого ПК, многие из которых невыгодно выделяли его на рынке домашних компьютеров.

▍ Особенный ребенок


Ох уж этот карапуз*…простите, Model 4860. Это был единственный ПК с архитектурой x86, имевший слоты под картриджи, возможность считывания кассет, ИК-клавиатуру и кучу проблем в одном комплекте. Он стал прямым потомком PC senior, вот только яблоко на этот раз упало далеко от яблони. Но давайте не будем винить родителя или воспитание. Начнем с того, что 5150 создавался как бизнес-машина, а 4860 никогда на эту роль не претендовал. IBM с его помощью планировали вытеснить из сферы домашних компьютеров популярные в то время 8-битные игрушки Apple, а также Commodore 64 и, возможно, ZX Spectrum.

*Прим. пер.: в оригинале автор называет его Peanut, юмористично ссылаясь на старый одноименный комикс про детей.


Как мы все знаем, ввиду неудачного дизайна, плохого маркетинга, экономии, а также не самых лучших инженерных решений Junior оказался несовместим с PC и при этом имел довольно высокий ценник, что вынудило снять его с производства буквально через год после выпуска. Так зачем вообще мне с ним заморачиваться?

es19ysauxb9ixvr5rnip3tzfave.jpeg

Во время BIOS POST и проверки 128K памяти

Ответ на этот риторический вопрос, конечно же, заключается в своеобразности и причудливости этого устройства. Но для начала, чтобы все расставить по местам, как я сделал это в статье про IBM PC, должен сказать, что в интернете есть куча материалов о Junior. Так что я не стану перечислять все его изыски и возможности, иначе мы уйдем далеко в сторону от основной идеи. Ну что же, начнем!

nd63_tyjvlc82-m7ayjlcekqn2q.jpeg

После снятия единственной металлической части корпуса: верхней крышки…

Слева направо:

  • преобразователь AC-DC (+5В, +12В, -6В);
  • оригинальная карта расширения 64K RAM;
  • еще одна карта 64K на материнской плате под ней;
  • пустой слот для модемной платы;
  • снизу ИК-приемник для клавиатуры;
  • контроллер дисковода;
  • Qume Qumetrak 142, дисковод половинной высоты 360K — в пластиковом корпусе;
  • внешний слот расширения «sidecar».


▍ Сборка


И здесь у нас одно из основных отличий от IBM 5150: качество сборки. Junior настолько дешев, что создает впечатление сломанной цыганской игрушки. Корпус очень миниатюрен, на фоне чего дисковод выглядит монстром, так как занимает больше половины материнской платы. Металлические компоненты тут использовались только при исключительной необходимости. К ним относятся электронные детали, шина и контакты ввода-вывода, а также дисковод и верхняя крышка корпуса, предполагавшая размещение сверху тяжелого ЭЛТ-монитора. Плюс, возможно, металлом экранированы модули расширения («sidecars»).

Остальное все изготовлено из АБС-пластика и полистирола, ставших за все эти десятилетия весьма хрупкими и готовыми хрустнуть при любом удобном моменте или даже под вашим пристальным взглядом. Сюда относятся стенки корпуса, крепления материнской платы, выступы верхней крышки, разделители между гнездами, да и многое другое. Внутренние карты расширения, включая огромный БП, не имеют крепежных петель и винтов, как это должно быть в нормальном ПК. Они просто торчат и качаются в своих слотах при закрытой верхней крышке. А там, где необходимо экранирование, на пластиковые панели нанесена токопроводящая краска. Тяп-ляп и готово.

vepbnh396epwqrp_wqmillz494u.jpeg

Нижняя панель PCjr. И вот эти две защелкиваемые проставки удерживают весь дисковод и вентилятор. Если бы данный экземпляр побывал в серьезной эксплуатации, решетка бы доломалась окончательно

Даже кожух, в котором размещен дисковод, сделан из пластика. Как он удерживается в нем? С помощью двух пластиковых фиксаторов, которые проходят через отверстия в материнской плате (на фото выше). Вы вдавливаете их при открытой верхней крышке, и в случае неосторожности все это дело вываливается из корпуса. Постараетесь так несколько раз, и в конечном итоге проставки просто отломятся, оставив тяжелый дисковод и вентилятор в свободном движении. Фантастика!

Та же история и с разъемами на задней панели. Пластиковые разделители между ними готовы в любой момент сломаться, стоит лишь надавить на подключенный кабель не с той стороны. При этом их выводы очень легко погнуть по неосторожности. Кроме того, они утоплены и совсем не защищены –, а ведь это не тот случай, когда подключение делается один раз и все, как бывает с внутренними компонентами.

9qlj6lzczh1lltnva0n0ry0hdxq.jpeg

Невыразительное обозначение функционала задней панели

Слева направо:

  • Классический параллельный интерфейс для подключения внешних модулей расширения (sidecar) (Ура!);
  • «J» — 2 порта для джойстиков;
  • «L» — незадокументированное «свободное» гнездо;
  • «K» — гнездо подключения клавиатуры;
  • «LP» — гнездо светового пера;
  • «T» — гнездо RF-модулятора (T = Television);
  • «V» — гнездо для композитного NTSC-видео;
  • «M» — гнездо для опциональной платы модема;
  • «D» — гнездо для TTL-мониторов, в частности для IBM 4863 или для CGA-совместимого аналога, подключаемого через адаптер;
  • «S» — гнездо для последовательного устройства;
  • «С» — гнездо для кассетного устройства;
  • выключатель БП;
  • гнездо сетевого трансформатора AC;
  • «A» — выход 3-канального аудиочипа.


▍ Материнская плата


За время всей недолгой истории PCjr этот компонент практически не менялся. Сердцем машины выступает Intel 8088 с 64К встроенной DRAM. Более дорогие модели оснащались с завода еще одной картой на 64К, а также дисководом и его контроллером.

На плате отсутствует доступный интерфейс ISA — здесь есть четыре слота под пользовательские карты расширения, каждый из которых предназначен для установки одного определенного компонента PCjr и ничего другого. Самая необходимая интерфейсная карта — это преобразователь AC/DC (да, PCjr работает от небольшого сетевого трансформатора переменного тока), далее идут три опциональных слота: для дополнительной карты 64К, под плату модема и для дисковода. Ровно в таком порядке.

Это означает, что единственный способ добавления функциональности в PCjr подразумевал внешнюю шину «sidecar», которая представляла собой составной интерфейс расширения, располагавшийся в правой стороне корпуса. С завода этот ПК обычно шел с одной «боковой коляской», а именно Printer Attachment. При этом небольшого БП хватало максимум для двух таких внешних модулей, далее уже требовался «бустер». Кроме того, пристраивание дополнительных модулей друг к другу вело к расширению корпуса. Внешне эти компоненты были пластиковыми и не предназначались для несения механической нагрузки, поэтому монитор должен был располагаться только на металлической крышке самого Junior, то есть при наличии двух внешних расширений уже не ровно по центру. Теперь вы можете представить, почему они назывались «боковыми колясками»… Такой уж был чудной вид.

Предполагаемая «совместимость» с IBM PC была только на уровне BIOS, то есть подразумевала использование прерываний реального режима. Память и схема порта ввода-вывода Junior полностью отличаются от PC — что-то было добавлено, а что-то, наоборот, убрано.

3ffo-zgpw84ed8qnn5nfe8oswhu.jpeg

Дисковод IBM Qume оснащен механическим замком, который не позволяет его закрыть без дискеты

▍ Графика


Графический интерфейс расположен на плате и, как известно, использует с системой общую RAM… То есть, чем выше разрешение, тем меньше доступной памяти. По этой причине более дешевые модели без дисководов и с 64К RAM ограничивались текстовым режимом 40×25 и графикой только низкого разрешения, что делало их годными для запуска разве что ROM BASIC.

На деле видеоинтерфейс (внутренне называемый «Video Gate Array», не путать с VGA) является улучшенным CGA, использующим тот же Motorola CRTC. При этом он также отвечает за обновление DRAM, вводя дополнительные состояния ожидания. Это значит, что все программы, работающие в диапазоне до 128К, по факту работают медленнее, чем на IBM PC…

Если сравнивать с оригинальным CGA, то в PCjr появилось два новых видеорежима, а именно 320×200 с 16 цветами и 640×200 с четырьмя. В CGA эти режимы ограничивались 4 и 2 цветами соответственно. Я здесь не указываю режим 160×200, 16 цветов, поскольку на деле это хак текстового режима 80×25.

km3lefqiy0ujioyvywrhn_kbeiw.jpeg

Внешний модуль Cluster Attachment, позволяющий подключать Junior к (давно забытой) сети IBM Cluster. Его пустую оболочку я использую для хранения модуля расширения SRAM 640К

▍ Расширение RAM


Поскольку PCjr поставлялся с 64К или 128К памяти, единственным способом ее расширения было использование внешнего модуля, который мог в том числе иметь дополнительные опции для подключения или различные ROM-патчи для исправления странностей Junior. Тем не менее нестандартная схема памяти этого ПК создает реальную дыру в видео-RAM по адресу 128К минус размер видеобуфера (в зависимости от текущего разрешения), поэтому Junior требуется специальный драйвер устройства для перераспределения памяти — в противном случае DOS вообще не увидит внешний модуль RAM, даже несмотря на прохождение проверки BIOS POST RAM.

Обычно встроенную RAM меньше 128К можно зарезервировать для RAM-диска или чего-то подобного, и в простонародье ее называют «медленная память», так как она подвержена медленному обновлению DRAM видеоконтроллера. В Junior все, что выше 128К, включая систему или картриджные ROM, может работать не медленнее и даже быстрее, чем на подобающем 5150, поскольку внешний модуль дополнительной памяти берет на себя аппаратное управление памятью. (Как вариант, можно использовать статическую RAM).

Однако модули расширения RAM нельзя задействовать в самых дешевых моделях Junior, имеющих всего 64К встроенной памяти — их необходимо дооснастить еще одной картой на 64К, обеспечив непрерывность памяти между смещениями 64К и 128К.

Еще есть внутренний баг в диагностике PCjr, вызываемой комбинацией Ctrl+Alt+Ins. Если в системе установлено больше 128К RAM, то проверка памяти медленно проходит через основной экран Diagnostics, переписывает видеобуфер и искажает изображение. Тем не менее, поскольку диагностика выполняется с ROM выше 640К, то система в этот момент не падает, и экран можно снова обновить, сделав выбор и вернувшись в основное меню. Тогда диагностика оперативной памяти продолжится уже за видеобуфером.

ca2wwttnwr5nuufytfhli08ti8s.jpeg
Самодельные кабели для задних гнезд PCjr, выполненные в виде переходников в более стандартные интерфейсы. Правый крайний здесь исключение: он используется для штекера монитора, давая возможность подключить его к классической CGA-видеокарте с опциональным аудио

▍ Коннекторы


Вот как IBM снижали затраты на производство и пытались повысить доход с продаж: хотите подключить что-то сами — покупайте адаптер. Но если сравнивать с конкурирующей «фруктовой» компанией, то Junior не был закрытым черным ящиком, полным проприетарных разъемов и безумных блокировок. Аналогично PC, в нем оставили открытой и архитектуру. Черт, техническое руководство PCjr содержит даже полную разборку системного BIOS…а «сервисный разъем», который позволяет проводить отбраковочные испытания и выполнять продвинутую диагностику, просто замыкает пару линий интерфейса джойстика. То же касается и разъемов шины с их распиновкой — все в руководстве, а интерфейсом выступает классическая гребенка DuPont/Berg 2.54 мм.

oalqsfvgjxnveyfe3fgme_7ow68.png

Оригинальная чиклетная клавиатура слева и ее ревизия справа

▍ Клавиатуры


Без рабочей клавиатуры PCjr превращается в бесполезный предмет интерьера…Ну, почти (прим. пер.: статья-дополнение выйдет 1.04). Здесь реализован отличный от стандартных XT-клавиатур протокол связи, а именно инфракрасный порт. При этом родной клавиатуре также необходимы батареи или дополнительный адаптер для подключения к материнской плате кабелем, в результате чего ИК-интерфейс деактивируется.

Помимо этого, система обрабатывает ее не через IRQ1, а через немаскируемое прерывание. А поскольку оригинальный PCjr не оснащен контроллером DMA и выполняет все операции с диском через режим PIO, то нажатия клавиш в процессе обращения к диску теряются. Изначально Junior поставлялся с чиклетной клавиатурой «Freeboard»… Позднее IBM стали модернизировать их более удобной раскладкой, иногда даже бесплатно.

Клавиши обеих клавиатур работают на резиновых колпачках, нажимаются довольно ватно и имеют большой ход, так что с позиции основательных, щелкающих Model M они могли выглядеть несерьезно, хотя мне доводилось видеть и похуже. Достаточно взглянуть на клавиатуры современных дешевых ноутбуков. При этом к Junior также нельзя было подключить нормальную компьютерную клавиатуру. По крайней мере, не без внешней доработки.

Важный момент — в ИК-соединении наблюдаются проблемы под воздействием промышленного освещения, то есть флуорисцентных ламп, работающих через дроссель и стартер. Тем не менее при использовании современных высокочастотных инвертеров или их аналогов из ламп CFL и разумном удалении клавиатуры от ИК-приемника серьезных сбоев не наблюдается.

Если вы используете ИК-соединение, то на время простоя клавиатуры лучше батареи из нее доставать или, хотя бы, оставлять штекер RJ11 подключенным, чтобы они отключались. Клавиатура работает на КМОП-логике, но все же однажды батареи сядут, что в конечном итоге приведет к «обратному заряду», вызываемому разностью их потенциалов, и последующему вытеканию электролита. А в наше время клавиатуры PCjr уже являются дефицитом.

pduozn8xk-ly-srjv1q6lvlgeha.jpeg

Заглушение шумной работы щеток в дисководе Qumetrak 142, 5.25″. Выполнено все очень скупо — здесь используется коммутируемый двигатель и шпиндель с ременным приводом, хорошо хоть лицевая сторона достаточно узкая, чтобы вмещаться в лицевую панель…

▍ Видео/аудио


PCjr лучше всего сочетается с родным монитором, IBM 4863, который сам является вариацией Mitsubishi AT-1332A, будучи дополнительно оснащен небольшим аудио-усилителем и динамиком. Второй вариант — это использовать TTL-монитор с поддержкой CGA-видео, например IBM 5153, через адаптер. И последний, но не менее значимый, это видеовыход NTSC, к которому можно подключиться либо через RCA-разъем, отмеченный «V», либо с помощью внешнего RF-модулятора через гребенку «T».

Внутри PCjr установлен небольшой пьезодинамик, работающий исключительно как PC-спикер. Он не задействует микросхему вывода 3-канального аудио, SN76489 — ее сигнал нужно брать либо из совмещенной гребенки «Display», либо с RCA-разъема «A». Стоит ли говорить, что композитное NTSC-видео нормально можно использовать только с текстом и графикой низкого разрешения — для высоких разрешений не хватает пропускной способности, и изображение превращается в радужную мешанину. Тем не менее некоторые игры с поддержкой CGA задействуют эту особенность для получения более 4 цветов при работе в композитном режиме…но в PCjr уже изначально поддерживаются 16 цветов.

zv2qkkre8r46gvijxbycvmbfpvw.jpeg

Монитор PCjr установлен на PCsr и подключен к CGA через самодельный переходник. Динамик монитора был подсоединен к карте Ad Lib внутри PC

▍ IBM 4863


Это был цветной монитор PCjr с небольшим динамиком, вышедший вскоре после релиза PCjr. В отличие от CGA-монитора PC — IBM 5153 — этот был разработан специально для установки на Junior. Согласно техническому руководству, 5153 должен был устанавливаться отдельно от системника Junior из-за проблем с ЭМ-наводками. Жаль, что этого монитора у меня нет, но у меня было множество ЭМ-проблем и с родным монитором PCjr, который нарушал работу дисковода. Кроме того, в отличие от 5153, 4863 питался только от 110В переменного тока. Свой я запитываю от первичной обмотки трансформатора, взятого из какого-то советского осциллографа…

ijqoffilbqfzhoku8n3irxzp80g.jpeg

Устранение ЭМ-помех ЭЛТ-монитора с помощью медной пленки и замены Qumetrak на дисковод Tandon с экранированной головкой

Попутно с экранированием справиться с ошибками дисковода при установке монитора на ПК мне помогла установка дополнительного блокирующего конденсатора на декодер шины платы контроллера Junior. (Ну серьезно, ЭЛТ-мониторы по сегодняшним меркам огромны, и я не хотел, чтобы он занимал лишнее место рядом с Junior).

Помимо этого, я просверлил в задней панели 4863 два отверстия, чтобы регулировать фокусировку и максимальную яркость на обратном ходе без разборки монитора, так как «вставлять» основную плату обратно в пластиковые направляющие задней панели — это боль. Я также частично обновил электролиты, поскольку монитор иногда мерцал или утрачивал фокус. Предполагаю, что схема возврата, к сожалению, уже умирает — это может объяснять проблемы с ЭМ-наводками.

5x0m1evk3jf-pipxs28vdtt9qac.jpeg

Внутренности монитора 4863 PCjr

▍ Картриджный и кассетный BASIC


PCjr поддерживает два кастомных картриджа ROM 2×32КБ, устанавливаемые в соответствующие слоты на передней панели. Главное иметь ввиду, что их установка или извлечение вызывает перезагрузку. Одним из особых видов картриджей, за исключением определенных игр и ROM-патчей для исправления причуд системной BIOS, был так называемый Cartridge BASIC. Да, оригинальный PCjr, как и IBM PC, содержит классический кассетный BASIC во встроенной ROM материнской платы, который также запускается после провальной попытки загрузки с дискеты, отличаясь при этом лишь номером версии и предустановленным режимом видео 40×25.

Однако для того, чтобы на PCjr использовать BASIC из-под DOS, в слоте должен быть установлен Cartridge Basic. То есть вызов IBM Disk Basic (BASIC.COM/BASICA.COM) под DOS на PCjr активировал программу, которая обнаруживала присутствие картриджа с BASIC и тут же останавливала систему с ошибкой, если он не находился. Такое поведение резко отличается от оригинального IBM PC, искавшего только кассетный (внутренний) BASIC, который в PCjr тоже имеется, после чего уже разрешал подобающую загрузку Disk BASIC/BASICA (в отличие от клонов PC, которые из-за отсутствующих ROM должны были использовать Microsoft GWBASIC, позднее ставший QBASIC). Что ж, еще одна попытка выудить деньги из пользователей Junior.

Картриджный BASIC также добавляет хук памяти, который обнаруживает, находится ли пользователь в сеансе DOS, и запускается после обнаружения «BASIC» или «BASICA» как инструкция, введенная в командную строку DOS. Это означает, что он даже не пытается обнаружить два исполняемых файла на дискете DOS — на Junior исполняемый файлы Disk BASIC ни делают ничего, кроме как обнаруживают присутствие картриджа с BASIC в слоте.

t1w9dojqlm6dckwnusw-7kvygqk.jpeg

IBM Cartridge BASIC в 27256 32K PROM. Cassette BASIC PROM, как и в IBM PC, устанавливалась на материнскую плату.

Когда картриджный BASIC установлен, он вступает в работу вместо кассетного BASIC и загружается автоматически, если на дискете нет операционной системы. Однако, аналогично кассетному BASIC, он позволит загружать и сохранять приложения BASIC только на кассету. И вот самое интересное: если вы запустите картриджный BASIC на Junior из-под DOS, то получите тот же экран и командную строку, но на этот раз со скрытой фичей, то есть возможностью загружать и сохранять приложения BASIC на дискету. И единственный путь обратно в DOS — это перезагрузка компьютера.

В довершение ко всему, при попытке запустить картриджный BASIC в сеансе DOS, где запущен драйвер устройства для использования дополнительной RAM свыше 128К за счет перераспределения памяти, система падает с ошибкой «Out of Memory». Единственный способ заставить картриджный BASIC работать из-под DOS с подключенным внешним модулем расширения памяти — это запустить сеанс DOS без драйвера устройства дополнительной памяти.

И, наконец, кассетный ROM BASIC содержит демо Keyboard Adventure, которое предполагалось для обучения детей работе на клавиатуре и должно было запускаться нажатием Esc сразу после провала загрузки с дискеты. Но при наличии в слоте картриджного BASIC кассетный BASIC не загружается, и Adventure запустить не удается. Ну вот, мои дети так и не научаться пользоваться клавиатурой — верните мне деньги.

go-45-6u3kbggyc-z3mjan03h54.jpeg

FreeDOS, загруженная с виниловой пластинки на PCjr. Скриншот сделан через композитный NTSC-выход. Можете наблюдать вызванную низкой пропускной способностью ту самую «радужную мешанину» в разрешении 80×25

▍ Загрузка с виниловой пластинки


Подобный эксперимент я проделывал с IBM PC, и он вполне сработал с Junior, поскольку ПО кассетного модулятора-демодулятора является просто прямой копией с 5150. Здесь я изменил плату картриджного BASIC, впаяв пустой DIP-сокет в качестве второй ROM вместо установки этой ROM в неиспользуемый слот расширения, как в IBM PC.

Самодельный кабель для соединения гнезда «C» и кассетного разъема DIN можно увидеть на фото выше. Кроме того, код PROM винилового загрузчика я изменил под сосуществование с картриджным BASIC, а также для перемещения образа винилового диска намного выше видеобуфера.

Тем не менее FreeDOS не нравится, как в Junior реализован способ обработки прерываний, да и дыра памяти в смещении 128К также оставляет желать лучшего. Поэтому после пары нажатий клавиш память утекает через видеобуфер, и сразу же идет сбой.

Использование интерфейса светового пера в PCjr Diagnostics и Micrografx PC-DRAW для DOS


▍ Интерфейс светового пера


Это, пожалуй, один из малоизвестных интерфейсов для PCjr, но вполне привычный для CGA-карт, использующих контроллер CRTC. Обычно эти устройства подключались внутренне через штыревой разъем. Светового пера у меня не было, поэтому я сделал его подобие из сломанной ручки Bic, использовав фототранзистор, TESLA KPX 81, микровыключатель, медное экранирование для отвода статики от монитора в землю и переходник jack-PCjr.

1iv0kycylrhziwrv3scjinuzo-q.gif


Световое перо в Windows 1.01

Работает, но должен сказать, что ржавый АК-47 будет точнее стрелять с 300 метров, чем эта хреновина срабатывать по экрану. Кроме того, поскольку работает она по принципу определения того, какая строка сейчас сканируется на люминофоре, то ей требуется ЭЛТ-монитор с задранной до максимума яркостью. Плюс не очень уж удобно держать руку на выпуклом мониторе, ну если только вы не мечтаете развить хватку как у гориллы.

tybng3viowh8a-nxg_7lkjdidjk.png

Мое самодельное световое перо (пунктирная часть) + небольшой регулируемый компаратор для повышения чувствительности при работе с низкой яркостью. Тем не менее компаратор привносит в импульс задержку, поэтому срабатывания регистрируются со смещением вправо. При этом он также добавляет эффект кляксы

▍ 5150CAXX


Да, Junior, как и 5150, будет запускать DOS-программу с кассетного интерфейса. Вот пример: загрузка DOS-игры MS. Pac Man, которая была сохранена на кассету через 5150CAXX с помощью загрузчика кода BASIC (опция WB). Подробнее об этом в оригинальной статье (англ.).

-yvknqjcl5gwyypoeiaj24svnt4.jpeg

Загрузка MSPACMAN.COM, сохраненного в DOS с помощью 5150CAXX, с магнитофона из-под Cassette BASIC на PCjr

oug5kh6sjydt9llengsiebnp40w.png

© Habrahabr.ru