Я уже несколько раз собирал Микро 80, но ни разу не собирал красиво. И ни разу он красиво не работал. Думаю это исправить.

Микро 80 это компьютер для самостоятельной сборки. Даже нет, это схемы напечатанные в журнале Радио в 1983 году для того, что бы читатели познакомились с микропроцессорной техникой. Как и большинство других схем из этого журнала, эта схема была нарисована обычными людьми для обычных людей. Этот компьютер выполнил свою задачу на 100%, многие люди увидев схемы всё поняли и даже больше, научились изменять компьютер. Потому что для сборки компьютера приходилось использовать детали которые были в наличии и изменять эту схему. Сами авторы использовали во многих случаях не самые подходящие детали, видимо использовалось то, что было в наличии у авторов, что в общем усложняло схему. Компьютер состоял из отдельных модулей: процессор, статическая память, ПЗУ, видео, клавиатура, динамическая память. Это упрощает понимание и ремонт компьютера. Был еще и отладочный модуль содержащий несколько десятков кнопок и светодиодов. И он был больше и сложнее любого модуля компьютера.

Но как же без косяков? Главный из которых - видеоадаптер формирует нестандартный видеосигнал и ни один телевизор не может нормально показать картинку, а так же видеоадаптер излишне усложнен. Всё это я не спеша опишу позже. Многие проблемы решаются очень просто. А некоторые потребуют замены микросхем и изменения связей между ними.

Например, видеоадаптер формирует 320 видимых строк изображения, при норме в 256-288 строк. Кадровый синхроимпульс имеет неправильное положение в сигнале, еще он не выровнен на начало и конец строки, его длительность настраивается RC цепочкой, что так же не очень хорошо. Мой монитор кое как показывает часть изображения, но и то, не без доработок. Но об исправлении этого косяка немного позже.

Вот схема видеоадаптера:

Начну с простого, что бросается в глаза без анализа схемы. С левого края схемы стоят инверторы D1 и D2. Они тут потому что процессорный модуль инвертирует шину адреса и это усложняет работу многих модулей. Замена микросхем инвертирующих буферов К155АП26 на не инвертирующие К155АП16 в модуле процессора позволяет просто выкинуть элементы D1 и D2 из видеоадаптера. А еще часть инверторов D28 в дешифраторе адреса. Экономия более 2-х корпусов.

Рядом мы видим ряд микросхем К155ЛР1. Один корпус содержит пару гибридов 2И-ИЛИ-НЕ. Эта микросхема тут используется как мультиплексор 4 в 2. Я оставлю эти микросхемы без изменений. Можно было бы пару таких микросхем заменить на К155КП11, но по моему таких микросхем не существует. Есть только К555КП11, но я решил использовать только серию К155 в этом компьютере. Во первых, так более аутентично, а во вторых, её некуда девать. Хотя К555 позволяет компьютер уменьшить вдвое.

Еще на этой схеме есть генератор с частотой 8 МГц. Косяков в этой схеме нет, но такой же генератор есть в модуле процессора. Можно просто видеоадаптер подключить в нему. Экономия 1/2 корпуса и 4 аналоговых детали.

Этот тактовый сигнал приходит в схему формирования строчных импульсов и строчных гасящих импульсов. К этой схеме претензий нет, частота синхроимпульсов на выходе 15625 Гц длительность импульса 4 мкс, длительность видимой части строки 48 мкс.

А вот выбор микросхемы D43 К155ЛР1 2И-ИЛИ-НЕ непонятен. У неё запараллелены И-входы, т.е. микросхема выполняет роль обычного элемента ИЛИ-НЕ, т.е. микросхемы К155ЛЕ1. Заменяем К155ЛР1 на К155ЛЕ1. Экономия 1/2 корпуса.

Запоминаем, что у нас в запасе есть 2 элемента ИЛИ-НЕ или просто НЕ, а у меня уже есть на него планы. Так же D46.1 можно будет заменить на обычный инвертор, ведь его ходы запараллелены. Это если понадобится И-НЕ, а в свободным будет только инвертор.

