Показаны сообщения с ярлыком СМП. Показать все сообщения
Показаны сообщения с ярлыком СМП. Показать все сообщения

29.10.2010

SMPReaderUSB - frontend?

Очередной экземпляр SMPReaderUSB благополучно завелся у нового владельца со штатными СМП от МК-90, так что теперь уже точно понятно, что он 100%-но работоспособен не только с моими СМП. 

Снова возник вопрос написания графического UI, хотя бы даже и в виде frontend-а к CLI-утилите, которая сейчас выполняет чтение, запись и замер напряжения батареи. Размышляю про Java - чтобы получилось кроссплатформенно. Все-таки опыт работы с ArduinoIDE и PDE оказал существенное влияние на мое неокрепшее сознание ;) 

Также зреет идея по превращению этого устройства в имитатор СМП, то бишь интерфейс между МК-90 и "большим братом". Страшно подумать, сколько может образов влезть на HDD ;) Впрочем, это самый туманный вопрос - неясно, будет ли успевать low-speed bulk transfer и libusb за тактовой МК-90 - протокол обмена построен так, что картридж в принципе не может попросить притормозить обмен :(  

27.11.2009

SMPReaderUSB - финальная версия

Финальная версия устройства чтения / записи модулей памяти Электроника МК-90. От начальной идеи, оно неспешно эволюционировало в законченный девайс:



Файлы:

  • Для тех, кто в море под Windows: скачайте программу-инсталлятор, она установит драйвер, необходимые dll-ки и саму программу чтения/записи;
  • Полный архив с исходниками firmware и software, схемой и разводкой односторонней печатной платы в Eagle (последние под лицензией Creative Commons Attribution-Share Alike 3.0 Unported);
  • Для тех, кто хочет изготовить печатную плату: файл eps (extended postscript). Загрузите его с разрешением 720 dpi в Photoshop или Gimp, что гарантированно даст качественный отпечаток.
Поддерживается также и Linux (он теперь всегда поддерживается, живу я теперь в нём ;)  В архиве бинарники, собранные под Ubuntu 9.10. Искренне прошу прощения, что не сделал полноценный пакет .deb, но компиляция элементарна: надо поставить libusb-dev и g++, а потом запустить make.sh.

Использование:
  • Чтение образа СМП: smpusb read -f filename.bin
  • Запись образа СМП: smpusb write -f filename.bin
  • Проверка батареи: smpusb voltage

Если вдруг возникает необходимость обновить прошивку, надо:
  • Скачать новое firmware с http://mk90.blogspot.com
  • Отключить питание (отключить и от компьютера, и от СМП)
  • Поставить джампер JP1 в положение PGM
  • Подключить к компьютеру
  • Запустить программу обновления:
    smpreader_updater smpreaderusb_atmega8.hex
  • Вернуть JP1 в прежнее положение, отключить питание.
При следующем включении заработает новая прошивка.

Предупреждаю, что схема несовершенна, поэтому при подключении модуля начинает слегка расходоваться его батарея. Посчитав усложнение схемы неоправданным, предлагаю взять за правило: попользовался - отключи! Тем более, что модуль в большинстве случаев используется именно для хранения данных или их переноса между PC и МК-90.

Как всегда, буду рад конструктивной критике и глупым, но грамотно сформулированным  вопросам ;)

Кстати, уважаемый smallkaa в комментах уверял меня, что low speed bulk-transfer mode под Linux неработоспособен. Мне кажется, что это мнение все-таки устарело ;)

25.10.2009

Печатная плата для SMPReaderUSB

Меж тем кард-ридер, GIMP и Picasa в строю, уже могу постить фото:



После нескольких неудачных итераций, родилась печатная плата для SMPReaderUSB. Кроме технологии ЛУТ, освоил также работу со сплавом Розе, залуживание происходит быстро и красиво.

30.09.2009

SMPReaderUSB в корпусе

Наконец-то руки дошли до дрели и этикеточного принтера, убрал smpreaderusb в корпус:



Светодиод чтения записи - двухцветный, т.е. в одном корпусе сразу два кристалла, три вывода, общий катод. Очень удобно - не надо сверлить лишнюю дырку. А по смыслу - либо чтение, либо запись - одновременно не бывает ;)

Подумываю о печатной плате, а вдруг все-таки кому-то понадобится?

25.08.2009

Доступ к СМП по USB (2)

