История произошла в Telegram-канале БК00010, участником был я.
Возник вопрос: как писать программы? Эмулятор не поддерживает запись дисков, поэтому использовать ассемблер в эмуляторе вряд ли получится. В довершение всех бед картинка на смартфонах очень мелкая.
Было предложено решение(smaslovski), которое я опишу. Нужно скачать Termux, версия для Android 5.0 доступна здесь, файл termux-app-git-debug.apk. Версия программы 0.83, она поддерживает настройку панели клавиш.
После установки и запуска Termux я перенастроил клавиши, порядок действий такой:
mkdir $HOME/.termux echo "extra-keys = [['ESC','/','-','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]" > $HOME/.termux/termux.properties termux-reload-settings
Стало удобнее

Теперь нужно установить необходимое
pkg install build-essential
pkg install git
Готово, в качестве ассемблера для создания .BIN будет использован MACRO-11:
mkdir src cd src git clone https://gitlab.com/Rhialto/macro11.git
Потом я установил оболочку:
pkg install mc
и текстовый редактор
pkg install nano
в папке src\macro11 нужно исправить Makefile, исправить
OBJFORMAT = -DDEFAULT_OBJECTFORMAT_RT11=1
набрать make и ждать результата
полученные файлы скопировать
cp macro11 $PREFIX/bin cp dumpobj $PREFIX/bin
Для компиляции понадобится скрипт для сборки
cd ~/src git clone https://github.com/smaslovski/pdp11dasm.git cd pdp11dasm/utils chmod 755 obj2bkb cp obj2bkb $PREFIX/bin
скрипт компиляции, я назвал compile:
#!/data/data/com.termux/files/usr/bin/sh n=$1 macro11 $n.mac -o $n.obj -l $n.lst obj2bkb --binary --base=01000 -o $n.bin $n.obj du -b $n.bin cp $n.bin /sdcard
(можно создать nano compile)
Скрипт нужно скопировать
chmod 755 compile cp compile $PREFIX/bin
Для пробы я написал простую программу gg.mac:

.title proga .psect code .=1000 MOV #40000,R0 M: mov r0,(r0)+ tst r0 bpl m halt .end
запуск: compile gg
программу gg.bin можно открыть в эмуляторе.
И, в заключении, полагается написать нечто оптимистичное и жизнерадостное, но я нарушу правила и приведу пример программы, которую написал вечером:
.title small .ASECT .=1000 ;clr r0 ;clr r1 M: ; inc r0 add pc,r1 ; mov r1,r2 bic #49152.,r1 ; add #40000,r1 sub r1,40000(r1) br M .end
Кто напишет код меньшим размером? Дерзайте.
ссылка на оригинал статьи https://habr.com/ru/post/505592/
Добавить комментарий