Поскольку К155ИЕ19 не существует, счетчики К155ИЕ5 трогать не будем.

А дальше я беру в руки макетную плату и паяльник...

День 2

Следующая часть схемы это счетчики адресов строк, формирование кадровых синхроимпульсов, а так же вертикального гашения. Вот тут то собака и зарыта. Счетчик D41 увеличивается на единицу каждую строку и считает он от 0 до 9. Это номер строки внутри символа, высота символа тут 10 пикселей. После перехода этого счетчика с 9 на 0 увеличиваются считчики D37 и D40. Они считают номер текстовой строки на экране от 0 до 31. Вместе три счетчика отсчитывают 310 графических строк. При переходе от 31 на 0 срабатывает одновибратор D42, который блокирует работу счетчика D41 на некоторое время. Это вертикальное гашение. Время блокировки задается переменным резистором R1. В это же время RCR фильтр формирует кадровый синхроимпульс никак не привязанный к строчному синхроимпульсу и вообще не в то время.

По стандарту в кадре должно быть 312.5 строк, причем видимых строк максимум 292. Почему так? Старым телевизорам нужно было время, что бы переместить электронный луч, который и рисует изображение на экране, из нижней части экрана в верхнюю. А по факту видимых строк еще меньше, так как рисование изображения начиналось еще за краем экрана (кинескопа), это что бы зритель не видел кривых краёв изображения. Это сейчас изображение прямоугольное, а раньше оно могло быть любой формы, которая при этом постоянно менялась.

Так как тут кол-во строк изменятся от 310 до 400, то частота кадров так же изменяется от 50 до 40 Гц. Непорядок. Какой нибудь старый примитивный телевизор мог переварить и такой сигнал, если покрутить его ручки, но у меня вот ручек нет. Надо делать видеосигнал по стандарту.

Можно переделать видеоадаптер на 25 видимых строк, как в Радио 86РК. 10 строк шрифта на 25 строк текста дают 250 графических строк. Тем более, что ни одна программа, которая запустится на Микро-80, не будет использовать 32 строки. Даже наоборот придется для этих программ на уровне BIOS ограничить высоту экрана 25-ю строками, иначе программы глючат.

Но в описании Микро 80 написано: "Наш дисплейный модуль позволяет вывести 32 строки символов...", поэтому я буду делать так как написано. Пожертвовать пришлось высотой шрифта. Теперь высота шрифта 8 пикселей. При 32-х строках текста у нас 256 графических строк. В плюсы можно еще записать то, что между псевдографическими символами теперь не будет пустого промежутка.

Я заменил один счетчик, заменил одновибратор на цифровую микросхему. Потребовалось немного обвязки, но все новые элементы компенсируются тем, что я сэкономил в других частях схемы. Например, заменив ранее К155ЛР1 на К155ЛЕ1 я выиграл 2 логических элемента и один их них пригодился тут.

Я спаял схему, на осциллографе вроде бы всё выглядит нормально. Но надо пробовать на реальном мониторе. Надо добиться, что бы картинка находилась по центру экрана и вся была видна. А это зависит от смещения (положения, времени) строчных и кадровых синхроимпульсов относительно изображения. Сейчас проверить это затруднительно, так как еще нет схемы формирования самого изображения. Я её буду паять в следующий раз.

Такую кашу из проводов я сделал умышленно. Так я могу вытащить любой провод. Но можно было бы аккуратно уложить все провода в отверстия монтажки. Вот так:

Но при таком монтаже вытащить провод уже невозможно. Эта схема, кстати, заменяет собой половину видеоадаптера Микро-80. Но в те времена такие микросхемы достать было невозможно, поэтому так я делать не буду. И это не просто трансформаторный провод. Это специальный провод, он уже луженый под лаком и он паяется/лудится паяльником без зачистки лезвием.

День 3

