Написал автору порта MACRO-11, посмотрим что расскажет как он линковал.
На самый крайний вариант напишу свой простенький конвертор выходного объектника MACRO-11 Win32, там формат вроде достаточно простой, но не хочется время тратить.
Написал автору порта MACRO-11, посмотрим что расскажет как он линковал.
На самый крайний вариант напишу свой простенький конвертор выходного объектника MACRO-11 Win32, там формат вроде достаточно простой, но не хочется время тратить.
Это все понятно, но я хотел бы собирать весь проект целиком одним кликом из своей любимой IDE, а не что-то копировать ТС, потом еще что-то набирать в эмуляторе, потом копировать ТС обратно. Тут важна скорость и удобство, бывает до нескольких десятков пересборок в час, утомительно скакать по окнам и что-то вбивать. А так - одну кнюпочку нажал, по makefile пересобрался .mif, потом .sof, автоматом ушло в FPGA и само перезапустилось.
Вот, например, некоторые эмуляторы CP/M-80 позволяют запускать себя, потом указанное приложение с указанными параметрами (передается как командная строка приложения эмулятора) и все файловые операции транслируются автоматически в каталог DOS/Windows. Запускать там m80/l80 вполне прикольно и можно приспособить в свой общий makefile.
PS. Автор порта MACRO-11 Win32 ответил что формат выходного объектника там RT-11 (доку я нашел на него), но линкера под Win32 он не знает. Ну и ладно, своя сборка GCC устроит пока, тем более потом все равно С будет нужен.
Я правильно понимаю?
Своя сборка GCC
Хост-платформа: Linux
Таргет: 1801 (совместим с системой команд PDP-11)
Язык: Си
Выходной формат? (.sav)?
Можно ли делать в Си-коде асмовые вставки?
Можно ли делать/использовать библиотеки стандартными утилитами GCC типа ar?
Есть ли возможность скачать и опробовать эту сборку для человека, который плоховато дружит с Linux?
Нет, я под MinGW собрал для Win32
Да. Только там нет тагета именно 1801, придется что-то из дековских подбирать.
Формат объектнков a.out.
Насчет .sav не знаю, это проприетарный формат DEC RT-11. Я сейчас просмотрел - линкер ld формат .sav не поддерживает. Но если не злоупотреблять оверлеями то .sav примитивный, можно конвертор написать.
Собрано на базе GCC 4.6.2, полагаю что стандартный способ ассемблерных вставок для GCC должен работать.
Да.
Выложил архив 17МБ
Только сам C/C++ я еще не пробовал. И там у меня пара ран-тайм библиотек со сбоем собралась, но с собственно сишными все ОК. Для программирования на С для bare-metall систем не собранные либы не нужны.
Vslav, спасибо за ответы и за сборку.
Собираюсь попробовать сделать подсистему Pdp11Dev (или как лучше назвать?) для разработки на паскалеподобном языке Оберон-2. Таргеты - БК-0010/0011(M), УКНЦ, возможно, ДВК. Интерес чисто теоретический. Формат .sav не самоцель, просто полезно было бы иметь - видел его поддержку в интерактивном дизассемблере IDA Pro, значит формат достаточно известный.
Сама подсистема устроена так: среда разработки транслирует своими средствами модуль на Обероне в его сишный эквивалент, потом запускает батник, в котором можно прописать всю логику работы по компиляции сишных файлов в бинари и конвертировании a.out в нужный выходной формат - образ кассеты, образ диска и т.п. Такой принцип обкатан на подсистемах ZXDev и MsxDev и хорошо работает. Почему именно Оберон, а не чистый Си - разговор отдельный и наверное не очень тематический.
За счёт единообразного по стилю набора библиотек для различных платформ возможна (со многими ограничениями конечно, но возможна) разработка, например, игры с одного исходника для нескольких целевых платформ, различных по архитектуре, вплоть до разрядности. Библиотеки конечно нужно писать с нуля, знания данного асма у меня вообще нет, так что, вероятно, придётся задавать много глупых вопросов по низкоуровневому кодингу.
Несколько подобных игр находятся у меня в разработке. Целевые платформы - ZX Spectrum, Windows (32/64 bit), Linux (SDL), MSX, Java micro edition, MS-DOS, возможно в скором будущем - Nintendo/NES (6502). Почему бы не прибавить к ним и БК/УК-НЦ.
---------- Post added at 02:52 ---------- Previous post was at 01:40 ----------
Цель разработки такой подсистемы - не только делать игру сразу для нескольких ретро-платформ. Мне всегда не хватало чего-то для быстрого старта. Ну вот, допустим, захотелось покодить для БК. Асма не знаю. Слова "MACRO 11" меня пугают. Зато когда-то работал на Fast/Pascal. Т.е. не хватает чего-то такого: скачал, набрал простенькую программку на пару строк и запустил одним нажатием кнопки, притом не внутри эмулятора. Вот что-то подобное и нужно разработать, чтобы начинающим, кто захочет попробовать кодить под ретро, не пришлось делать рутинную работу по написанию вывода буквочек в текстовую консоль на асме.
Опишу возникшие трудности со сборкой. Пробую собирать простейший исходник:
1. Затребовала ряд .dll:Код:int main(int argc, char **argv) { return 0; }
libgcc_s_dw2-1.dll
libgmp-10.dll
libiconv-2.dll
libmpc-2.dll
libmpfr-1.dll
Взял их с MINGW и поместил в /bin. Пришлось прописать SET path=..\Bin\gcc\bin
2. Не увиделись файлы в путях для инклюдов. Вызываю так:
pdp11-aout-gcc.exe -I ../Lib/C -I ../Lib
Пока пришлось разместить все файлы в одной текущей папке.
3. Вроде собралось. Но выдало такое:
h:\Archive\Projects\XDev\Pdp11Dev\Obj>SET path=..\Bin\gcc\bin
h:\Archive\Projects\XDev\Pdp11Dev\Obj>SET gcc=..\Bin\gcc\bin\pdp11-aout-gcc.exe
-I ../Lib/C -I ../Lib
h:\Archive\Projects\XDev\Pdp11Dev\Obj>..\Bin\gcc\b in\pdp11-aout-gcc.exe -I ../Li
b/C -I ../Lib Empty.c
h:/archive/projects/xdev/pdp11dev/bin/gcc/bin/../lib/gcc/pdp11-aout/4.6.2/../../
../../pdp11-aout/bin/ld.exe: cannot find crt0.o: No such file or directory
h:/archive/projects/xdev/pdp11dev/bin/gcc/bin/../lib/gcc/pdp11-aout/4.6.2/../../
../../pdp11-aout/bin/ld.exe: cannot find -lc
collect2: ld returned 1 exit status
Файла crt0.o в архиве нет. Наверное нужно вызывать как-то не так, да?
Хотелось бы собрать хотя бы helloworld хотя бы для какой-то из платформ - БК, УК-НЦ или ДВК. Если есть идеи, благодарю за них заранее.
Последний раз редактировалось Oleg N. Cher; 05.12.2021 в 01:50.
Увы, это то о чем я говорил - библиотека ран-тайм для C у меня не собралась. Дело в том, что у меня есть своя модульная система на основе RTOS TNKernel, и все самописное, включая нужные процедуры crt для разных платформ. Поэтому я не разбирался почему оно не собралось - мне эти библиотеки не нужны.
Варианты решения - или попробовать самому собрать эту библиотеку отдельно, или попробовать взять готовую из какой другой сборки. Или посмотреть какие модули оно хочет из этой библиотеки - если программа пустая то скорее всего стартовый модуль, написать его самому и библиотеку не пользовать.
Есть ли интерес к подобной подсистеме для разработки под БК и УК-НЦ? Потому что если нет, то, боюсь, на этом мои исследования и закончены. Не чувствую достаточной уверенности в деле написания собственного линкера или даже конвертера из бинарника в образы ленты/диска. Есть желающие помочь? Получим не только среду разработки на Обероне, но и можно будет скомпоновать свою среду для разработки на Си. Притом по кодогенерации она будет явно мощнее, чем нативные. А библиотеки можно подтянуть да хоть с Fast/Pascal.
Итак. Задача №1. Как-то получить на выходе бинарный файл, скомпилированный под нужный нам адрес.
Задача №2. Уже непосредственно конвертировать в образы. Начать можно не с .sav, а, например, с образа ленты БК. Посмотрел, в эмуляторе БК-0010.01 Андрея Грабовца для хранения игр используется непосредственно формат .bin. Он чем-то отличается от бинарника, который наверное способен выдать модифицированный GCC?
Vslav, я был бы рад примеру подобной библиотеки с процедурами crt и стартовым модулем, которую можно собрать данным GCC.
Я бы немного поправил (хотя возможно зря я вообще встреваю, я ведь вовсе не программер), но тут надо ориентироваться на ОС RT-11 и её форматы и как самый честный по отношению к PDP-11 в плане железок - это ДВК конечно, но ДВК были(есть) на разных процессорах и на ВМ1 и на ВМ2 и на ВМ3 (???), то есть если собранный sav работает под RT-11 он будет(должен) работать везде и на УК-НЦ(ВМ2) и на БК11М(строго ВМ1) и на ДВК(ВМх). Как-то так.
Спецификой у этих родственных машинок является только графика !!!
Поэтому графику пока отложить в сторону (по мере изучения ОС и платформы нюансы с ней связанные станут понятнее - везде графика на уровне железа по разному сделана, такие дела. И если брать какой-то ориентир в плане графики - это наверное либо что то новое к ДВК прикручивать (желательно поддержку Glide - досовский или виндовый) или ориентироваться на КЦГД,
как самый продвинутый отечественный видео-адаптер, который, кстати говоря, на ВМ2)
Последний раз редактировалось hobot; 20.11.2014 в 21:36.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)