28.10.2008

Arduino

Присматриваюсь к Arduino с целью изучения вопроса эмуляции СМП на современной аппаратной базе.


Основная идея - минимизировать затраты на изготовление, хочется обойтись одним микроконтроллером. Коллеги на работе предлагают использовать Microchip PIC16F877, используя для хранения память программ 8К х 14 бит. Даже если не париться и писать по 1,5 байта (12 бит) в слово, получается, что содержимое СМП займет 6826 слов, и еще 1К с небольшим остается для программы.

Правда, есть одно маленькое НО:

Writing to program memory will cease the execution of instructions until the write is complete. The program memory cannot be accessed during the write. During the write operation, the oscillator continues to run, the peripherals continue to function and interrupt events will be detected and essentially “queued” until the write is complete. When the write completes, the next instruction in the pipeline is executed and the branch to the interrupt vector will take place, if the interrupt is enabled and occurred during the write.

В Arduino же применен AVR ATMega168, у него при записи в программную память процессор вообще is halted.


Если все-таки получится обойтись внутренней памятью программ контроллера, то можно будет сэкономить на стоимости устройства. Если не получится... сделаю программатор СМП на Arduino, безо всяких LPT-портов и DOS-а.

25.10.2008

Другой программатор СМП

Презентую более аккуратно собранный вариант читалки СМП:



Как нетрудно догадаться, использованы бескорпусные СМД-резисторы и транзисторы:



Выглядит очень компактно, можно убрать в корпус или (что гораздо проще) в термоусадночную трубку.



21.10.2008

Процессор

Процессор МК-90 состоит из трех основных компонент:
  • КА588ВС2 - 16-разрядное арифметическое устройство
  • КА588ВУ2 - Память микрокоманд
  • КА588ВГ1 - Системный контроллер
Серия 588 основана на энергоэкономичной КМОП-технологии, уровнями сигналов ТТЛ, может работать в диапазоне от -10 до +70 C, питается от 4,75 ... 5,25 В. Практически в каждом втором справочнике упоминается, что серия совместима по набору команд с "Электроника-60".

АУ 588ВС2 иногда называют микропроцессорной секцией: действительно, там есть блоки расширения и синхронизации, позволяющие при необходимости объединяться для увеличения разрядности свыше 16 бит. На борту имеется 16 шт. РОН-ов, аккумулятор (все 16-разрядные), регистр состояний.

ВС2 исполняет микрокоманды, поступающие в виде 12-битных слов из ПЗУ К588ВУ2 по шине микрокоманд (а она на самом деле 13-разрядная: старший разряд используется для стробирования данных), а результат выставляет на 4-битную шину состояний и 16-битную магистраль данных (или забирает оттуда операнд, если надо). Таблицы кодов микрокоманд известны, однако полностью бесполезны для прикладного программирования: во-первых, ПЗУ микрокоманд нельзя перепрограммировать, во-вторых, нет описания соответствия команд процессора МК90 и последовательности микрокоманд для ВС2 (подразумевается косвенно, см. процессоры PDP-11 и 1806ВМ2).

Кстати, В МК90, похоже, линии адреса и данных физически разделяют одну магистраль данных, чем и объясняется такое относительно компактное исполнение на трехслойной плате. Рискну предположить, что это т.н. "Q-шина".

Бис 588ВУ2 имели дополнительный номер, выпускалось семь разных вариантов: К588ВУ2-001 ... К588ВУ2-007. Микросхемы содержат последовательность микрокоманд, запрограммированную на заводе-изготовителе масочным способом. Предполагалось, что набор команд может быть произвольным, но лично мне известно только про реализацию "Электроника-60". В моем МК90 использован минимальный набор 0001-0004, а также 0005. Последняя содержит инструкции управления ВГ1 через разряды 7..12 (0-6 запрограммированы для управления прерываниями, но в МК90 это не использовано).

