По наводке Сергея Вакуленко, я купил 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. Красота!
Автор: begoon