Вторая версия USB-устройства чтения-записи СМП/МПО Электроника МК-90.

В схему добавлен резистор 22К, притягивающий вход измерения батарейки к GND. Он позволяет избежать чтения "ерунды", когда пин висит в воздухе – теперь будет стабильный ноль.

Также я задался риторическим вопросом о том, стоит ли тащить в схему ICSP-разъем, если и так уже есть USB. Все, что требуется - это bootloader, который будет принимать новую прошивку через USB и прошивать ее во flash-память. С одной стороны - пустяк, может и не пригодиться, с другой - доступный способ обновления, не требующий программатора.

Итак, теперь управление всегда передается bootloader-у, который опрашивает джампер JP1. Пользователь аккуратно разбирает корпус устройства (при наличии такового ;), устанавливает джампер, подключает кабель USB. По установленному джамперу bootloader понимает, что грядет обновление прошивки и ждет данных для записи. Пользователь должен запустить отдельную программу smpreader_updater.exe с единственноым аргументом - именем hex-файла с новой прошивкой. После успешного завершения программы, надо отключить устройство от USB, снять джампер и завинтить обратно.




Бутлоадер был создан на основе релиза V-USB 20090415, а также проектов AVRUSBBoot и USBaspLoader.

AVRUSBBoot мне понравился экстремальной простотой и укомплектованностью host-программой – ну просто бери и пользуйся! Не тут-то было: с момента первого (и последнего ;) релиза прошло довольно много времени, поэтому пришлось обработать напильником: учесть особенности последнего стандарта C++, обновить морально устаревшее ядро V-USB, немного подкорректировать алгоритм проверки условия активизации и корректность выхода (позаимствовал идеи из USBaspLoader).

Увы, размер необходимой памяти программ с учетом bootloader-а вырос на 2К и составил более 4К. В таком варианте ATTiny2313 использовать уже не получится, ATmega48 – только если выкинуть код измерения напряжения батарейки. Поэтому, практически безальтернативно проект собирается на ATmega8-16PU.

Схема, исходники и бинарники: smpreaderusb_2.0.zip.

Файлов с прошивками теперь стало два: сначала надо прошить программатором smpreaderboot.hex, а уже потом через USB можно заливать smpreaderusb.hex. Подробные инструкции на английском языке в виде README-файлов заботливо разложены мной по подкатагам ;)

Кстати, собрал прототип на макетной плате под пайку, выглядит так:



Вместо двух отдельных светодиодов Rx и Tx я использовал один двухвыводной, токоограничительные резисторы R3, R4 и R5 имеют номинал 330 Ом.

К моему огорчению, по-прежнему отсутствуют:

  • GUI, печатная плата
  • инсталлятор (или хотя бы inf-файлы для драйверов)
  • Makefile для консольной сборки
  • поддержка Linux (пока – только потенциальная)
Если руки дойдут, возможно - все это и появится, следите за новостями ;)

07.08.2009

Доступ к СМП по USB

Итак, представляю устройство чтения-записи картриджей сменной памяти СМП/МПО для микроэвм Электроника МК-90.

Ключевые особенности разработанного устройства:
  • совместимо с шиной USB 1.0;
  • читает и записывает образы картриджа СМП;
  • измеряет напряжение внутренней батареи;
  • легко повторяется самостоятельно.
Основу устройства составляет МК ATmega8-16PU, для программной поддержки USB использована реализация V-USB от Objective Development. Для управления с PC используется хост-программа smpusb, которая позволяет:
  • читать содержимое СМП в файл
  • записывать образ из файла в СМП с проверкой
  • показывать напряжение батареи и предупреждать о разряде
  • работать через интерфейс командной строки
  • выводить сообщения на stdout (описаны все коды завершения)
  • работать с с Windows XP, Vista, потенциально переносима на Linux
Для Linux требуется установка libusb, для Windows - libusb-win32,

Предупреждение: на Vista ставить в режиме совместимости с Windows XP, иначе сразу "лишитесь" всех USB-устройств.

Как всегда, начинаю с результата: smpreaderusb_1.0.zip (исходники и бинарники firmware и software).

Схема:



Список деталей:

Part Value Device Package Library