СК 588ВГ1 предназначена для связи внутренних шин серии 588 с внешней Q-шиной. Его задача состоит в организации ввода-вывода, обслуживания внешних и внутренних прерываний, обеспечения прямого доступа к памяти и двунаправленным магистральными приемо-передатчиками. МПП в МК90 отсутствуют; четыре линии запроса внешних прерываний прерываний дружно притянуты к Vcc. Остальное, вроде бы, используется.

20.10.2008

Прикладные программы

В стандартном комплекте документации есть каталог программ, высылаемых "на заказ". Я это чудо обязательно отсканирую, пока пара цитат:

131. Мужчина и семья. Программа предназначена для помощи мужчине в оценке своего положения в семье

132. Женщина и жизнь. Программа предназначена для психологической поддержки и эмоциональной разгрузки женщины.

159. Колоритность. Программа предназначена для ознакомления пользователя с таблицей энергетической ценности продуктов питания.

Электроника ИМ-03

Хочу немного отклониться от основной темы. В детстве мне подарили игру Электроника ИМ-03, она же "Тайна Океанов":



Решил ее почистить, заодно немного разобрать и посмотреть, что внутри. Я смутно помнил, что там одна микросхема, на которой все и работает. Но увы, когда я откинул крышку, то увидел вот что:



Микросхема скрывается под пищалкой-динамиком:



Ломать раритет категорически не хотелось. Но можно увидеть краешек, если расположить под нужным углом:



Как я люблю эти ЖКИ-дисплеи, которые не требуют подсветки, а потому жрут на порядок меньше энергии! Игрушка разбирается на несколько частей:



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

18.10.2008

Программы из приложения 4

Программы из приложения можно не набивать - лучше скачать отсюда.

Внутри исходники и образы СМП для Бейсика 1.0 и 2.0.

17.10.2008

Стандартный набор программ

Взял руководство пользователя, попробовал набить программы из стандартного комплекта в эмуляторе, чисто ради интереса.

Во-первых, без ошибок в исходных текстах не обошлось, во-вторых - позабавился с оператором PRINT. Долго не мог понять, почему интерпретатор на него ругается, а оказалось, что операторы формата надо записывать в "угловых скобках", т.е. в виде знаков меньше и больше - '<>', а не в круглых скобках, как мне приглючилось с самого начала в тексте руководства.

15.10.2008

Собираем программатор СМП (2)

Итак, немного терпения, и программатор СМП готов:




Теперь надо выбрать программу чтения-записи.

1. Для DOS: автор Piotr Patek, скачать исходник и программу
2. Для Linux: автор Tim N. Taspulatov, скачать исходник

Для работы надо выставить в BIOS параллельный порт в режим SPP ( иногда можно встретить вариант Bi-directional ), адрес 378h.

Откуда брать Linux, думаю знаю все ;) Симпатичный аналог MS-DOS под названием FreeOS можно скачать с http://www.freedos.org. Например, можно записать имидж загрузочного CD на болванку, а программы для калькулятора - на дискету (не надо ничего ставить на винчестер и править .iso-файл с образом).

Алгоритм проверки выглядит приблизительно так:

1. Отключаем от LPT-порта все устройства, загружаемся, запускаем READ.COM. Результат чтения всегда записывается в файл MK90.BIN. Обнаруживаем там сплошные нули.

2. Соединяем проводком 11 и 25 контакты разъема DB25, снова запускаем READ.COM. Теперь в MK90.BIN должны быть единицы (FF). Если мы дошли до этого места - LPT-порт сконфигурирован правильно, иначе надо вернуться назад и проверить настройки BIOS.

3. Подключаем программатор к LPT, запитываем схему от USB, картридж СМП пока не подключаем. Если машина при этом не ушла перезагрузку - значит шина питания не закорочена на общий, и это - уже хорошо ;) Снова читаем содержимое - там должны быть единицы (FF). В противном случае, ищите ошибку в монтаже.

13.10.2008

Собираем программатор СМП (1)

