В 80-х годах в журналах СССР печатались схемы компьютеров для самостоятельной сборки. Это были очень простые компьютеры, которые были больше предназначены не для игры или работы, а для обучению цифровой схемотехнике. Сейчас эту нишу занимает Arduino и более современные микроконтроллеры. Схемы и описание компьютера «ЮТ-88» были напечатаны в 1989 году в журнале «ЮТ для умелых рук» («Левша», приложение к журналу «Юный техник», 1989 год, № 2-8). А позже еще в нескольких книжках. По одной из таких книг я и буду собирать этот компьютер.

Эту книгу вы можете скачать тут. На обложке сверху слева фотография компьютера Микроша с телевизором. Наверное, авторы предлагали использовать корпус Микроши для компьютера ЮТ-88. Левее фото калькулятора, это одна из конфигураций компьютера. Вместо телевизора и клавиатура несколько кнопок и семисегментных индикаторов. Фото снизу это платы компьютера ЮТ-88, та же конфигурация с кнопками семисегментными индикаторами.

Я буду собирать конфигурацию компьютера с телевизором и клавиатурой. В книге нет этой схемы. Книга написана так, что читатель должен собрать сначала компьютер в корпусе калькулятора, а потом доработать его до полноценного компьютера. Я хочу этот шаг пропустить, поэтому я сразу вычеркиваю из первой схемы то, что не потребуется в будущем. Не нужное я пометил серым цветом:

Я заменю некоторые микросхемы на чуть более современные версии. 8 битный буфер КР580ИР82 я заменю на К555АП6. Эти микросхемы работают идентично. Просто ИР82 греется как утюг. Две ПЗУ общим объемом 2 Кб я заменю на ПЗУ объемом 64 Кб (или 32, 16 Кб, у них идентичная цоколевка). Тогда я смогу записать в ПЗУ несколько интересных программ. Еще я вычеркнул из этой схемы 1 Кб ОЗУ, две микросхемы статической памяти, потому что следующим по счету модулем я буду собирать модуль динамического ОЗУ на 64 Кб. Вот он:

В этом модуле используется 3 микросхемы однократно программируемых ПЗУ. Они используется в качестве мультиплексоров. Т.е. они прошиты числами 0,1,2,3,4,5... Лично мне жалко тратить эти одноразовые редкие микросхемы на такую ерунду. А еще у меня нет программатора для нет. Поэтому я заменю из на обычные мультиплексоры К555КП2.

Так же я решил разместить на этой плате параллельный порт. В оригинальном компьютере параллельный порт размещен на плате видеоадаптера. К этому порту подключена клавиатура. Я же хочу использовать этот порт для отладки компьютера без видеоадаптера. Иначе у платы процессора и памяти не будет никакого способа взаимодействовать с внешним миром. А еще я подключу к этому параллельному порту магнитофон и управление ПЗУ.

Итого у меня получилась вот такая схема. Схему я рисовал в программе KiCAD.

Справа снизу пунктиром обведен модуль пошаговой отладки. Он позволяет остановить работу компьютера. При любом обращении к памяти или оборудованию, процессор остановится и будет ждать начатия на кнопку. На выходах процессора, ПЗУ и прочей логики все сигналы замрут. Схему можно будет отлаживать обычным тестером.

Собирать схему я буду так, как бы собирали её в 1988 году. На советских макетных платах. А что бы не утонуть в куче соединительных проводов, провода я буду закреплять на специальных стойках. Это не моя идея, я такое видел в советской технике.

Это не обычный трансформаторный провод. Это ПЭТВЛ-2. Расшифровывается как: провод эмалированный, теплостойкий высокопрочный луженый, двойная толщина изоляции.

Я собирал минимальную схему: задающий генератор, процессор, буферы шины данных и ПЗУ. В таком виде компьютер уже может выполнять программу.

В ПЗУ я записал простейшкую программу, которая в цикле подает 0 и 1 на ножку EI процессора:

start:
ei
di
jmp start

Голубой щуп осциллографа на тактовый сигнал процессора, желтый щуп на ножку EI:

Работает!

День 2

Теперь у компьютера есть оперативная память. Я спаял модуль динамического ОЗУ. Динамическое ОЗУ создает много помех по питанию. Из-за этих помех компьютер может глючить и перезагружаться. Самое время впаять в плату много конденсаторов, которые будут подавлять эти помехи. Так как я собираю ретро компьютер, я решил использовать ретро конденсаторы. Это драгоценные конденсаторы, которые можно сдать в пункт приёма и выручить денег на пару пару бутылок водки и блок сигарет.

