[Перевод] Как устроен Philips VideoWRITER. Сначала фотки железа, потом немного занудства

23ak-weziuwj2tul3zohv_zjyyu.jpeg

Устройство для редактирования и печати текстов WideoWRITER было выпущено компанией Philips в 1985 году. Оно выполнено на Z80-совместимом процессоре и содержит 16 кБ ПЗУ и столько же ОЗУ (как позже выяснилось, ПЗУ больше). Для сохранения документов в нём предусмотрен 3,5-дюймовый дисковод. Стать счастливым обладателем этого «комбайна» (там ещё и принтер встроенный) можно было за 799 долларов.

Экран оранжевого ЭЛТ-монитора заметно шире обычного. На него помещается не только окно с редактируемым документом, но и расположенное справа от него меню. Там же отображаются подсказки, в том числе о назначении функциональных клавиш. Документ всегда отображается светлыми символами на тёмном фоне, меню — наоборот. В левом нижнем углу накладки на экран нанесено обозначение: DDS — Dual Display Screen…

Редактор довольно простой, даже Comic Sans от него не ждите. Шрифт всего один, доступны стандартные атрибуты: полужирный, курсив, подчёркнутый, верхний и нижний индексы. И стандартные способы выравнивания текста. Ещё есть линейка и символы перевода строки.

Принтер печатает на обычных листах А4 при помощи термопереноса. Если нет специального картриджа — согласно статье в Википедии, можно печатать на термобумаге. Автор очень удивился, что устройство всё ещё печатает после стольких лет, проведённых на жарком чердаке.

man832tcprf_uz3jwlf0wjqaerm.jpeg

Клавиатура малогабаритная, но печатать на ней удобно. Специальные клавиши на ней позволяют переключать атрибуты шрифта, отменять действия и проверять правописание, если есть дискета со словарём. Клавиатуры подключается разъёмом RJ14 — суть та же, что у RJ11 и RJ45.

Документы хранятся на 3,5-дюймовых дискетах. Машина при включении сразу ищет дискету, а если не может «понять», что там, предлагает её отформатировать. Скорее всего, формат несовместим с применяемым на PC. А сколько килобайт там помещается, 360 или 720?

А теперь пора поднять верхнюю крышку и посмотреть, что под ней. Первым делом просто рассмотрим платы, пока не углубляясь в их устройство. Сначала разрядим кинескоп. Берём отвёртку, заранее соединённую с общим проводом при помощи «крокодила», и, держа её за изолирующую ручку, подсовываем жало под присоску. Хотя на самом кинескопе написано: дуговым разрядом не разряжать, подключить высокоомный вольтметр между анодом и шасси. И, типа, всё разрядится постепенно. Возможно, ТДКС «нежный».

q3_dquewjyizmthijcqas_4u838.jpeg

Чтобы снять БП, надо открутить всего два винта. Сейчас автор снимает этот БП второй раз. Первый был, когда в нём лопнул конденсатор, было много дыма, но автор нашёл такой же, впаял, и всё заработало. Это был не электролитический конденсатор, а вот тот, прямоугольный, сверху в середине. Который теперь красный.

7vtx2mrvppn7x52dbs5kqxnpczo.jpeg

Плата монитора весьма малогабаритна по сравнению с другими аналогичными платами тех лет. Даже платы кинескопа нет — просто панелька (что в монохромных мониторах не такая уж и редкость). На плате имеются несколько органов настройки, а также 10-контактный разъём для подключения к материнской плате. Интересно, что там за цоколёвка? И зачем микросхема 556 — два таймера 555 в одном корпусе? Генераторы «пилы» сразу для кадровой и строчной развёрток?

myupltxbmvuwk53kak4fq62h_xq.jpeg

Плата принтера расположена прямо под собственно принтером. От неё идёт шлейф к материнской плате, а также кабели к двигателям, кнопкам протяжки бумаги, регулятору контраста при печати, печатающей головке, концевикам и датчику бумаги.

flivzd3hwhgego1dssoictoigzm.jpeg

Материнская плата экранирована со всех сторон. Только для двух микросхем ПЗУ в экране проделано квадратное отверстие:

cd4wlq6hzkzymm94ahkumb41ess.jpeg

Снимем экран и посмотрим, что интересного на материнской плате.

wqkykv4xqujsnmrp5o1qhvv49ew.jpeg

D8156HC-2 — контроллер ввода-вывода. Предположительно, управляет принтером, так как расположен вблизи разъёма принтера в левом верхнем углу. Микросхема содержит три порта: два 8-битных и один 6-битный, 14-битный таймер и 256 байт статического ОЗУ. Позже посмотрим, для чего нужен каждый из портов, и действительно ли микросхема управляет принтером. Так же она же, скорее всего, «общается» и с клавиатурой. Микросхема использует совмещённую шину адреса и данных. Оказалось, микропроцессор — тоже.