Будем использовать готовый вариант от Piotr Piatek. На всякий случай, если оригинал станет недоступен, дублирую его здесь:


Комментарии к схеме от автора Piotr Piatek:

Картридж МПО можно читать и записывать с помощью простой схемы, подключаемой через LPT-порт. Требуется внешний источник питания +5В, можно взять с клавиатуры, PS/2 порта, USB.

Подойдут любые NPN-транзисторы общего назначения, например 2N3904, BC547.

Фотография макета автора Piotr Piatek:


Как мы видим, схема действительно несложная: четыре ключа на транзисторах. Кусок самой простой макетной платы, на нем размещено четыре каскада, разъемы LPT-порта, модуля СМП и питания. Также на схему не попал конденсатор (для поглощения помех по питанию).

Составим приблизительный список деталей для устройства.

Основные элементы:
  1. С1-4 0.25 Вт, 5% 22 кОм - 8 штук
  2. С1-4 0.25 Вт, 5% 2.2 кОм - 4 штуки
  3. 2N3904 (КТ6137А) TO92 - 4 штуки
Я использовал "советские" резисторы 0,125 Вт, которые мне удалось раздобыть на рынке Юнона, а в качестве транзисторов - BC547С TO92.

Разъемы:
  1. DRB-25MA вилка на плату 25pin - 1 штука
  2. PLS-6R вилка штыревая 2.54мм 1х6 угловая - 1 штука
  3. USBB-1J розетка на плату, тип B - 1 штука

Как называется разъем на макете автора, я не выяснял, а просто взял коннектор типа PLS. Если нет угловой вилки PLS-6R, можно откусить нужное количество от "большой" вилки или даже взять несколько с меньшим количеством ножек:


Разъемы для крепления на плату чуть меньше распространены, чем такие же, но на кабель, поэтому можно взять и DB-25M, но тогда надо позаботиться и о небольшом кабеле на 5 проводов. Лучше всего будет смотреться ленточный провод, наверняка у вас завалялся ненужный шлейф от дисковода ;)

Если разъем USBB-1J оказался недоступен, можно порезать первый попавшийся под руку ненужный кабель USB от КПК ;)


Если смотреть на транзистор как на этой фотографии - эмиттер будет справа, база по середине, слева - коллектор. Кстати, тут нашел неплохое описание, как выяснить цоколевку NPN-транзистора в отсутствии документации. Получается, что так:

  1. Включить мультиметр в режим измерения сопротивления на предел шкалы 1 кОм, или в специальный режим, отмеченный значком диода.
  2. Сначала надо определить базу. Если проводимость транзистора n-p-n, то базой будет тот вывод, который "звонится" на два других при подключении к нему щупа с положительной ("+" то есть) полярностью испытательного напряжения (для транзистора p-n-p-типа - полярность обратная). Численные значения прямого напряжения на переходах будут равны: 400 – 800 мВ для кремниевых транзисторов; 100 – 300 мВ для германиевых транзисторов.
  3. При определении выводов коллектора и эмиттера можно придерживаться простой закономерности: прямое напряжение на переходе база-эмиттер (Б-Э) всегда на несколько милливольт выше прямого напряжения на переходе база-коллектор (Б-К).
(прямое напряжение показывает современный мультиметр в режиме "диод").

12.10.2008

Паяльник

Не собирал и не паял ничего уже лет десять. Да и в прежние времена я не поднимался выше блоков питания на диодных мостах и зоновского варианта ZX Spectrum. Но ради такого мероприятия, как устройство чтения СМП для МК-90, пришлось посетить радиобарахолку "Юнона" и питерский филиал "Чип и Дип". В итоге у меня появилось:

Паяльник CT Brand, модель CT-95A:



Надо было бы, конечно, купить паяльную станцию, но хорошая стоит недешево. С другой стороны, мастерство пайки потеряно напрочь и экстремально дешевый паяльник покупать страшно. В итоге я остановился на модели, которая поддерживает постоянную температуру с возможностью регулировки в пределах 100 - 400 С. Ну и жало можно заземлить.



