- 8-битный компьютер с BASIC и VGA-выходом на Arduino
- 1. Подключаем основной Arduino с интерпритатором TinyBasic и с PS/2 клавиатурой
- 2. Подключаем PS/2 клавиатуру к основному Arduino
- 3. Загружаем библиотеку VGAx и код во второй Arduino, и соединяем его с основным
- H Бортовой компьютер для авто на Arduino своими руками в черновиках Из песочницы
- Список требуемых деталей для сборки БК
- Настройка блютуз модуля HC-05 для работы
- Теперь нужно собрать схему Arduino + блютуз + LCD-экран
- Заливаем скетч в Arduino с помощью Aduino IDE 1.0.6 (использовал эту версию).
- Управление
- Скетч:
- Мой самодельный компьютер на Arduino Nano под управлением ОС CP/M
8-битный компьютер с BASIC и VGA-выходом на Arduino
C помощью Arduino можно собрать 8-битный ретро-компьютер с Basic (похожий на ZX Spectrum) с выводом цветного изображения на VGA-монитор.
Кроме того, этот проект можно использовать как простой способ вывода текстовых сообщений на монитор.
Сама по себе, идея использовать Arduino для создания компьютера с BASIC не нова, но насколько я знаю, все они не поддерживают вывод цветного изображения. В некоторых проектах использовались LCD-мониторы, а в других — библиотека TVout, которая выводит чёрно-белое изображение. Кроме того, многие из этих проектов требуют дополнительные модули и специальные платы расширения. Тут же нужно всего-то иметь два Arduino, несколько резисторов, плюс разъёмы для PS/2 клавиатуры и VGA-монитора.
Для проекта нужно две платы Arduino: один будет основным (или «мастером»), в нём работает интерпретатор Tiny Basic Plus (это порт Tiny Basic на языке Си, адаптированный для поддержки Arduino). Также этот Arduino управляет PS/2 клавиатурой. Вывод из первого Arduino через последовательный порт отправляется на второй Arduino, который с помощью библиотеки VGAx генерирует VGA-сигнал.
Программу на языке BASIC в собранный нами компьютер можно будет ввести с помощью PS/2 клавиатуры, а результат можно будет посмотреть на VGA-мониторе: разрешение получившегося изображения 24 столбца на 10 строк, размер символов — 5х6 пикселей, доступно 4 цвета.
После введения программы, её можно будет сохранить в энергонезависимой памяти самого Arduino, а также код программы предусматривает управление I/O пинами Arduino.
1. Подключаем основной Arduino с интерпритатором TinyBasic и с PS/2 клавиатурой
Потом нам понадобится библиотека PS2keyboard, её можно загрузить отсюда. После скачивания просто распакуйте архив, и скопируйте его содержимое в «arduino-1.6.4\libraries».
Дальше, загрузите файл TinyBasicPlus_PS2_VGAx.ino, и прошейте его в основной Arduino.
Это версия обычного TinyBasic Plus, где была добавлена поддержка библиотеки PS/2.
Больше информации о TiniBasic Plus и руководства (на английском языке) можно найти тут.
Если на этом этапе нет проблем (в том числе, проблем с совместимостью), то Tiny Basic будет автоматически запущен при включении Arduino. И его можно будет протестировать с помощью последовательного порта на вашем ПК. Для этих целей я использую PuTTY, но вы можете использовать и другую подобную программу, по вашему вкусу.
В настройках нужно правильно установить COM-порт (тот же, что используется в Arduino), и скорость передачи = 4800.
И тут уже можно протестировать нашу систему, набрав какую-нибудь программу на Basic с клавиатуры вашего ПК (позже мы подключим PS/2 клавиатуру напрямую к Arduino).
Для примера, можно набрать:
Прервать бесконечный цикл этой программы можно с помощью комбинации клавиш Ctrl+C (это не сработает, если мы будем делать это с клавиатуры PS/2).
Теперь подключим PS/2 клавиатуру.
2. Подключаем PS/2 клавиатуру к основному Arduino
Информация и библиотека были взяты из этого материала.
По существу, вам нужно соединить следующие четыре контакта:
Data клавиатуры к Arduino pin 8,
IRQ (clock) клавиатуры к Arduino pin 3;
а также подключить землю (GND) и питание +5V, соответственно.
Я использовал PS/2 разъём cо старой нерабочей материнской платы, его можно легко сдуть с помощью фена.
Распиновка PS/2 разъема есть на рисунке:
3. Загружаем библиотеку VGAx и код во второй Arduino, и соединяем его с основным
Для начала, загрузите код VGAx-PC.ino и скопируйте его к себе на компьютер в папку с таким же именем.
Потом — загрузите с GitHub бибилиотеку VGAx. Её нужно поместить в подпапку «libraries» Arduino IDE.
ВАЖНО! Эта бибилиотека работает с Arduno IDE 1.6.4 и может быть не совместима с другими, более новыми версиями.
Теперь загрузите VGAx-PC.ino во второй Arduino (я тестировал на Arduino Nano, но с Arduino Uno тоже не должно быть проблем).
Предупреждение, что мало доступной памяти — это нормально для нашего случая. Если других ошибок нет, то всё в порядке — и можно сделать ещё пару шагов, чтобы получить свой собственный 8-битный ретро-компьютер.
Осталось всё соединить по схеме на рисунке, и наш 8-битный компьютер готов!
H Бортовой компьютер для авто на Arduino своими руками в черновиках Из песочницы
UPD 27.12.2017: Решил дополнить статью что проект был доработан другим пользователем, улучшен скетч в плане автоматической задержки, восстановления связи в случае разрыва соединения и много других нюансов… спасибо. Oleg его почта для вопросов: 2003shef@gmail.com
Его комментарии к переработке:
1.вся проводка и соединение всех модулей и узлов сохранены из первоначального проекта.(кроме подключения блутуз модуля, он теперь на серийном порте «1»)
2.программа жестко заточена под ардуино МЕГА 2560. на серийном порте «0» присутствует Дебаг при условии раскоментирования дефайна.
3.убран параметр задержки между опросами, задержка полностью интелектуальна и динамична, новый запрос не отправится пока не будет получен ответ на предыдущий с учетом таймаута.
4.добавлена функция восстановления связи в случае разрыва соединения (параметром потери связи служит отсутствие оборотов двигателя).
5.для работы требуется библиотека OBD.h вложенная в архив с проектом, этот экземпляр имеет несколько изменений от оригинала который можно скачать из интернета, и без неё скорее всего проект не будет работать или будет нестабилен.
папку нужно скопировать в папку » \Documents\Arduino\libraries»
Android приложение со всеми нюансами в Google Play: OliviaDrive
Мы сможем сделать бортовой компьютер, умеющий считать расход топлива, показывать температуру охлаждающей жидкости, скорость авто, расстояние поездки, потраченный бензин за поездку, обороты двигателя, давление во впускном коллекторе, температуру впускного коллектора, УОЗ, коррекции топлива, вольтаж датчиков кислорода, нагрузку двигателя и многое другое.
Список требуемых деталей для сборки БК
2) LCD2004 жк-модуль
3) Модуль Bluetooth HC-05
4) OBD ELM327 Bluetooth сканер
5) Резистор 10 кОм подстроечный, бипер для звука, 2 кнопки для смены экранов, провода для соединений, корпус
Настройка блютуз модуля HC-05 для работы
Подпаиваем провода к пинам блютуза: (картинку с выходами смотреть в описании требуемых деталей)
#include
SoftwareSerial BTSerial(6, 7); // TX | RX
void setup()
<
Serial.begin(9600);
Serial.println(‘Enter AT commands:’);
BTSerial.begin(38400);
>
void loop()
<
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
>
После успешной загрузки скетча открываем: Сервис->Монитор порта. Далее снизу ставим скорость 9600 бод и NL+CR вместе.
Далее вводим команды по одной и нажимаем [Послать]. После каждого ввода должен быть ответ ok.
AT // (возможно 1 раз вылетит Error, не пугайтесь… это нормально, повторите опять)
AT+NAME=Car //Присваиваем имя модулю Car
AT+ROLE=1 // Переводим модуль в режим Мастер
AT+PSWD=1234 // Ставим пароль 1234 как на OBD ELM327
AT+BIND=AABB,CC,112233 //Прописываем Mac адрес OBD ELM327.
AT+CMODE=1 // Подключение модуля с фиксированным адресом
AT+UART=9600,0,0 // Скорость работы по UART
Заметьте, что mac-адрес вида: «AA:BB:CC:11:22:33» вводится как «AABB,CC,112233». MAC- адрес своего модуля ELM327 можете посмотреть, подключившись для начала на него со своего мобильника. (Стандартные пароли обычно: 1234, 6789, 0000).
Всё, настройка модуля Bluetooth закончена.
Теперь нужно собрать схему Arduino + блютуз + LCD-экран
Схема:
Переменный резистор на 10кОм нужен, чтобы управлять контрастностью монитора, так что если при первом включении вы включите и ничего не увидите, попробуйте отрегулировать контрастность шрифта поворотом резистора.
3. Подключаем дополнительную кнопку для переключения экранов с данными.
[1 кнопка]: один конец от нормально-открытой кнопки подключаем в GND ардуино, а второй конец в пин 10.
[2 кнопка]: GND + пин 9.
Бипер для звуковых предупреждений подключить по следующей схеме «+» к пину 13, а минус к GND ардуино.
Заливаем скетч в Arduino с помощью Aduino IDE 1.0.6 (использовал эту версию).
Единственное, в скетче присутствуют переменные, которую нужно подправить.
Нужно будет обязательно учесть три переменных:
1) ED=1.998 Например объем двигателя в литрах 1.398;
2) VE_correct=1.0; Корректировка объёмного КПД ДВС по таблице: (если расход реально меньше — то уменьшаем значение в процентном соотношении). Если не хотите калибровать добейтесь чтобы при прогретом двигателе мгновенный расход в л/час был в районе половины обьема двигателя;
5)speed_korrect_val=1; Корректировка скорости машины, смотреть по GPS/
Управление
[Кнопка 1], [кнопка 2] — листать экран вперед назад.
При включении при надписи «Connecting»… держать [кнопку 1] вход в режим показывания технологических экранов и параметров отдаваемых ЭБУ в 16-чном формате. Если будете включать БК не в машине то нужно отключить функцию опроса блютуз, надо продолжать держать две кнопки при надписи «Recovery»… до появлении надписи «All off»… а то экран будет все время пустой.
[Кнопка 1] + [кнопка 2]: 4 секунды — Сброс журнала общего пробега и потраченного бензина на втором экране, также это сброс ошибок на экране информации об ошибках.
Скетч:
Старый скетч был удален в плане многих дефектов в работе… новая версия по ссылке вверху статьи… он был доработан пользователем Oleg, спасибо ему большое. его почта для вопросов: 2003shef@gmail.com
Все, идем в машину, вставляем ELM327 в порт, ардуину в зарядку для авто и проверяем.
Мой самодельный компьютер на Arduino Nano под управлением ОС CP/M
В процессе его создания я решил несколько задач:
Проект постоянно развивается, поэтому описание может не успевать за текущим состоянием проекта!
Структурная схема проекта :
Внешний вид проекта :
Конфигурация системы :
Симулятор процессора i8080
Я создал симулятор для Arduino Nano, способный воспроизводить все команды процессора i8080.
При этом под i8080 я понимаю все семейство X8080Y, не имевшее программных отличий.
Мой симулятор представляет собой интерпретатор, последовательно выполняющий команды микропроцессора i8080.
ТЕСТЫ ПРОЦЕССОРА i8080, УСПЕШНО ПРОЙДЕННЫЕ СИМУЛЯТОРОМ
Этот тест тестирует большую часть флагов, режимов и инструкций (за исключением операций ввода-вывода, обработки прерываний, также тестируются не все постусловия инструкций).
8080PRE (предварительный (preliminary) тест) от Ian Bartholomew и Frank Cringles
DIAGNOSTICS I от SUPERSOFT ASSOCIATES (версия 1.2, 1980 год)
DIAGNOSTICS II от SUPERSOFT ASSOCIATES (версия 1.2, 1981 год)
Буквы A. Z обозначают пройденные тесты.
8080/8085 CPU Exerciser от Ian Bartholomew и Frank Cringles
Эмуляция оперативной памяти
Обозначение вывода | Назначение вывода: |
A0 | бит 0 адреса |
A1 | бит 1 адреса |
A2 | бит 2 адреса |
WP | защита от записи |
SDA | данные/адрес (I 2 C) |
SCL | тактирование (I 2 C) |
VDD | напряжение питания 5 В |
VSS | «земля» |
Подключение к Arduino Nano осуществляется так:
Вывод FRAM | VDD | SDA | SCL | VSS |
Вывод Arduino Nano | 5V | A4 | A5 | GND |
Схема подключения FRAM-памяти:
Измерения выполнялись в FAST-режиме.
ТЕСТЫ ОПЕРАТИВНОЙ ПАМЯТИ, УСПЕШНО ПРОЙДЕННЫЕ СИМУЛЯТОРОМ
(случайная последовательность сгенерирована с помощью сервиса RANDOM.ORG).
UMPIRE от Mel Cruts (1980 год)
MEMR Rasmussen Memory Test от Lifeboat Associates (версия 2.2, 1980 год)
Сохранение и загрузка образов памяти
Эмуляция консоли
Ввод/вывод через последовательный порт
Для управления потоком используется вывод CTS преобразователя USB-Serial, который соединен с выводом D2 Arduino. «Низкий» уровень на этом выводе разрешает передачу данных от компьютера к эмулятору.
Вывод на экран телевизора
В качестве альтернативы выводу в последовательный порт я использую вывод на телевизионный экран через композитный вход.
Схема реализации вывода изображения на экран ТВ:
Русские буквы и символы псевдографики (согласн RFC 1489) соответствуют кодировке КОИ-8 (KOI-8R):
.
Вот как выглядит набор символов шрифта:
на экране LCD-телевизора:
на экране ЭЛТ-телевизора:
Снимок экрана ЭЛТ-телевизора с результатами дампа памяти из монитора:
Пример снимка телевизионного экрана с выполненной командой DIR и тестами процессора:
Я преодолел ограничение физического разрешения видеовыхода моего «нанокомпьютера» (45 колонок) в стиле портативного микрокомпьютера Osborne 1 — используя два виртуальных экрана.
Содержимое текущего виртуального экрана хранится в видеопамяти (ОЗУ микроконтроллера), а содержимое другого виртуального экрана — в основной памяти (I2C-чипах).
Они расположены горизонтально, разрешение виртуального экрана — 40 колонок и 19 строк + 1 строка статуса:
Таким образом, виртуальные экраны эмулируют физический экран с 80 колонками (Osborne эмулировал физический экран со 128 колонками посредством перекрывающихся виртуальных экранов шириной 56 колонок).
Переключение режимов (физический экран/виртуальные экраны) осуществляется из программы-монитора.
Переключение между виртуальными экранами осуществляется комбинацией клавиш CTRL-O.
Пример:
левый виртуальный экран
правый виртуальный экран
Я использую вот такой кабель:
На телевизоре при этом необходимо выбрать соответствующий вход для сигнала:
При выводе на экран телевизора позиция следующего символа указывается подстрочным «аппаратным» курсором:
Я сделал отображение видеопамяти в верхнюю часть адресного пространства процессора. Поэтому при записи в эту область памяти на экране появляется соответствующий символ:
Страничный режим вывода на экран
Если происходит полное заполнение экрана (после операции ввода с консоли), то вывод на экран и работа эмулятора приостанавливается, а в самой нижней строке экрана (она не используется для вывода текста) появляется приглашение «>>>» для нажатия какой-либо клавиши после просмотра информации на экране (страничный режим). После нажатия клавиши происходит прокрутка информации на экране и работа эмулятора продолжается до следующего полного заполнения экрана.
Ввод через PS/2-клавиатуру
В качестве альтернативы вводу из «большого» компьютера через последовательный порт я использую ввод с клавиатуры, подключенной через преобразователь PS/2—UART:
Я сделал такой преобразователь на основе микроконтроллера STM8S103F3P6. К PS/2-разъему этого преобразователя подключается клавиатура, оснащенная соответствующим разъемом, а выход преобразователя подключается к контактам UART Arduino Nano вместо преобразователя USB-UART.
Преобразователь получает скан-коды нажатых клавиш от клавиатуры, помещает их в кольцевой буфер и выдает их в последовательный порт, проверяя предварительно сигнал CTS.
Индикация включенного режима блокировки прокрутки осуществляется желтым светодиодом SCROLL:
Переключение языка ввода (английский/русский в кодировке КОИ-8) осуществляется нажатием сочетания клавиш Alt—Shift:
Включение русского языка ввода индицируется синим светодиодом RUS:
При нажатии сочетания клавиш Ctrl—Alt—Del на клавиатуре выполняется перезагрузка (подается импульс низкого уровня на вход RST Arduino).
Эмуляция дисководов
Я эмулирую поведение дисковода гибких дисков на уровне обращений чтения/записи к портам.
Порты контроллера дисковода/DMA:
порт 0xE0: порт статуса (R)/ команды (W)
порт 0xE1: порт дорожки (R/W)
порт 0xE2: порт сектора (R/W)
порт 0xE3: порт выбора диска (R/W)
порт 0xE4: порт младшего байта адреса DMA-буфера (W)
порт 0xE5: порт старшего байта адреса DMA-буфера (W)
Для эмуляции дисководов гибких дисков (на дискете 77 дорожек с 26 128-байтными секторами на каждой = 2002 (0x7D2) сектора = 256256 байт = 250,25 Кбайт) я использую SDHC-карточку, выделив в ней области, начиная с сектора 0x0001000, для эмуляции 100 дискет (128-байтный сектор эмулируемой дискеты размещен в начале 512-байтного сектора карточки, для каждой дискеты отводится 0x1000 секторов).
Для «общения» с карточкой используется шина SPI:
ICSP-разъем Arduino Nano:
Я подключил microSD-карточку посредством специального адаптера:
Для индикации доступа к карте я подключил красный светодиод с балластным резистором между выводами 3V3 (анод светодиода) и SS (катод светодиода).
С помощью команды Z монитора я могу «вставить» дискету в любой из четырех дисководов A, B, C или D:
(например, команда ZB02 монтирует дискету с номером 02 в дисковод B)
Файлы могут быть скопирован с одного диска на другой с помощью утилиты PIP:
например, PIP B:=A:TEST.COM копирует файл TEST.COM с диска A на диск B.
Хранение данных на магнитной ленте
Я реализовал запись данных на магнитную ленту/в аудиофайл и считывание данных с магнитной ленты/аудиофайла.
Для согласования уровней я использую такую схему:
Она рассчитана на запись данных на линейный вход и считывание с линейного выхода.
Схема реализована в виде небольшой платы:
Для подключения внешних устройств служат два RCA-разъема:
При работе с магнитной лентой приостанавливается работа видеогенератора.
Формат данных:
Вот как биты представлены в аудиофайле:
Эксперименты показали, что отклонение скорости проигрывания на 20% не влияет на надежность считывания данных.
Пример WAV-файла с записью трех блоков:
tape.wav
Звуковой сигнал
Для подачи звукового сигнала я использую пьезоизлучатель, подключенный к выводу A0 Arduino Nano (этот же выход используется и для записи на магнитную ленту):
Питание
В качестве источника питания (выходное напряжение 5 В) я использую интегральный стабилизатор 7805, входное напряжение (9 В) на который подается с выхода компактного блока питания:
Адаптация операционной системы CP/M
Операционная система CP/M («Control Program for Microcomputers«) версии 2.2 (однопользовательская и однозадачная) была выпущена компанией Digital Research Inc. (DRI) под руководством Гарри Килдалла (Gary Kildall) и его жены Дороти МакЭвен (Dorothy McEwen) в 1979 году.
Гарри Килдалл (Gary Kildall)
При запуске программы getcpm.exe требуется указать размер памяти в килобайтах (XX) и желаемый серийный номер системы CP/M (6 байтов в 16-ричном виде, YYYYYYYYYYYY), после выполнения настройки создается файл CPMXXK.SYS и указывается его восьмибитная контрольная сумма:
Программа, используя файл CPMDIFF.SYS, корректирует адреса в файле CPM00K.SYS, выполняя настройку на заданный объем оперативной памяти:
Размер получаемого файла, содержащего CCP и BDOS операционной системы CP/M версии 2.2, равен 5632 байта.
Я выбрал вариант с 62 Кбайтами ОЗУ (62K system).
После ввода команды монитор ожидает начала передачи от компьютера, передавая символы C. Затем в программе Tera Term необходимо выбрать для загрузки файл CPM64K.SYS с образом системы. После окончания загрузки происходит возврат в монитор.
CCP и BDOS располагаются на SDHC-карточке, начиная с сектора 256, откуда их загружает написанный мной начальный загрузчик.
Карта памяти системы:
Я сделал перехват функций BIOS (при обращении по соответствующим адресам памяти) и их реализацию:
(смещения указаны относительно адреса 0xFA00)
Оптимизация проекта
Для оптимизации исходного кода проекта я использую утилиту avr-nm, которая позволяет отобразить размеры кода функций и областей памяти, занимаемых переменными:
Указанная команда выводит результирующую информацию (о скомпилированном файле проекта cpm4nano-master.ino.elf) в файл size.txt.
Пример результата работы утилиты:
Имя объекта указывается в четвертой колонке.
Эксплуатация
Карта памяти SD-карточки (сектора карточки имеют размер 512 байт)
После включения Arduino Nano происходит детектирование FRAM-чипов памяти на шине I 2 C, проверка оперативной памяти:
Запуск программ в мониторе
В мониторе можно запустить монитор от микрокомпьютера «Altair 8800«.
После запуска появляется приглашение в виде точки:
Вводя команду D, получаем дамп области памяти:
Загрузка операционной системы CP/M
Пример результата выполнения команды DIR:
При нажатии клавиш CTRL + / при запросе ввода с консоли происходит возврат из ОС CP/M в монитор.
Загрузка файлов в эмулятор
Для загрузки файлов в эмулятор посредством терминальной программы (я покажу этот процесс на примере программы Tera Term) используется протокол XMODEM.
После ввода команды монитор ожидает начала передачи от компьютера, передавая символы C.
Затем в программе Tera Term необходимо выбрать пункт меню для передачи файла по протоколу XMODEM:
Затем следует выбрать файл для загрузки (например, CPU.COM):
После выбора файла начинается его загрузка:
После окончания загрузки происходит возврат в монитор:
При этом отображается количество принятых байт.
Для загрузки в оперативную память данных из файла формата Intel HEX используется команда монитора F.
Для записи загруженных (с адреса 0x100) данных на диск необходимо загрузить ОС CP/M командой монитора C:
После окончания записи записанный файл CPU.COM отображается при просмотре директории командой DIR:
Также я разместил на диске интерпретатор бейсика TINYBAS.COM и тестовые программы TEST.COM, 8080PRE.COM, 8080EX1.COM.
Оценка быстродействия
Прогон из монитора 32768 команд:
Команда | FAST-режим | SLOW-режим |
NOP | 1,7 секунды | 3,0 секунды |
MOV A, A | 1,8 секунды | 3,3 секунды |
DAA | 2,0 секунды | 3,6 секунды |
Выполнение теста DIAGNOSTICS II V1.2:
(между BEGIN TIMING TEST и END TIMING TEST):
FAST-режим | SLOW-режим |
899 секунд | 1743 секунды (x1,94) |
Выполнение тестовой программы в TINYBASIC:
FAST-режим | SLOW-режим |
123 секунды | 202 секунды (x1,64) |
Выполнение скомпилированной программы PRIMES, написанной на Ada (найдено 1899 простых чисел):
FAST-режим | SLOW-режим |
10320 секунд | 16980 секунд (x1,65) |
Программирование
Я запустил интерпретатор бейсика TinyBASIC (SHERRY BROTHERS TINY BASIC VER. 3.1):
Ссылка на скачивание zip-архива с исполняемым файлом TINYBAS.COM и файлом справки TINYBAS.DOC:
https://acdc.foxylab.com/sites/default/files/TINYBAS.ZIP
Мой «нанокомпьютер» успешно запустил BASIC (8 килобайт, версия 4.0) для микрокомпьютера Altair:
Особенности этого диалекта BASIC:
Из-за использования старшего бита в служебных целях листинг получается искаженным:
Отображение в терминале можно исправить, предварительно включив 7-битный режим обмена с помощью команды монитора H7.
Для удаления последнего введенного символа необходимо ввести знак подчеркивания:
Программу можно загрузить с компьютера через терминальную программу из текстового файла такого формата:
Вот такой тест выполняется 110 секунд в FAST-режиме (162 секунды в SLOW-режиме):
Также я проверил работоспособность четырехкилобайтной версии Бейсика:
Я записал на эмулируемую дискету компилятор CBASIC от компании Digital Research, который представлен такими файлами:
В моем эмуляторе успешно выполняются компиляция и линковка программ.
Вот какую тестовую программу я записал в файл HELLO.BAS:
Компиляция тестовой программы выполняется командой
Результатом компиляции является объектный файл HELLO.REL.
Линковка программы выполняется командой
Получаемый в процессе линковки исполнимый файл HELLO.COM успешно запускается командой
и выводит сообщение:
Интерпретатор FOCAL для микрокомпьютера Altair успешно заработал на моем «нанокомпьютере»:
Я успешно испытал компилятор и линкер из пакета BD Software C:
Компиляция тестовой программы TAIL.C выполняется командой
Результатом компиляции является объектный файл TAIL.CRL.
Линковка программы выполняется командой
В результате создается исполняемый файл TAIL.COM.
Я запустил FORTH-83 (файл f83.com доступен здесь):
В качестве примера я ввел и исполнил простую программу, выводящую сообщение HELLO, WORLD!:
Основные команды FORTH-83:
(при успешном выполнении команды выдается ok)
Можно вводить немедленно исполняемые команды:
В процессе компиляции создаются временные файлы TOWERS.INT и TOWERS.OPT и результирующий файл TOWERS.COM.
Затем я запустил скомпилированную программу TOWERS.COM на выполнение командой
и получил решение задачи для трех колец:
Я запустил интерпретатор LISP/80 версии 1.1 от Thomas W. Yonkman:
Заметка об этом интерпретаторе в журнале BYTE:
Также я проверил работоспособность интерпретатора языка программирования MINOL («Tiny BASIC with Strings in 1.75K Bytes«), созданного для микрокомпьютера Altair :
Игры
А вот как выглядит запуск игры реверси (Othello), написанной на языке C (файл OTHELLO.C скомпилировался в файл OTHELLO.COM):
А вот как выглядит запуск игры Star Trek, написанной на языке Ada (файл STARTREK.ADA скомпилировался в файл STARTREK.COM):
в консоли:
на ЭЛТ ТВ:
Для атаки корабля Клингонов фазером (команда 2) необходимо указать мощность выстрела. Фазер не требует прицеливания, но сила его удара уменьшается с удалением от цели. После выполнения атаки отображается урон, нанесенный вражескому кораблю, и полученный от вражеского корабля:
При нанесении достаточного урона корабль Клингонов уничтожается и исчезает с карты:
Играющая в шахматы программа Microchess для микрокомпьютеров на процессоре Intel 8080 была разработана в 1977 году компанией MICRO-WARE LTD.:
Авторы программы: Peter R. Jennings (канадский исследователь) и T. O’Brien.
Эта была первая коммерчески успешная (было продано сыше 10 тысяч копий) шахматная программа для микрокомпьютеров. Код игры продавался напечатанным в брошюре, поэтому пользователь должен был сам ввести его в компьютер.
Вот как выглядит запуск этой программы на моем «нанокомпьютере»:
Клетки доски пронумерованы таким образом:
На мой первый ход пешкой:
программа ответила ходом конем:
На обдумывание хода у «нанокомпьютера» ушло около трех минут.
Видео работы проекта в реальном времени:
Продолжение следует