HN27C256–20 — ПЗУ на 32 килобайта с шириной шины данных в 8 бит. Таких микросхем две, получается 64 килобайта. Значит, в Википедии неправильно сказано, что ПЗУ всего 16 килобайт. Что же, ПЗУ займёт всё 64-килобайтное адресное пространство Z80? А там ведь ещё и 16 килобайт ОЗУ. Значит, есть какое-то переключение страниц. Тоже посмотрим…

NSC800N-3I — микропроцессор. С Z80 он только совместим, а цоколёвка — совсем другая. Слева — просто удивительная совмещённая шина адреса и данных. Нижние 8 бит шины адреса используются также в качестве шины данных. А чтобы отличать адрес от данных, имеется вывод ALE. Единица — значит, на этих нижних восьми битах — часть адреса. А справа — одни сигналы. Тот же ALE, а также Read Enable, Write Enable, выбор между памятью и портами, и так далее. Конечно, с таким микропроцессором работать сложнее, чем с обычным Z80 или его клоном. Работает он, по даташиту, на частоте до 2,5 МГц, значит, частота 5-мегагерцового кварца где-то делится на два. Сравните цоколёвки этого нестандартного процессора и обычного Z80:

fyalf7_bcfv8qjlasjkyir5dsxc.png

HM48416AP-15 — динамическое ОЗУ на 16 килополубайт. Две таких микросхемы образуют ОЗУ на 16 килобайт.

WD1770-PH — контроллер дисковода фирмы Western Digital. Минимум внешних компонентов, совместимость с разлиными форматами хранения данных на дискете. В общем, в рекламе не нуждается.

NCR 7250 PY — видеоконтроллер? Похоже, он, потому что больше ничего претендующего на эту функцию на плате нет.

HM6116–4 — статическое ОЗУ на 2 килобайта. В общем, видеопамять. Видеорежим здесь только текстовый, так что больше и не надо. Хотя… Тут же не 80×25, тут строка шире 80 символов, плюс атрибуты. Ну, значит, помещается.

Итак, мы выяснили, что в машине 16 килобайт ОЗУ и 64 килобайта ПЗУ, и где-то должно быть реализовано переключение страниц. Прогуляемся по плате с мультиметром и зарисуем всё, что увидим.

Сначала поищем сигналы Chip Select. Начнём с вывода /CE той микросхемы ПЗУ, у которой на наклейке напечатана буква A. Оказывается, он подключён к выходу элемента И. Так, куда там идут его входы? К двум выходам микросхемы 74139, содержащей два дешифратора с двумя входами и четырьмя выходами. Нас из них только один интересует:

o4pa0syzk6ksdko1ov788sljbj0.jpeg

Сигналы A14 и A15 поступают с микропроцессора на её входы, значит, память делится на четыре блока по 16 килобайт. На вход /E (enable) с микропроцессора поступает сигнал /M (memory select), поэтому микросхема 74139 активна, когда микропроцессор требует доступа к памяти. Получается, распределение адресного пространства такое. ПЗУ «A» выбрано, когда у 74139 единица либо на выходе /Q0, либо на выходе /Q1, ПЗУ «B» выбрано при единице на /Q2, ОЗУ — при единице на /Q3. Но с ОЗУ тоже не всё так просто, дальше разберёмся. Итак, что выбирается при разных сочетаниях сигналов на A14 и A15:

8exbmqvdc5qd4wnf4sgadxlgmkw.jpeg

Переходим к шине адреса. Как мы уже выяснили, там всё сложнее, чем в системах с обычным Z80. Оказывается, чтобы отделить адрес от данных, здесь применена 8-битная защёлка 74373. Её входы данных подключены к линиям AD0 — AD7, а вход защёлкивания — к линии ALE. Когда на ALE появляется единица, в 74373 записывается нижняя половина адреса. А вход /OE всегда соединён с общим проводом.

Далее «шиной адреса» будут считаться выходные линии 74373 в сочетании с верхними линиями собственно шины адреса, где данные не присутствуют никогда. Ну, на рисунке всё показано:

fv8vlt9uas1eei5ljykqchcmco0.jpeg

Теперь посмотрим, как подключены микросхемы ПЗУ. С подключением ПЗУ «A» ничего необычного не наблюдается. Просто линии A0 — A14 рассмотренной ранее шины «чисто адреса» (после 74373). К ПЗУ «B» подключены только линии A0 — A13. А что с A14? Может, эта линия идёт к общему проводу или плюсу питания, и половина ёмкости не используется? Нет. Она идёт к выводу 39 (PC2) контроллера ввода-вывода A8156. Вот всё и стало понятно с переключением страниц. Половинки ПЗУ «B» можно переключать программно.

ОЗУ, как мы выяснили, выполнено на двух микросхемах динамического ОЗУ по 16 килополубайт каждая. Каждый байт ОЗУ хранится сразу в двух микросхемах, один полубайт в первый, другой — во второй.

Для выбора адреса необходимо сначала выбрать строку, затем столбец. Для этого применены две микросхемы 74157 — четыре селектора данных с двумя входами и одним выходом. А теперь вернёмся к первой схеме. Кроме выхода /WR, там есть ещё один выход, идущий на вход выбора первой микросхемы 74157. Когда на /Q3 нуль, выбран адрес строки, а когда там единица — адрес столбца:

e7uvd0tqatktdqsvzx3ynvtu7l8.jpeg

Пройдясь по печатным проводникам, автор выяснил, что лишь шесть из восьми выходов двух микросхем 74157 используются как адреса MA1 — MA6 для микросхем ОЗУ. А линии MA0 и MA7 подключены прямо к линиям A6 и A7 шины адреса. У микросхем 48416 восемь строк и шесть столбцов, поэтому переключать требуется только шесть линий, две других могут быть подключены непосредственно к линиям шины адреса, так как они не влияют на выбор столбца.

frdlmv_-zpb6aoamhnp1rq81flo.jpeg

Порядок подключения линий к шине адреса не подчиняется никакой логике. Но всё работает. Может быть, так просто плату проектировать было удобнее?

Ещё интересно, как микросхемы 74157 каскадированы: выход 4Y первой идёт на вход выбора второй, а выход 4Y второй — на линию /CAS:

ovysdy69k_ss__1_pdbdud1-qvw.jpeg

В отличие от ПЗУ, у динамического ОЗУ нет отдельной линии /CE. Как автор понял, эти микросхемы обеспечивают чтение или запись, когда на /CAS нуль. Ну, так оно и есть: нуль на /Q3 — значит, нуль и на /CAS. Адрес строки ОЗУ формируется, когда на линии ALE нуль, и когда микропроцессор не сброшен.

С адресным пространством разобрались, перейдём к периферии. Автор ещё прошёлся по плате с мультиметром и получил такую схему:

8xekkf5-kojyhecysfxqh-xbdwk.jpeg

В левом верхнем углу показано, откуда берутся сигналы /RD и /WR для видеоконтроллера (VDP). Обратите, что для VDP сигнала chip select не видно. Значит, единственный сигнал, похожий на /CS для видеоконтроллера — это сигнал ALE от микропроцессора. Получается, что видеоконтроллер поступают данные вообще обо всех операциях ввода-вывода. На этом концентрироваться не будем, посмотрим, что там с остальными устройствами ввода-вывода.

Остальные адреса ввода-вывода дешифруются второй половиной микросхемы 74139 — той самой, первая половина которой переключает страницы адресного пространства. Этот дешифратор выбирается, когда производится операция ввода вывода, а на A7 нуль. Похоже, линия A7 отвечает за выбор между видеоконтроллером и остальной периферией. A6 и A5 определяют, какое устройство будет выбрано дешифратором:

kota4uqclmnzqkbs1vtrbthxrq4.jpeg

Может ли A7 и быть линией chip select для видеоконтроллера, причём выбран он тогда, когда там единица? Без даташита на NCR 7250 не определить, но это вполне правдоподобно, если воздействие линии ALE на видеоконтроллер не реализовано как-нибудь совсем уж необычно.

Далее автор провёл реверс-инжиниринг подключения сигнальных линий микропроцессора:

kk5skpbzc-ybyrm_ffy0zx15ktm.jpeg

На этой же схеме показан способ формирования сигнала сброса. Конденсатор при включении заряжается с задержкой, при выключении разряжается быстро. Сигнал сброса /RESET IN инверсный, он поступает на микропроцессор, а тот формирует прямой сигнал RESET OUT для сброса различной периферии.

Линия немаскируемых прерываний /NMI работает так же, как на обычном Z80. Когда прерывания разрешены, нуль на этой линии приводит к вызову процедуры обработки прерывания по адрему 0×66. В данном случае сигнал /NMI поступает с выхода таймера IC25. Прерывание происходит при каждом переполнении этого таймера.

У микропроцессора NSC800N есть ещё и вход /INTR, при нуле на котором происходит переход на адрес 0×38, но в VideoWRITER этот вход не задействован.

Ещё есть три сигнала перезапуска /RSTA, /RSTB и /RSTC, вызывающие переход, соответственно, на адрес 0×3C, 0×34 или 0×2C. Из них здесь задействованы только первые два, и управляются они контроллером дисковода. Сигналом /RSTA контроллер дисковода сообщает микропроцессору о состоянии своего регистра данных, а сигналом /RSTB — о завершении выполнения команды.

А теперь ещё об одной линии — S1. Вместе с линией S0 она определяет состояние шины. Таким образом у контроллера дисковода выбирается режим чтения или записи. Но почему линия S1 используется вместо /RD и /WR только контроллером дисковода? Непонятно. Линии S0, S1 и IO/M вполне могут использоваться для выбора между режимами чтения и записи применительно к памяти и периферии, но применение других линий даёт тот же эффект. Может, разработчики перепробовали несколько вариантов и решили остановиться на том способе дешифрации режима чтения-записи, который применён в обычном Z80? В любом случае, согласно даташиту на NSC800N и показанной ниже таблице, сигнал S1 может быть сигналом чтения из периферийных устройств, но только если имеется ещё и сингал выбора, идущий непосредственно к устройству:

u5wffss0o_vaauju7ykq9upbojo.jpeg

Устройство в работе, видео снял другой автор — Grr_I’m_Here:

© Habrahabr.ru