C1 22 pF C5/2.5 C5B2.5 capacitor-wima
C2 22 pF C5/2.5 C5B2.5 capacitor-wima
C3 100 nF C5/2.5 C5B2.5 capacitor-wima
C4 47 uF CPOL-EUTT2D5 TT2D5 rcl
C5 100 nF C5/2.5 C5B2.5 capacitor-wima
D1 3V6 BZX55 DO35Z10 diode
D2 3V6 BZX55 DO35Z10 diode
D3 LM385-1.2 LM385-1.2 TO-92 lm385
IC1 MEGA8-P MEGA8-P DIL28-3 atmel
JP2 PINHD-1X6 1X06 pinhead
LED1 PWR LED3MM LED3MM led
LED2 RX LED3MM LED3MM led
LED3 TX LED3MM LED3MM led
Q1 12 MHz CRYSTALHC49U-V HC49U-V crystal
R1 10K R-EU_0204/7 0204/7 resistor
R2 68 R-EU_0204/7 0204/7 resistor
R3 1K R-EU_0204/7 0204/7 resistor
R4 1K R-EU_0204/7 0204/7 resistor
R5 1K R-EU_0204/7 0204/7 resistor
R6 68 R-EU_0204/7 0204/7 resistor
R7 1K5 R-EU_0204/7 0204/7 resistor
R8 1M R-EU_0204/7 0204/7 resistor
R9 22K R-EU_0204/7 0204/7 resistor
X1 PN61729 PN61729 con-berg
X3 PINHD-2X3 2X03 pinhead


Пояснения к схеме

Если под рукой нет ATmega8-16PU, без изменений в схеме можно использовать ATmega48-16PU, ATmega168-20PU, ATmega328P-PU (однако, потребуется перекомпиляция firmware и другие значения фьюз-битов). Важная особенность тактирования: подходит только кварц, заменять его на калиброванные RC-цепочки и керамические резонаторы нельзя. Если нет кварца на 12 МГц, можно использовать 16, 18 и 20, но в этом случае надо исправить значение константы F_CPU в файле make_config.h и перекомпилировать firmware.

Потенциально возможно использование ATtiny2313-20PU, если пожертвовать функцией измерения напряжения батареи (в этом МК нет АЦП, да и памяти у него всего 2К).

МК питается от напряжения +5В, при этом согласование с сигнальной шиной обеспечивают стабилитроны D1, D2, которые должны быть 3V6 и не более 0,5Вт. Перенебрежение этими условиями может сделать обнаружение и обмен по шине нестабильными, более подробно можно почитать здесь и еще рекомендую обратиться к стандарту USB.

Мощность всех резисторов – 0,25 Вт, допустима погрешность ±5%. Резисторы R3, R4 и R5 – токоограничительные, для обычных светодиодов подойдут 330, 470, 1К. Конденсатор C4 фильтрует помеху по питанию, при использовании внутреннего супервизора питания ATmega, его емкость может колебаться в пределах 10...100 мкФ, устанавливайте максимально близко к разъему USB.

Для формирования напряжения 1,235 В с точностью ±1% используется элемент D3, LM385-1.2. Будьте бдительны: микросхема выполнена в корпусе TO-92, использованы два вывода из трех. Тем не менее, в некоторых даташитах дано неверное расположение выводов, например нарисованы 1 и 2, а на самом деле надо брать 2 и 3 (можно легко определить при помощи вольтметра). Поскольку этот элемент способен работать при токах до 10 мкА, номинал R9 может быть 10..47К.

Разъем программирования ICSP стоит устанавливать исключительно по желанию: не исключаю, что будут обновления firmware. Поэтому, если паяете МК без панельки – настоятлельно рекомендую ;)

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

Пояснения к работе с host-программой

Если все собрано правильно, то после подключения к шине USB Windows радостно сообщит об обнаружении нового устройства. Самое время установить драйвер libusb-win32, который существует в двух вариантах (выбирайте один из двух!):

1. Фильтр. Скачиваете установочный файл libusb-win32-filter-bin-x.x.x.x.exe и запускаете его на выполнение – для Vista надо сначала открыть его свойства и выбрать "Режим совместимости с Windows XP SP2" и "запуск от имени Администратора". Если вы из тех, кто читает мануалы, когда что-то не получается, то сейчас должны наблюдать печальную картину: все устройства USB, как один, перестали работать. К счастью, это не смертельно: через меню программ можно сделать uninstall и повторить установку согласно описанию выше.