В этом видеоадаптере частота выдачи пикселей на монитор 8 МГц. Частота строк по стандарту должна быть 15625 Гц. Получается, что в строке 8000000 / 15625 = 512 пикселей. Самый первый рассмотренный ряд счетчиков как раз считает пиксели в строке от 0 до 511. Только не все пиксели видны, а лишь 3/4 пикселей из строки, это стандарт. Изображение на монитор выводится в пикселях от 0 до 383, а пиксели от 384 до 511 должны иметь черный цвет. Для этого прошлая схема формировала сигнал сигнал "Гашение cтрок", когда значение счетчика больше 383.

Адрес чтения символа из видеопамяти должен увеличиваться на единцу каждые 6 пикселей, такая у нас ширина символа. Прошлая схема увеличивает адрес каждый пиксель, каждый 2-ой пиксель, каждый 4-ый, каждый 8-ой... Числа 6 в этом ряду нет, поэтому прошлая схема непригодна для вычисления адреса. Нарисовать схему делящую число на 6 крайне сложно, поэтому авторами была добавлена еще эта схема:

Эта схема опять делит тактовый сигнал 8 Мгц. Сигнал "Гашение строк" подключен ко входам "Установка в 0" всех счетчиков на схеме выше. Т.е. счетчики удерживаются в нулевом состоянии, пока изображение на экран выводить не нужно.

Частота пикселей 8 МГц подана на счетчик D33 К155ИЕ4. Этот счетчик считает от 0 до 5, а точнее так: 0, 1, 2, 4, 5, 6, т.е. пропуская число 3. Значение этого счетчика сравнивается микросхемой D36 с числом 0. В результате каждый 6 ой такт вырабатывается импульс, который используется для загрузки следующего символа из видеопамяти в сдвиговый регистр, а так же для увеличения адреса чтения из видеопамяти.

Пока вам не очевидно, но правильнее сравнивать значение счетчика не первым значением с 0, а с последним 6. Это будет понято, когда я нарисую всю схему. Что же заставило авторов выбрать 0? А то, что гашение сигнала они реализовали на самом последнем этапе вывода изображения. Изображение уничтожается уже после сдвигового регистра. Как только сигнал гашения строк пропал, в сдвиговом регистре уже должны находится данные. По факту это не соблюдается и всё изображение на пол пикселя - пиксель сдвинуто вправо и обрезано.

Я исправлю эту ситуацию переделав схему гашения. Я не буду уничтожать готовое изображение на выходе сдвигового регистра, я просто во время гашения не буду формировать импульc загрузки данных в сдвиговый регистр. Изображение просто не будет формироваться, когда это не нужно и все пиксели будут правильной длительности. Устраним избыточность, заменив большую микросхему D36 К155ЛР3 содержащую всего 1 логический элемент на К155ЛА4, которая содержит 3 логических элемента. Один выигранный элемент я уже потратил ранее для сброса счетчиков строк. Элементы D31.4, D45.4 просто не нужны, я их исключу из схемы. Сэкономленный ранее логический элемент D43.4 будет объединять сигналы гашения строк и гашения кадра, ведь изображение не нужно формировать в обоих случаях. Микросхема D44 К155ЛР3 выполняющая функцию гашения больше не нужна.

А теперь подумаем, нужен ли самый первый ряд счетчиков? Сигнал гашения строк присутствует и на этих счетчиках. Причем более правильный. Это когда счетчик колонок перевалит за отметку 63, т.е. это просто 6 ой разряд счетчиков. Схему формирования строчного синхроимпульса можно подключить и к этим счетчикам, используются всё те же детали. Зачем нужен первый ряд счетчиков? Что бы сбросить второй ряд счетчиков в начале строки? Дак можно сделать проще, просто сравнив адреса на выходе этих счетчиков с 2 + 6 * 85 = 512, где 2 это выход счетчика D33, 6 ширина символа, 85 значение счетчиков D34, D35. И даже еще проще 6 * 85 = 510, для такого сравнения нам потребуется всего 1 логический элемент D36.2, который мы выиграли выше. Решено, выбрасываем 3 первых счетчика. Мы сэкономили 3 целых корпуса, не считая половинок! При этом частота строк получится немного отличающейся от стандарта 8000000 / (85 * 6) = 15686 Гц, но такой подход используется во множестве компьютеров и телевизоры без проблем воспринимают такой сигнал.