Я не нашел много одинаковых драгоценных конденсаторов :(. Поэтому будем впаивать невзрачный китай. Я впаял параллельный порт. Теперь у компьютера 24 GPIO вывода, через которые моя программа сможет общаться с внешним миром.

Я написал программу проверки динамической памяти. Работает ли? Эта программа выводит текстовые сообщения через программный UART. Я взял обычный ноутбук, обычный переходник USB-UART TTL 5V, подключил UART к плате компьютера ЮТ-88. На ноутбуке запустил minicom, это самая обычная программа терминал. Её можно найти в репозитрии Linux Ubuntu. А если у вас Windows, то вы можете использовать бесплатную программу putty. Я на экране ноутбука я увидел сообщения своей программы:



Это сообщение расшифровывается так: Я записал в память число 0x55, а обратно прочитал 0x5D. И это было по адресу 0x90BF. Отличается 3-й бит, то есть неисправна 3-я миросхема памяти (если считать с нуля). Меняю её и получаю отличный результат. Память работает.

Видеоадаптер я буду собирать на следующей плате. Для подключения видеоадаптера я установил IDC-разъем. Для того, что бы надежно припаять провода к этому разъему я изготовил маленькую плату методом процарапывания текстолита.



На всякий случай скажу, что подобные разъемы были достаточно популярны в СССР. Подобные разъемы на плате советского компьютера.

День 3

Компьютер ЮТ-88 подключался к телевизору, как и почти все восьмибитные компьютеры.

Советские телевизоры того времени имели всего одно разрешение экрана и одну частоту кадров. Это сильно упрощало схему видеоадаптера и жизнь программиста. Частота кадров 50 Гц. В кадре 312,5 строк. Именно дробное число строк, так сделали ради упрощения схемы еще во времена ламповой техники. Половинка строки позволяет очень просто сделать чересстрочную развертку. Это когда в одном кадре телевизор отображает четные строки, а в следующем нечетные. В кадре получается 625 строк, а честная частота кадров 25 Гц. Это очень мало, поэтому в восьмибитных компьютерах всегда использовалось целое кол-во строк. Передача целого кол-ва строк (в большинстве случаев) отключает чересстрочную развертку. В древних телевизорах точно отключает, а вот в новых цифровых телевизорах не всегда. Потому что не стандарт.

Из передаваемых 312,5 строк на экране телевизора отображается от 240 до 288 строк. Во первых, это сделано для упрощения схемы телевизора. Во вторых, изображение на старых телевизорах искажалось, меняло размер и края изображения тряслись как флаг на ветру. Что бы не пугать этим зрителя, изображение делалось значительно больше физического экрана и экраном же физически обрезалось. То есть, внутри кинескопа электронный луч продолжал рисовать изображение за пределами светящейся части экрана, но зато края изображения оказывались ровными.

С количеством строк разобрались. Их примерно 256. А сколько же точек в строке? Прямого ответа на этот вопрос нет. Старые телевизоры были аналоговыми. При передаче изображения по проводу или по воздуху строка изображения не разбивалась на отдельные точки, а передавалась непрерывно. Количество различимы точек в строке зависит от конкретной модели телевизора. Лучшие цветные телевизоры различимо отображали 400 точек в строке, а чернобелые 800 точек. Именно отсюда пошли два разрешения первых компьютеров. Цветное поменьше по ширине и чернобелое побольше. В компьютере БК0010.01 поддерживались разрешения 256x256 и 512x256, а в IBM PC 320x200 и 640x200. Куда делись 56 строк у американцев? А у них такой стандарт, строк меньше, но зато частота кадров 60 Гц, глазам приятнее.

Если же мы хотим получить квадратный пиксель, то в строке должно быть 384 точки. Это просто вычисляется из пропорции экрана старого телевизора 4/3. 288 * 4 / 3 = 384.

В компьютере ЮТ-88 единственное разрешение экрана 384x300 точек. А почему 300 строк? Так сделали для простоты схемы, лишние строки передаются компьютером, но не отображаются на экране телевизора. Фактически стандартные программы используют 250 строк, а вы можете попробовать отобразить дополнительные строки. Вдруг ваш телевизор справится.

Видеоадаптер ЮТ-88 не графический, а текстовый. На экране отображается 64x30 символов (знакомест) размером 6x10 точек. Знакогенератор на 128 символов фиксированный, программист не может его изменить. Знакогенератор не содержит строчных букв. Цвета всего два: черный и белый. Каждый символ можно инвертировать, т.е. отобразить черным на белом фоне.

Перед вами полная схема видеоадаптера ЮТ-88:

Давайте рассмотрим часть схемы, которая отвечает за разрешение экрана:

И я сразу внесу изменения в схему. Авторы компьютера использовали пару элементов И-НЕ и НЕ, что бы получить обычный элемент И. Во первых, у меня сейчас нет нужных микросхем. Во вторых, замена пары элементов на один элемент позволит упростить схему без изменения её сути. Например, вот такие сочетания элементов И-НЕ + НЕ заменяются на элемент И.

Я перечертил эту схему в программе KiCAD:

Из модуля процессора в модуль видеоадаптера приходит тактовая частота 16 МГц, которая триггером DD1.1 делится на 2. Полученные 8 МГц это частота точек. Каждые 1/8 микросекунды из компьютера в телевизор передается следующая точка. Далее счетчик D12 отсчитывает до 6 и передает импульс на следующий счетчик. Число 6 это ширина символа в точках. На выходе этого счетчика у нас получается частота символов 1333333 Гц. Далее счетчики D13 и DD14 считают положение символа в строке, координату X. Счетчики считают до 84. При этом в строке видимых 64 символа, а остальное не отображается по стандарту. Сами по себе счетчики считали бы до 128, но микросхема DD21.1 сравнивает координату с числом 84 и как только координата достигает этого числа, счетчики D13 и D14 сбрасываются в ноль. Получается, что частота строк 1333333 / 84 = 15873 Гц. Эта частота на 1,5% не соответствует стандарту 15625 Гц. Это не очень хорошо, потому что это может привести к преждевременному выходу кинескопного телевизора из строя. Потому что ради простоты схемы телевизора всё сделано так, что при изменении частоты строк изменяются все критически важные напряжения телевизора, например, напряжение накала кинескопа, высокое напряжение 25 тысяч вольт, напряжение кадровой развертки.

Далее счетчик DD24 отсчитывает до 10, это высота символа. Далее счетчики DD16 и DD12 отчитывают до 32, это номер строки. Итого получается 320 строк в кадре, что больше стандарта, но телевизоры терпят.

Далее очень интересный вопрос - синхроимпульсы. Что бы телевизор правильно определил начало строки и кадра в передаваемом видеосигнале, видеоадаптер должен правильно сформировать строчные и кадровые синхроимпульсы. Синхроимпульсы должны быть в нужное время и должны быть нужной длительности. Редко какой советский компьютер правильно их формировал. Поэтому изображение часто оказывалось за краем экрана. В крайнем случае можно быть подключить переменные резисторы в телевизоре… Только в современных телевизорах их нет. Телевизоры четко следуют стандарту и иногда просто отказываются показывать некорректный видеосигнал. И я глядя на схему вижу, что импульсы сформированы не правильно. Вот часть схемы формирующая импульсы.

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

Строчный синхроимпульс может быть сформирован правильно, а может и нет. Проверить я это не смогу. У меня нет микросхем К155ИМ3 для сборки этой части схемы. К155ИМ3 это 4-х битный сумматор. Авторы использовали сумматор! в схеме формирования синхроимпульса. Я заказал несколько микросхемы К155ИМ3, но все они оказались неисправными. Заказывать второй раз я их не буду, я сделаю схему проще. Использование этой редкой и неоправданно сложной для этого узла микросхемы только всё усложняет.

Я объясню как оригинальная схема работает. Микросхема D10.2 сравнивает координату X выводимого на экране символа с числом 78. Однобитная часть счетчика DD14 используется как триггер. Этот счетчик-триггер устанавливается в единицу, когда координата X равна 78. Сбрасывается этот триггер в конце строки, когда координата равна 84 или 0. В общем, на выходе триггера единица, когда координата X от 78 до 83. Выход этого триггера-счетчика используется как строчный синхроимпульс, но он должен начинаться в 69 позиции, а заканчиваться в 74-ой. Для исправления этого авторы с помощью сумматора К155ИМ3 из координаты X вычли 8 и далее новая координата X' используется для формирования сигнала гашения и адреса чтения видеопамяти.

Я хочу просто сравнивать координату X c 69, что бы установить триггер, а потом сравнить координату X c 74, что бы сбросить триггер и никакие сумматоры не нужны. Более того, не потребуется добавлять новых микросхем. Хватит неиспользуемых частей уже установленных микросхем.

А еще, если на верхней схеме выкинуть инвертор DD20.3, то и элемент DD9.4 оказывается не нужен. Эти элементы выполняют противоположную работу полностью компенсирую друг друга.

Ухх... давайте паять.

День 4

Прошлый день сборки закончился тем, что пара купленных мной микросхем К155ИМ3 оказались неисправными. Микросхема К155ИМ3 это 4-х битный сумматор, который используется в схеме формирования строчного синхроимпульса. Строчный синхроимпульс это сигнал, который объясняет телевизору, где в передаваемом видеосигнале находятся начала строк. Схема эта работает не совсем правильно, поэтому её все равно надо было бы переделывать, поэтому я решил переделать схему без использования этой микросхемы.

Передаваемая телевизору строка пикселей отображается не полностью. Отображается чуть больше 3/4 строки, а оставшаяся часть должна содержать черный цвет. Примерно посередине этой части передается строчный синхроимпульс. Почему примерно? Есть же диаграмма.

Потому что телевизоры показывают меньше, чем указано на этой диаграмме. В схеме компьютера Специалист длина строки равна 512 точкам, а на экране мы видим только ~384 точки. На некоторых телевизорах видно еще меньше. Судя по диаграмме выше на экране должно отображаться 512 / 64 * 52 = 416 точек, но это не так.

В схеме компьютера ЮТ-88 строка имеет длину 84 символа. На экране отображается 64 символа, а с 64 по 84 символ передаётся чернота, 20 символов подряд. Во многих компьютерах синхроимпульс передавался во второй четверти этой черноты. На диаграмме выше примерно тоже самое. Длительность синхроимпульса получается 20 / 4 = 5 символов, а положение 64 + 20 / 5 = 69 символ. Я соорудил вот такую схему.

Схему формирования кадрового синхроимпульса, объединения синхроимпульсов пока я оставил без изменений.

Паяю, включаю, смотрю осциллографом строчные синхроимпульсы. Примерно 15 килогерц.

И кадровые импульсы. Точно 50 герц.

Что бы увидеть результат на экране монитора, я впаял в плату микросхему К155ИР3. С выхода этой микросхемы изображение подается на монитор. Не на прямую, а через простую аналоговую схему из резисторов, диода и транзистора. Эта схема смешивает изображение и синхроимпульсы. На выходе аналоговой схемы получается 3 уровня напряжения: 0 В это синхроимпульс, 0.3 В это черный цвет, 1 В это белый цвет. Напряжения указаны примерно.

К155ИР13 это сдвиговый регистр. Он получает на вход 6 пикселей по 6 проводам, а затем передает их друг за другом в телевизор. На этот регистр подана частота 8 МГц, именно с такой скоростью он будет выталкивать из себя пиксели. Загружать в себя 6 пикселей регистр будет каждый 6-ой такт, когда вытолкнет всё, что в него загрузили. Эти 6 пикселей должны поступать из ПЗУ, но пока я не впаял ПЗУ, я замкнул входы К155ИР13 так, что бы каждый символ отображается как 110111.

Элемент DD101C формирует импульс загрузки очередных 6 точек символа в сдвиговый регистр.

Паяем, включаем, смотрим.

Изображение встало почти по центру. Отлично. А как проверить центровку изображения по вертикали? Как отличить первую строку от второй? Нужно отобразить на экране что то сложнее линий, поэтому я впаял ПЗУ содержащее изображения символов.

В оригинальной схеме в микросхему ПЗУ были записаны изображения символов размером 6x8 пикселей, при том, что размер символа на экране был 6x10 пикселей. Нижние две строки символа всегда отображались пустыми. Вот оригинальный шрифт ЮТ-88.

Из-за этого вертикальные линии и псевдографика отображались разделенными на строки. Это было сделано точно не для экономии ПЗУ, потому что половина ПЗУ в оригинальной схеме просто не использовалась. Зачем? Непонятно. Я увеличил высоту шрифта до 6x10, дорисовав недостающие части символов. Дополнительные строки позволили нарисовать красивее символы: запятая, точка с запятой, Ц, Д, Щ... А еще я нарисовал в неиспользуемых клетках символы рисования рамок. Почему рамок? Если кто то напишет программу для ЮТ-88, которая будет использовать мои новые символы, то при запуске этой программы на другом компьютере или эмуляторе, вместо рамок будет чернота. Но это не помешает полноценно пользоваться программой, потому что рамки это всего лишь оформление.

(Я использовал редактор шрифтов собственной разработки, который работает прямо в браузере.)

Еще я использовал более ёмкую ПЗУ на 8 Кб вместо 2 Кб, потому что ПЗУ на 2 Кб нужны всюду и постоянно заканчиваются, а на 8 Кб не нужны никакому компьютеру и их скопилась стопка. Применение 8 Кб ПЗУ позволило упростить схему компьютера, т.к. к дополнительным линиям адреса я подключил инверсию и гашение.

Ко входу ПЗУ должен быть подключен выход статической памяти, но пока я её не впаял, я замкнул входы ПЗУ так, что бы в N-ой строке отображался символ с кодом N * 2 + 1.

Плата на этот момент.

Включаем.

Первой строки не видно. Первая видимая строка заполнена символом с кодом 3, а должен быть код 1. На другом ЖК телевизоре не видно полторы строки. Значит нужно перенести кадровый синхроимпульс на 2 строки выше, на строки 28 и 29. Я немного изменил схему.

Включаем.

Теперь верхняя отображаемая строка это 31-ая строка из видеопамяти. Это не страшно. Ни одна стандартная программа не будет её заполнять и следовательно там будет чернота. Две нижние строки так же не будут использоваться стандартными программами, ведь они рассчитаны на 25 строк.

Это хорошо, что монитор показывает 3 дополнительных строки, но не стоит забывать, что даже на ЖК телевизорах половина верхней и нижней строки не отображается, поэтому лишь нижняя строка может претендовать на роль статусной. Например, в ней можно отобразить индикатор РУС/ЛАТ и текущее время.

Возможно мне стоило сместить изображение еще на одну строку ниже. Тогда вероятность, что какой то ЭЛТ телевизор обрежет первую используемую строку будет ниже, а статусную информацию можно разместить и сверху.

Я подключил другой ЖК телевизор.

Изображение смещено по горизонтали! Я проверил на остальных телевизорах. 4 моих телевизора показывают картинку с разным смещением. Я потратил два вечера меняя положение и длительность строчного синхроимпульса, при этом постоянно перепаивая плату, но разные телевизоры показывают по разному. А ЭЛТ телевизор вообще обрезал изображение с обоих сторон. Для ЭЛТ выгоднее не центрировать изображение, а сделать видимой левую его часть. Регулировка ширины изображения на старых ЭЛТ часто невозможна. А если и возможна, то не всегда приемлема, так как иногда ширина изображения регулируется переменным резистором внутри телевизора, резистором изменяющим напряжение питания строчной развертки и как следствие всех важных напряжений телевизора.

В итоге я сделал регулировку положения строчного синхроимпульса переменным резистором. Под каждый телевизор можно настроить компьютер. Я использовал для этого микросхему К155АГ3. Со строчным синхроимпульсом проблема решена, а кадровый синхроимпульс вроде бы всеми ТВ воспринимается одинаково. И это при том, что кадровый синхроимпульс вообще не соответствует стандарту. По стандарту его длительность должна быть 3 строки, а тут 20 строк. И кол-во строк в кадре в этом компьютере немного больше. Тут 320 строк вместо 312.5.

Итоговая схема:

День 5

В прошлый день сборки я установил ПЗУ содержащую изображения символов, т.н. знакогенератор. В качестве ПЗУ знакогенератора авторы использовали микросхему К573РФ2. В те времена эта микросхема использовалась во многих компьютерах: Специалист, Радио 86РК и даже в Пентагоне 128. Эта микросхема мне часто нужна для ремонта и сборки. И что самое печальное, эта микросхема очень часто выходит из строя при перепрограммировании. Поэтому у меня она в дефиците. ПЗУ же большего размера бесполезно лежат у меня в коробочке. Поэтому я заменил КР573РФ2 размером 2 Кб на КР573РФ4 размером 8 Кб. А точнее на её зарубежный аналог выпаянный из платы убитого компьютера Корвет ПК8010. Т.е. микросхема вполне доступная в то время.

Я подключил к дополнительным адресным линиям ПЗУ сигнал отвечающий за две нижние строки символа и дорисовал шрифт. И еще подключил 7-ой бит кода символа. Теперь в ПЗУ можно прошить 256 символов, но пока я прошил 128 символов и их инверсное изображение.

Оригинальный видеоадаптер ЮТ-88 поддерживает всего 128 символов. 7-ой бит кода символа используется для инверсии. Это когда отображается белый фон и черный текст. Оригинальная схема инверсии выполнена очень упрощенно. Старший бит с выхода ОЗУ подаётся на видеовыход напрямую, без промежуточной записи в регистр (или триггер). Из-за этого все переходные процессы в схеме отображаются на экране как помехи, но главное то, что в оригинальной схеме инверсия обгоняет изображение символа на 3-5 пикселей, т.е. выводится левее почти на символ. Я же изменил схему так, что изображения инверсных символов записаны в ПЗУ, поэтому в моей схеме инверсия отображается в нужном месте и без помех. Это и хорошо и плохо. Теперь всё работает красиво, но если какой то программист использовал инверсию в своих программах, то на моей версии компьютера инверсия будет отображаться не так. В будущем я смогу прошить вместо инверсных символов дополнительные 128 символов, что бы при работе в CP/M на экране вместо слов "IНВАЛИД ДЕЖИЦЕ" отображалось правильное "Invalid device".

Сегодня третий день сборки. И паять буду эту часть схемы. Мультиплексоры, ОЗУ и статическая память:

Нужно впаять статическую память, которую можно назвать видеопамятью. В этой памяти хранится текст отображаемый на экране. В оригинальной схеме использовалось 4 микросхемы К541РУ2 общим объемом 2 Кб. У меня нет таких микросхем, нет их и в известных мне магазинах, заказывать по почте микросхемы у меня нет никакого желания. В те суровые времена радиолюдители использовали ту память, которую удалось найти. У меня есть К573РУ10 объемом 2 Кб, эта память уже существовала в то время, поэтому я считаю, что её допустимо использовать.

Еще нужно впаять три мультиплексора и один буфер. Они нужны, что бы процессор мог записать данные в видеопамять. В качестве мультиплексоров в оригинальной схеме используется микросхема К555КП11. Авторы использовали серию микросхем К555! Это более современная версия серии К155, которая потребляет значительно меньше электроэнергии и немного быстрее работает. Это даёт мне моральное право использовать К555, если соответствующего аналога К155 не найдется. Т.е. добавленная мной 555-ая микросхема не будет нелепым пятном на плате компьютера.

В качестве буфера авторы использовали пару микросхем К589АП16. В конце 1980-х качестве 8 битного буфера можно было использовать микросхемы: К580ВА86, К589АП16 (2 шт), К555АП6 или даже К155РЕ3. В модуле процессора авторы использовали серию К580, в модуле динамической памяти использовали однократно программируемое ПЗУ К155РЕ3 с соответствующей прошивкой. Скорее всего у них не было ничего кроме К155РЕ3, потому что использовать такую универсальную микросхему для такой примитивной задачи жалко. В общем, никакого однообразия в схеме ЮТ-88 нет. Поэтому я заменю пару микросхем К589АП16 на одну К555АП6 для удобства и красоты. В модуле процессора я уже заменил К580ВА86 на К555АП6.

Я не установил на плате процессора дешифратор адреса К155ИД3. Этот дешифратор управлял работой устройств компьютера "минимальной конфигурации". Минимальная конфигурация ЮТ-88 это компьютер с клавиатурой и экраном от калькулятора, а еще небольшим ОЗУ и ПЗУ. У меня нет этих устройств в компьютере, поэтому и дешифратор не нужен, но сигнал с дешифратора используется так же видеоадаптером. Этот сигнал теперь нужен только видеоадаптеру, поэтому установить соответствующую микросхему я решил на плате видеоадаптера. К155ИД3 это большая широкая микросхема, все функции которой использоваться не будут, поэтому вместо неё я установлю маленькую К 555ИД7. Не К155ИД7 не существует в природе. И вот что получилось.

Динамическая память и видеопамять находятся по одним и тем же адресам. Когда процессор записывает данные по адресам E000h - EFFFh, то запись происходит и туда и туда. В результате в компьютере хранится две копии данных. А когда процессор читает данные, то необходимо на уровне схемы компьютера выбрать, откуда читать данные, потому что нельзя читать из двух мест одновременно. В оригинальной схеме чтение производилось из видеопамяти, а динамическая память блокировалась для диапазона адресов E000h - EFFFh. Так было сделано, потому что динамическая память была последним и необязательным модулем компьютера. Я же собрал видеоадаптер последним и именно он у меня является необязательным, поэтому я заблокировал чтение из видеоадаптера. Для этого я подключил вход DIR буфера к земле, а вход OE статической памяти к выходу дешифратора адреса.

Последняя часть оригинальной схеме видеоадаптера, которую я не рассмотрел, это 2 Кб ПЗУ и 1 Кб ОЗУ. Они используются для хранения программ и данных. А еще порт клавиатуры.

Это ОЗУ становится не нужным после сборки модуля динамической памяти, поэтому я его собирать не буду. Модуль динамической памяти на 64 Кб я уже собрал и он закрывает собой всё адресное пространство процессора.

ПЗУ я решил не устанавливать. При работе c операционной системой CP/M оно будет только мешать. Программа "Монитор", которая в записана в эту ПЗУ, отлично работает и из динамического ОЗУ. При включении компьютера я скопирую Монитор из ПЗУ на модуле процессора в динамическое ОЗУ.

Порт клавиатуры уже я распаял на плате процессора. Там, потому что он может быть не только портом клавиатуры, а просто параллельным портом для связи компьютера с внешним миром. С помощью этого порта, не имея видеоадаптера, я отлаживал плату процессора. Плата процессора представляет собой законченный контроллер: процессор, ОЗУ, ПЗУ и параллельный порт. Это очень хорошо.

Вот и закончилась журнальная схема видеоадаптера. Результат работы:

День 6

А теперь настало время клавиатуры. Вот схема из журнала. Сразу выкидываем логические элементы из схемы клавиатуры. Они тут не нужны.

Смотрим на рисунок клавиатуры. Долго смотрим. Смотрим на соседние страницы книги. Где клавиши управления курсором? На схеме они есть, а на рисунке нет. Где их разместить?

Компьютер ЮТ-88 очень похож на компьютер Микро-80, опубликованный в журнале Радио в 1982 году. Посмотрим на его клавиатуру.

Да, тут стрелки есть. Будем делать этот вариант.

Некоторое время назад я купил на барахолке вот такие остатки клавиатур. Мне они были нужны для ремонта клавиатуры Искры 1080. Тут только механическая часть, без электроники. Внутри кнопок установлены магниты, а на печатной плате под кнопками должны быть установлены датчики магнитного поля (герконы).

Я собрал из остатков клавиатур что то похожее на клавиатуру Микро-80.

Корпус клавиатуры я решил выпилить из дерева. Из бука. Должно получиться прикольно. Я буду пилить на своем фрезерном стане с компьютерным управлением, поэтому все получится ровно.

Сначала выпиливаю окно для кнопок.

Обрезаю лишний металл.

И получилось как то так

Теперь выбираю всё лишнее дерево изнутри и скругляю углы.

Красота получилась

Теперь надо делать электронику. Я не стал делать печатную плату, так как она будет слишком технологичной. Её вид будет нарушать ретростиль.

Я склеил несколько советcких макетных плат эпоксидным клеем, впаял в эту плату герконы, соединил все тем же проводом ПЭТВЛ-2. В качестве разъема я использовал готовый провод для подключения принтера к IBM PC.





Я изготовил нижнюю крышку из клавиатуры из того же дерева. Клавиатуру покрыл специальным маслом.

Получилась очень даже прикольная клавиатура.

День 7

Долгожданный запуск компьютера! Ура, работает!

Видите эти полоски внизу экрана? Помехи на экране компьютера ЮТ-88 это неотъемлемая часть этого компьютера. В момент времени, когда компьютер изменяет изображение на экране, на экране появляются помехи. Даже в первом компьютере IBM PC (CGA) при работе в текстовом видеорежиме 80x25 16 цветов на экране появились помехи. Короче, это нормально. Я решил, что закончил с электроникой этого компьютера.

Но многие люди говорили: "Надо убрать помехи с экрана" и "Не стоит опускаться до уровня инженеров IBM".

Проблема схемы в том, что обращения к видеопамяти процессора и видеоадаптера никак не синхронизированы. Если обращения происходят одновременно, то видеопамять отдается в распоряжение процессора, а видеоадаптер в это время выводит на экран мусор.

Я предлагаю простое решение. Сделать так, что бы к видеопамяти по очереди обращались видеоадаптер и процессор. Сначала видеоадаптер, а потом процессор, видеоадаптер, процессор, видеоадаптер...

В этом случае требования к скорости статической памяти, ПЗУ и сдвиговому регистру в 2 раза выше. А вдруг не хватит скорости? Я посчитал на листе бумаги, нормально. Затем потом провел эксперимент. Всё нормально.

Я просто подал на мультиплексоры адреса и данных старший разряд со счетчика DD12. Это счетчик, который считает точки внутри символа, от 0 до 5, от 0 до 5.

Еще нужно, что бы сигнал записи от процессора появлялся спустя определенное время после начала "окна доступа" процессора и держался до конца "окна доступа". Под "окном доступа" я имею ввиду порцию времени, которую получает процессор для работы с видеопамятью.

Это нужно для корректной работы памяти. Сначала мы должны подать на выводы микросхемы памяти нужный адрес и данные, подождать, пока закончатся все переходные процессоры снаружи и внутри микросхемы, а затем подать сигнал записи.

Для этой доработки понадобилась всего одна микросхема К155ТМ2, а точнее её половинка. Половина микросхемы К155ТМ2 осталась незадействованной. Остальные детали это неиспользуемые части микросхем, которые уже были впаяны в плату.

Добавленная часть схемы подсвечена розовым цветом. Эта схема формирует импульс записи, когда счетчик DD12 = 1.

И вот итоговая схема видеоадаптера.

Остались самые мелочи. Сделать блок питания и корпус. Для блока питания я нашел советский зеленый трансформатор ТН32-220.

У этого трансформатора есть 2 обмотки по ~6.3 вольта 1 ампер. От середины этих обмоток отведено ~1.3 вольта. Я планировал соединить две обмотки параллельно для получения мощных ~6.3 вольт 2 ампер, выпрямить до постоянных 7.2 вольт и стабилизатором К142ЕН5В получить стабильные и мощные 5 вольт. Не получилось. 7.2 вольта для К142ЕН5В это мало, на выходе блока питания под нагрузкой напряжение проседает ниже 5 вольт.

Пришлось соединить обмотки ~6.3 и ~1.3 вольта, получив ~7.6 вольт и 1 ампер. Они выпрямились до 9 вольт и стабилизатор К142ЕН5В заработал нормально. 2 ампера не получилось. Хотя, компьютер потребляет примерно 1 ампер, поэтому сойдет.

Еще две обмотки трансформатора ~6.3 вольта 0.75 ампер я соединил последовательно, получив в итоге постоянные 12 вольт. Последнее напряжение минус 5 вольт я получил хитрой схемой на конденсаторе и двух диодах. Эта схема не позволяет получить большую мощность, но тут она и не нужна.



Советские электролитические конденсаторы я не пытался искать. В магазинах их уже не найти, а идти на рынок и копаться в грязи с тестером мне крайне лень. Зато все остальные детали аутентичные. Куча красивых советских диодов КД202, пленочные конденсаторы, ферритовое кольцо, выключатель, держатель предохранителя.

День 8

Корпус компьютера я сделал из того же дерева, что и клавиатуру. Из бука. И так же покрыл специальным маслом.

Я пилил дерево, аккуратные отверстия в алюминиевых уголках, радиатор на своём фрезерном станке с компьютерным управлением.





Мне нравится бук, потому что на нем получается очень четкая гравировка. Он твердый и не распадается на волокна.



За кадром осталось как паял и отлаживал схему загрузки с магнитофона. На фото ниже, между разъемами DIN-5 (ОНЦ-ВГ-4-5/16Р) можно разглядеть металлический цилиндрический корпус операционного усилителя. Операционный усилитель и несколько деталей вокруг него это и есть схема загрузки.



Запущена игра 2048 написанная для компьютера ЮТ-88 в 2014 году программистом Kakos Nonos.

Корпус компьютера сверху закрывается прозрачным оргстеклом.

День 9

Я подготовил архив, в котором:

  • Схема модуля процессора, ПЗУ, динамической памяти и клавиатуры в форматах PNG и Kicad.
  • Схема видеоадаптера в форматах PNG и Kicad.
  • Схема блока питания в форматах PNG и Kicad.
  • Эмулятор b2m с конфигурацией моей версии ЮТ-88.
  • Фотографии.
  • Прошивка. Содержит программы: 2048, circus, klad, rendzu, rikoshet, tetris, basic80, kalah, krestno, reversi, tapper, volcano. Вы можете собрать свою прошивку.
  • Прошивка знекогенератора 6x10 и изображение знакогенератора.
  • Исходные коды оригинальной прошивки ЮТ-88. Они написаны на ассемблере в мненомиках Z80. Те же исходники на моём си-подобном ассемблере CMM. Компиляторы SJASMPLUS и CMM в комплекте. Для сборки нужен Linux.
  • Исходные коды пошивки ЮТ-88 для этой версии компьютера. Они написаны на ассемблере в мненомиках Z80. Те же исходники на моём си-подобном ассемблере CMM. Вспомогательные программы написаны на С++. Компляторы SJASMPLUS и CMM в комплекте. Архиватор MEGALZ.EXE в комплекте. Для сборки нужен Linux, g++ и Wine.

    Скачать всю информацию по этому ЮТ-88

    Схема модуля процессора, пзу, динамической памяти и клавиатуры.

    Схема видеоадаптера.

    Схема блока питания.

    Шрифт 6x10.