Нагревается быстро, как утюг (не понял - то ли 50Вт, то ли 60), светодиод горит во время нагрева, потом мерцает, потом гаснет. Втыкаешь жало в припой - загорается (типа, нагревается).

05.10.2008

СМП для МК90 (2)

Основная элементная база МК90 - это серия 1835, производившаяся на мощностях нынешних НПО "Интеграл" и заводе "Транзистор". В модуле памяти в качестве контроллера использована микросхема КА1835ВГ2 (но это в моем экземпляре, в 1988 это была A1835ВГ2 - чуть другой корпус).

На первый взгляд, микросхем пять. Но хитрые (в самом хорошем смысле этого слова ;) белорусские инженеры решили сэкономить место и сделали два "бутерброда". Чтобы увидеть, надо заглянуть с торца:



Таким образом, на самом деле микросхем семь штук:
  • КА1835ВГ2 - 1 шт, "Контроллер сменного модуля памяти для LZ1-11/23", зарубежных аналогов нет;
  • КА573РУ10 - 5 шт, "Статическое ОЗУ (2К х 8, КМОП)", аналог HARRIS HM6504-9;
  • КА1034НР3 - 1 шт, "Матрица резисторов"
Как сейчас помню, статическое ОЗУ было супердорогим, на эти деньги можно было купить динамическое, минимум в четыре раза больше по объему. Но тогда про батарейку и отстегивание от МК90 можно было бы забыть сразу ;)

Говорят, что существовали и модули постоянной памяти, буду благодарен любой информации о них. Благо, завод "Электроника" выпускал еще 1835ВГ3 - "Контроллер ЗУ для LZ1-11/23" и 1835ВГ7 - еще один "Контроллер сменного модуля памяти для LZ1-11/23".

Батарейка на 3В, этого вполне достаточно для хранения. Для контроля, она выведена на первый пин шины СМП (самый правый на фото):



Протокол взаимодействия описал Piotr Piatek в этой статье. Схему и программу для чтения/записи СМП через LPT-порт в режиме SPP можно найти здесь. Вероятно, попробую сделать что-то подобное самостоятельно.

Основные технические данные и характеристики МПО-10:

  1. Информационная емкость: 10 кбайт
  2. Максимальная скорость передачи данных: 25 кбайт/сек.
  3. Срок хранения информации а автономном режиме: 6 мес.
  4. Ток потребления в автономном режиме при Uпит=3В: 10 мкА
  5. Диапазон напряжения питания, при котором обеспечивается запись и считывание информации: 4.5-5.5 В
  6. Номинальное напряжение питания: 5 В
  7. Минимальное напряжение питания, при котром обеспечивается хранение информации: 2.6 В
  8. Габаритные размеры: 69.5 x 35 x 12.1
  9. Масса (не более): 29г.

04.10.2008

СМП для МК90

СМП или МПО - все едино, это внешняя оперативная память.

Для тех, кто начал смеяться и валяться по полу: внутри есть батарейка. Благодаря ей, данные будут сохраняться и после отключения от МК90. Со временем, батарейка разряжается, однако возможно провести замену таким образом, чтобы не потерять хранимые данные.

Каждый модуль заботливо упакован в картонную коробочку:



Для хранения предусмотрен пластиковый футляр с прозрачной откидывающейся крышкой - чтобы было видно надписи на корпусе модуля:



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

Разъем расположен на меньшей торцевой стороне:



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

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



На мой взгляд, это ставит под сомнение предположение, что на МПО изначально было что-то записано на заводе. По-моему, МПО изначально был пустым. Кстати, корпус вскрывается крайне просто, разнимаясь на две части. Внутри плата (незакрепленная):



Переворачиваем ее и находим литиевую батарейку ФЛ-2016, как правило полностью дохлую и датированную 90-ми годами прошлого столетия.