Микросхема счетчик D37, которую мы выбросили, считала не только колонки, но и строки. Микросхемы ИЕ5, ИЕ4 содержат в себе два логических счетчика. Но это не проблема, в схеме полно неиспользуемых половинок. Если их объединить, то на подсчет строк как раз хватит.

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

Ну и подведу итоги по переработанной части схемы и расскажу о будущих планах:

В схеме используется 16 микросхем памяти К565РУ2, каждая объемом по 1024 бита, т.е. 128 байт. Авторы использовали то, что было у них под рукой. Если бы мы собирали компьютер в 80-х годах, то так же бы использовали те микросхемы, что смогли достать. Ну а сейчас достать чуть более совершенную микросхему К537РУ10 проще, чем К565РУ2. Ставить 16 штук К565РУ2 это подвиг из разряда: я сделал плату где параллельно соединяется куча микросхем. Получается такая большая и глупая плата, что слово "Микро" звучит как издевательство. А микросхема РУ10 вписывается в схему идеально и лучше показывает суть компьютера. К РУ10 придется добавить два буфера К589АП16, т.е. экономия составит минимум 13 корпусов.

ПЗУ я так же поставлю чуть более новую, вместо К573РФ1 будет К573РФ2. Оригинальная микросхема требует нескольких напряжений питания и для неё сложно найти программатор. К тому же это решит проблему вывода курсора "не там", гашения и сэкономит несколько логических элементов.

День 4

В схеме видеоадаптера Микро-80 стоит ПЗУ с шиной данных 8 бит, т.е способная хранить шрифт шириной 8 пикселей, но используется только 6 пикселей. 25% объема ПЗУ заполнено нулями и бездействует. В схеме стоит пара микросхем К155ИР1, которые способны сдвигать 8 бит, но сдвигают только 6. Что бы переделать видеоадаптер под ширину 8 пикселей потребуется всего лишь заменить счетчик с ИЕ4 на ИЕ5, кварцевый резонатор с 8 МГц на 11 Мгц и несколько проводов перекинуть.

Я специально улучшать схему не хочу, но для этого улучшения уже всё детали заложены, просто не используются.

Эту же частоту 11 МГц можно поделив на 4 подать на процессор, получится 2,7 МГц. Это немного больше стандартной частоты 2,5 МГц. Но в заводских изделиях процессор запускали и на больших частотах, в частности в компьютере Вектор 06Ц процессор работает на частоте 3 МГц. Ну а в схеме Микро-80 про частоту процессора вообще сказано - выбирайте сами.

Использование символа шириной в 8 пикселей нам даёт замечательную вещь. Чтение символов из памяти видеоадаптером будет происходить синхронно с обращением процессора к памяти. И "снег" с экрана исчезнет.

Плюсы:
- Максимальная частота процессора и даже чуть больше.
- Более четкий шрифт.
- Отсутствие снега на экране.
- Вернется стандартная частота строк 15625 Гц, которая пострадала из за моей экономии.
- Слева и справа появится бордюр в 8 пикселей. Стандартное изображение Радио 86РК на многих ТВ не влезает в экран.

Минусы:
- Нет будет снега как на Микро-80 или ЮТ-88.
- Нет будет обрезанных символов слева или справа экрана.
- Нет будет теплого лампового шрифта 6x8 пикселей, а будет как в CGA.
- Процессор всё таки разогнан.

Заменил кварцевый резонатор на 11 Мгц, счетчики ИЕ4 на ИЕ5, цепи сброса счетчиков. Выполнена центровка изображения изменением схемы. Для формирования ССИ применен триггер, что бы избежать иголок. Длительность ССИ увеличена с 4 мкс до 5.7 мкс, при стандарте 4-8 мкс. Есть небольшие проблемы, небольшой срыв синхронизации строк в верхней части изображения.