Мультиплатформенный ассемблер PDPy11 в принципе должен сгодиться для программирования под СОЮЗ-НЕОН. Если чего-то существенного будет не хватать - допилим PDPy11.
Мультиплатформенный ассемблер PDPy11 в принципе должен сгодиться для программирования под СОЮЗ-НЕОН. Если чего-то существенного будет не хватать - допилим PDPy11.
manwe.pdp-11.ru
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Мне как-то мультиплатформенный macro11 больше нравиться в качестве кросс ассемблера под linux-ом, кое-каким вещам правда его пришлось подучить (не зависать на загружаемой библиотеки макросов, понимать регистры вида процент-номер)
Но вот чем линковать получаемые объектники?.. Пока не нашел (пока и не сильно искал правда)
@troosh надеюсь ты за это время уже заметил наличие pclink11 https://github.com/nzeemin/pclink11
troosh(26.11.2019)
Для написания небольших программ под БК на линукс я пользуюсь macro11 в версии от Rhialto и скриптом на perl для линковки, который там же в директории obj2bin. Для линковки в БКшный *.bin есть тот же самый скрипт с моими правками.
Пример команды сборки licheng.asm в БКшный licheng.bin (bash):
n=licheng && macro11 -rt11 -o $n.obj -l $n.lst $n.asm && obj2bkb --binary --base=01000 --outfile=$n.bin $n.obj
PS: Это был ответ на сообщение troosh чем можно линковать obj файлы от macro11. Цитирование почему-то пропало по дороге. Вебфорумы - зло.
Последний раз редактировалось stasmas; 07.09.2020 в 12:37.
troosh(07.09.2020)
А есть ли под Неон традиционный для советского PDP-строения MSX-2 подобный Бейсик?
Давно уже подумываю о новом Бейсике для БК - с оператором Play для проигрывания нот, вспоминая оригинальную ямаху из школьного класса информатики...
- - - Добавлено - - -
И о том, что Java тоже использует Jit компиляцию до сих пор... и нет в этом ничего страшного...
Последний раз редактировалось TheGWBV; 30.08.2020 в 18:35.
Не волнуйтесь, моя бабушка водила трактор и пожарную машину (С)
Немного не в тему, но раз уж зашла речь.
Для Немиги был адаптирован Бейсик Вильнюс (датируется 1989-м годом), в частности, там реализован оператор PLAY, подобный тому что был на MSX. Сама Немига умеет проигрывать мелодии из последовательности нот указанной высоты и длительности - это реализовано на уровне прошивки ПЗУ.
Есть BASIC посвежее, этого 2020 года, даже на УКНЦ работает: https://youtu.be/hR2SnZtH5pY
Фишка там не в скорости, а в совместимости с BBC Бейсиком, хотя там пока не все реализовано (так нет встраиваемого ассемблера, тригометрических функций и наверняка чего то еще). Пишется на ассембре (причем не на macro-11, а на своëм тоже сделанном на этом бейсике).
Здесь как-то попытались про него начать обсуждение, да как-то не пошло: https://zx-pk.ru/threads/30128-bbc-b...or-pdp-11.html
Что касается воспроизведения мелодий на Союз-Неон, то язык описания мелодий сделали ну очень похоже на то как работает PLAY в MSX BASIC с AY3-8910. Только там текст нужно предварительно преобразовать в бинарный файл, а потом просто такие файлы копируешь в устройство "SN:" и в фоне играет музыка...
P. S. Заставил себя таки вытащить исходники этой кухни из битого образа дискеты H.dsk и обновили страницу https://github.com/troosh/pk11-16/tree/master/Snd (там внизу описательная часть).
nzeemin(02.09.2020)
Спасибо, у меня как раз назревает потребность написать небольшую мелодию для Союз-Неона.
А не поможете разобраться с 256-цветным режимом? Может быть в исходниках ВПО есть какая-то подсказка.
Делаю всё по документации – пробовал макросы PLCRE и PLCREx (коды обращения к регистру оконного менеджера 16 и 17 соответственно), передавал им код режима VM8 (число 7). Отрабатывает без ошибок (бит C равен нулю, код операции 16 или 17 в таблице параметров остаётся положительным). Код режима меняется на 40007, то есть добавляется признак палитры №1.
Копирую этот код 40007 в таблицу описания area и запускаю макрос ARCRE (код 46). Он также отрабатывает без ошибок. Забираю id вновь созданной area, копирую в таблицу пораметров view.
Макросом VWCRE создаю view, всё проходит без ошибок, на экране появляется окно...
НО пиксели в окне отображаются как 4-битные!
Палитру я сгенерил в виде градиента. В area пишу байты с постепенно возрастающими номерами цветов. Казалось бы, должен быть плавный переход оттенков. Но точки рисуются через одну: светлая, тёмная. Такое может быть только если Союз-Неон считает каждые 4 бита за отдельный цвет точки.
Что я делаю не так?
manwe.pdp-11.ru
troosh, я тут просматриваю исходники ВПО, но не очень догоняю, потому что слаб в макросах.
В документации к Союз-Неону описан макрос ARCRE с пятью параметрами, последний из которых mdpl - видеорежим и номер палитры. К примеру, 40007 означает палитру №1 и режим 256 цветов, если я правильно понимаю.
Вроде как макрос ARCRE кладёт этот mdpl в пятое слово таблицы AREA descriptor, описанной в WDC.MAC. Правда, там это пятое слово называется start of TAS (начало таблицы адресов строк).
Не могу понять - подпрограмма W$ARCR из файла WD2.MAC вообще использует это пятое слово mdpl в таблице? Где и как количество цветов передаётся, собственно, в железо?
И ещё: макрос PLCRE должен возвращать ошибку, если не удалось зарезервировать палитру - так сказано в документации. Но не сказано в каком виде ошибка: бит C или инверсия кода команды (как делает ARCRE в случае ошибки). В исходниках я этого не смог найти - как будто вообще нет проверки на ошибку.
Последний раз редактировалось Manwe; 02.09.2020 в 21:54.
manwe.pdp-11.ru
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)