К счастью, эти таблеткообразные литиевые элементы выпускают до сих пор (я купил в MediaMarkt-е, по 35 руб. за штуку):



Судя по документации, батареи гарантированно хватает на 6 месяцев, но кто-то пишет про год. Так или иначе - менять придется регулярно.

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



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



Отверните один винт. Замените элемент питания-таблетку. Завинтите винт обратно (если отвернете второй - никакого выигрыша, просто придется потом мучиться с завинчиванием в два раза больше).

Теперь надо проверить, как это все работает. Выключайте калькулятор, снимайте крышку отсека СМП:



...и аккуратно вставляйте модуль. Можно использовать посадочное место 0 (на фото вставлен в 1 для наглядности):






Модуль должен плотно насадиться на разъемы в гнезде СМП.

Включаем питание, выходим в BASIC, набираем INIT. Это вызовет форматирования СМП в гнезде 0, и после этого команда FILES покажет, что СМП пуст. Отлично. Теперь наберем простейшую программу и сохраним ее:

10 PRINT "HELLO, WORLD!"
SAVE "HELLO"

Можете смело отключать калькулятор и отстыковывать модуль. Подождите секунд 10, и верните все на место. Команда LIST должна показывать, что память программ пуста. А вот FILES - наличие ранее сохраненного файла:

Справочник SM0

HELLO .BAS 1 4
<свободно> 15 5


Дальше можно написать LOAD "HELLO" и убедиться с помощью LIST, что программа загрузилась. Если это так, то работоспособность нашего модуля снова восстановлена!

03.10.2008

ТТХ калькулятора

В руководстве можно прочесть следующее:

1. Возможности
  • работа в качестве информационного устройства с использованием персонального набора программ, формируемого пользователем в СМП;
  • ввод, редактирование, отладка и выполнение программ на языке BASIC;
  • получение справочной информации о назначении и формате более 50 команд и операторов языка BASIC;
  • построение различных графиков, таблиц, диаграмм и схем на экране ЖКИ;
  • вывод алфавитно-цифровой информации на ЖКИ в различном масштабе и направлении;
  • редактирование текста;
  • управление звуковым сигналом.
2. Прочие ТТХ
  • система ввода и вывода чисел - десятичная;
  • вещественные числа: мантисса - 7 разрядов, порядок - 3 разряда, дипазон чисел от +- E-980 до +-E.979-1
  • число регистров памяти - 286
  • доступная пользователю емкость ОЗУ - 11824 байт
  • емкость внешнего СМП - 8Кбайт, в виде 16 блоков по 512 байт
  • ввод - с клавиатуры и СМП, вывод - на дисплей ( 120 на 64 пикселя или 8 строк по 20 символов) и СМП.
  • масса - не более 0,55Кг

02.10.2008

Комплектация

Красивая коробка содержит один калькулятор со сдвигающейся крышкой, два сменных модуля оперативной памяти, четыре аккумулятора НКГЦ-0,45 (читаем - формата AA), примитивнейшее сетевое зарядное устройство, адаптер для питания от сети 220В, нелепую прозрачную накладку на клавиатуру с названиями операторов BASIC.



Из документации есть:
  • альбом с принципиальными схемами калькулятора и СМП (сменный модуль памяти - он же МПО);
  • руководство пользователя;
  • два паспорта на МПО (по одному на каждый);
  • каталог прикладных программ (замечу - только каталог).
Мой комплект не включал аккумуляторов - я попытался заменить их на металл-гидридные GP 2300, честно заряжал их полдня малым током, но в итоге на максимальной контрастности еле-еле что-то видно. Надо разбираться.

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

Встроенные тесты

Если при появлении экрана загрузки:

Автор МК90


Нажать кнопку "Т" - запустится программа тестирования, с помощью которой можно проверить ЖКИ-дисплей, клавиатуру и СМП (сменный модуль памяти):