2. Драйвер. Скачиваете архив с драйвером libusb-win32-device-bin-x.x.x.x.tar.gz, распаковываете. Подключите готовое устройство к шине и запустите inf-wizard.exe, который выкинет список устройств, ищите в нем VendorId= 0x16c0 и ProductId=0x5dc. Пройдите все шаги до конца, сохранив необходимый inf-файл под каким-нибудь именем. Теперь зайдите в Device Manager, удалите устройства, которые обозначены вопросиком и вновь отсканируйте шину (или просто переподключите устройство). Вот тут-то на риторический вопрос Windows "Что делать?" по поводу нового устройства, предложите ему сделанный на предыдущих шагах inf-файл.

Совсем подробные инструкции расписаны в секции Installation, в будущем постараюсь включить драйвер в один архив с проектом.

Запустите команду чтения напряжения:

smpusb voltage

в ответ вы должны получить текущее значение, положительное число от 0 до 3 В. Далее, чтобы прочитать образ картриджа:

smpusb read –f mk90.bin

Соответственно, чтобы записать:

smpusb write –f mk90.bin

При записи и чтении горят соответствующие светодиоды RX и TX.

Возможные неприятности:

USB error – проверьте, установлено ли у вас libusb-win32 и насколько корректно это сделано.

Could not find USB device "SMPreader" with vid= 0x16c0 pid=0x5dc – проверьте еще раз корректность сборки устройства и надежность его подключения к шине USB.

Поскольку я лицензировал поддержку USB у Objective Development по бесплатной схеме, то используется общее для всех устройств VID и PID, хост-программа пытается выбрать то, у которого строка названия продукта возвращается как "SMPReader". Кстати, из этого вытекает, что два SMPReader-а нельзя использовать одновременно, но кому такое может понадобиться?..

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

В случае необходимости, можно попробовать добавить ключ –d, выводящий дополнительные отладочные сообщения.

Производитель СМП указывает, что минимальное напряжение, которое гарантированно обеспечивает хранение информации в СМП составляет 2.6 В, поэтому программа будет выдавать предупреждение о том, что оно ниже 2.7 и 2.6 В. Но по практике у меня случалось, что оно опускалось и до 1.8 В с сохранением информации, поэтому можно выключить это предупреждение ключом –p.

Поскольку я являюсь поклонником командной строки, то предоставляю возможность написать GUI желающим, все коды выхода описаны исходнике программы.

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

В заключение пара слов про минусы проекта:
  • отсутствие GUI
  • нет печатной платы
  • драйвер надо ставить отдельно
  • недостаточная проработка вопроса совместимости c Linux
  • не помешал бы консольный Makefile для сборки через nmake.
Постараюсь постепенно добавить все это в будущем, но буду признателен за любую помощь от энтузиастов ;)

28.07.2009

Анонс

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



Девайс подключается к шине USB 1.1 и способен не только читать и писать образ картриджа СМП Электроника МК-90, но еще и показывать напряжение на внутренней батарейке модуля. Почти готово, в настоящий момент дорабатываю вопрос о том, сколько и какого цвета будет светодиодов и как они должны мигать ;)

Само собой, схема, sources и firmware будут опубликованы под cc-sa, в скором времени ;)

12.11.2008

У страха глаза велики

Обратил внимание, что один из модулей СМП работает как-то нестабильно (ошибки записи/чтения в программаторе СМП на Arduino). Выяснилось, что напряжение на батарейке упало до 0,7В.

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

"Подох", - подумал я и полез искать элементную базу (КА1835ВГ2, КА537РУ10Б) в интернет-магазинах. Что самое поразительное - нашел! Но прежде, чем нажимать на кнопку "отправить заявку", решил проверить последний раз - не установил ли я батарейку как-то криво.

Модуль великолепно заработал в калькуляторе со снятой батареей. Мораль: у страха глаза велики ;) Сижу, думаю - оформлять мне заказ на антикварные микросхемы завода "Интеграл" или нет... А вдруг придется ремонтировать, не дай Бог?

25.10.2008

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

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



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



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



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. При определении выводов коллектора и эмиттера можно придерживаться простой закономерности: прямое напряжение на переходе база-эмиттер (Б-Э) всегда на несколько милливольт выше прямого напряжения на переходе база-коллектор (Б-К).
(прямое напряжение показывает современный мультиметр в режиме "диод").

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, что программа загрузилась. Если это так, то работоспособность нашего модуля снова восстановлена!