Микрокомпьютер GMC-4

По наводке Сергея Вакуленко, я купил GMC-4. Все-таки в подобных устройствах есть какой-то неповторимый шарм. Заказал в забавном японском магазине гаджетов Japan Trend Shop.

GMC-4 – это четырехбитный микрокомпьютер. Характеристики компьютера:

  • размер слова 4 бита
  • восемь регистров, один регистр-флаг
  • 15 однословных и 16 двухсловных машинных инструкций
  • память программ 80 слов
  • память данных 16 слов
  • ПЗУ c набором из 7 игр: орган, угадай мелодию, дави моль, теннис, таймер, музыкальный плеер, генератор морзе
  • семь светодиодов - порт вывода шины адреса
  • семисегментный индикатор - порт вывода шины данных
  • 20-кнопочная клавиатура - порт ввода
  • динамик для вывода звука
  • кнопка сброса
  • питание от 3-х батареек AA

Вся архитектура описывается одним небольшим документом – Programming the Gakken GMC-4 Microcomputer.

Сегодня приехала моя посылка. GMC-4 является приложением к одному из выпусков журнала “Otona no Kagaku” издательства Gakken, 24-й номер за 2009 год. Коробка с конструктором приклеена к журналу. Все на японском.

Забавно, на обратной стороне коробки изображены машинные инструкции GMC-4. Все умещается в одну таблицу.

Плата, пищалка, подставка, фрагменты клавиатуры и винты.

Инструкция на японском – это жестко.

Ставим батарейки и закрепляем пищалку.

Плата.

Наклеиваем клавиатуру.

Включаем… It’s alive! Alive!!!

Итак: клавиатура, семисегментник, под ним процессор, затем пипка “hard reset”. Сверху семь светодиодов, управляемых индивидуально. Они, например, используются для отображения текущего адреса. Мне это все напомнило ЮТ-88. В его первой модификации был только семисегментный индикатор и похожая клавиатура.

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

00: 0     KA 0       ; Считываем код кнопки (0-F) в A. Если нажата, то Flag=0, иначе Flag=1.
01: F00   JUMP 00    ; Если Flag=1 (не нажата), то переходим на 00.   
04: 1     AO         ; Выводим A на семисегментник и устанавливаем Flag=1
05: F00   JUMP 00    ; Если Flag=1 (тут всегда 1), то переходим на 00.

Для ввода жмем: RESET 0 INCR F INCR 0 INCR 0 INCR 1 INCR F INCR 0 INCR 0 INCR RESET

Для запуска: RESET 1 RUN

Интересно, эта железка позволяет пошагово трассировать программу. Если запустить программу через RESET 6 RUN, то она будет останавливаться после каждой инструкции, и текущий адрес будет на верхних светодиодах в двоичном коде. Для выполнения следующей инструкции надо нажать INCR и т.д. Можно прервать программу, нажав RESET, и, например, посмотреть содержимое регистров. Они являются ячейками памяти. Какая никакая отладка.

Теперь программа по сложнее: бегущий огонек по верхним семи светодиодам с отображением текущего номера на семисегментнике.

00: 80    TIA 0     ; A=0
02: 1     AO        ; Выводим A на семисегментник.
03: 3     CY        ; Сохраняем A в Y.
04: E1    CAL SETR  ; Зажигаем светодиод, номер которого в Y.
06: 84    TIA 4     ; A=4
08: EC    CAL TMR   ; Задержка (A+1)*0.1 секунд (0.5 сек).
0A: E2    CAL RSTR  ; Гасим светодиод, номер которого в Y.
0C: 3     CY        ; Восстанавливаем A из Y.
0D: 91    AIA 1     ; A = A + 1
0F: C7    CIA 7     ; Если A=7, то Flag=0. Иначе Flag=1.
11: F02   JUMP 02   ; Переход на 02, если Flag=1. Также устанавливаем Flag=1.
13: F00   JUMP 00   ; Безусловный переход на 00 (Flag=1 после предыдущей команды).

Коды: 8 0 1 3 E 1 8 4 E C E 2 3 9 1 C 7 F 0 2 F 0 0

Что есть из средств разработки?

Увы, почти все ресурсы на японском, но Google Translate творит чудеса.

Симулятор

Автоматический загрузчик

Языки программирования

Вместо заключения

Классная игрушка. Я начал программировать на Радио-86РК в машинных кодах, набивая их в Мониторе. Тут почти такие же ощущения. Выпуск журнала, приложением которого является GMC-4, судя по картинкам (я по-японски не читаю, увы), содержит иллюстрированную историю микропроцессоров, начиная с Intel 4004. Далее идут десятки различных примеров программ и проектов, в которых используется GMC-4. Красота!


Disclaimer

Комментарии