svofski,
Там самая интересная папка это C-port.
Вид для печати
svofski,
Там самая интересная папка это C-port.
Я не в курсе. Я больше про компилер на Фортране, который Какос смог адаптировать для Windows через транслятор Фортрана в Си. Вот то - хороший компилер PL/M. Но можно ли собрать с его помощью CP/M - не знаю. Пробуйте. В любом случае, компилер в исходниках, можно подправить.
Ага.
Ну вроде собрал компилятор, нужно попробовать что-то скомпилить.
Первое попавшее выдает много ошибок. Попробую подсунуть, что проглотил Dunfild C.
Выложите бинарник на обозрение, пожалуйста, а то все исходники в Digital Mars C/C++ перелопачивать пока нет решимости.
Зачем в Digital Mars C/C++? Он изначально собирается, насколько я понимаю, в GCC и MinGW.
Есть ли желающие общаться на темы PL/M и компов на проце 8080 в Телеграм-группе? (опрос: есть ли смысл в ней?)
Я собираю под Debiab 8, и работаю в основном под ней.
Из Форточек строит WinXP, но пользуюсь редко.
Тем более что пошли программы скомпилированные под VS2017, а они уже не работают под WinXP,
так как скомпилированы без ключа совместимости с ХР. Новая версию minGW уже не запускается.
Вопрос к модераторам, может пора создать в "Отечественных компьтерах" раздел "Программирование".
так сложилось(сначала в телефонной компании, где я работал в 2002-м это был основной компилятор, так как сама цифровая станция была на 3086EX и рабочий проект был на DMC+MASM), что я все сишные проекты туда перетягиваю. А сейчас вот мне плату на 8085 подогнали, хотелось бы под него допилить. Да, в идеале и с PL/M, и c RMX, и с дебагером для многозадачной среды. На всех работах более 12, где довелось быть, Linux использовали только однажды,на Светлане МЭ. Дома держал раздел на диске одно время, но сейчас времени на все не хватает( в семье младенец появился). GCC и MinGW конечно стоят на компе.
Да. Даже у z88dk была подобная проблема, но исправили.
Ну, надо просто прикинуть, стоит ли SDCC-8080 того, чтобы делать кропотливую и сложную работу по его адаптации к Digital Mars C. Другое дело - сконвертированный из Фортрана исходник компилятора PL/M припилить, это полегче.
P.S. Ну так что - нет желающих общаться в Телеграме? Я могу конечно пригласить в группу по ZXDev, но мы там больше про Спектрум.
ну а если принять, что DMC данность и весь проект будет на нем? Какие еще есть исходники С?
SMALL C это 70-е если не ошибаюсь. Ассемблер там не помню какой. По поводу исходников PL/M на Fortran-e пытался ковыряться, мрак! А конвертер Fortran to C, то опять какой? GCC?
Ну хорошо. А кто будет вести проект SDCC-8080 на DMC? Если Вы, тогда конечно. А если Ken Yap, то вряд ли он захочет использовать DMC.
Не GCC. Там юзается AT&T Fortran-to-C converter.
Я сегодня нашёл компилятор PL/M версии 4.1, сконвертированный в Си. А тот, который на Фортране - это PL/M версии 2.
https://github.com/ogdenpm/intel80toolsЦитата:
plm80/*.* this is an old port of plm80 v4.1 to C++. It was written
before I had completed the decompilation of plm80. Also I use
a number of kludges to map address variables, some of which I
would do differently in a future version.
Note it currently maps isis drives differently from the other
tools. Note the 10-Dec-2017 comment above.
plm80c/*.* this is a newer port of plm80 v4.1 to C. This is the one I am
adding commentary to as I understand the compiler internals.
https://github.com/ogdenpm/intel80to.../c-ports/plm80
Это свежак, кстати
http://retrotechnology.net/dri/dri_plm.htmlЦитата:
В 2018 году Марк Огден декомпилировал ISIS и инструменты PL/M на PL/M и преобразовал в программы на Си. - Херб Джонсон
http://retrotechnology.net/dri/plm1800_review.htmlЦитата:
В июне 2018 года я спросил Марка Огдена о работе PLM 1800. Он сказал, что знаком с недавно восстановленным программным обеспечением и обнаружил много общего между PLM 1800 и PL / M 8080. Марк проделал большую работу по воссозданию 8-битной и 16-битной операционной системы и кода ассемблера. Вот ссылка на его сайт github о некоторых его работах. В частности, он декомпилировал ISIS (Intel 8080 OS) и его компилятор plm80 в исходники C. - Херб Джонсон
P.S. Видимо, заниматься PL/M будет всё-таки больше Какос, а я только в роли консультанта. Хватит с меня и Оберона.Цитата:
Самым старым PLM является кросс-компилятор, написанный на FORTRAN, который работает в 2 прохода (PLM81 и PLM82), создавая шестнадцатеричный вывод. Качество кода довольно хорошее. Я увеличил размеры буфера и перевел код на C. Он отлично работает.
Затем существуют (как минимум) 2 версии собственного компилятора (PLM80), 3.3 и 4.0, которые работают под управлением ISIS, операционной системы Intel MDS. Марк Огден перевел двоичный файл на C.
У меня был некоторый успех с использованием препроцессора C с обоими вышеупомянутыми компиляторами PLM с преимуществом расширения языка с помощью MACRO, условной компиляции, включаемых файлов. В частности, я могу сделать один и тот же исходный код компилировать со всеми из них. :)
Есть также компиляторы PLM для 8051, 8096, 8086, 80186, 80386.
У меня не было большого успеха с PLMX, который, кажется, падает, когда источник превышает определенный размер.
PLM не такой мощный язык, как C. Тем не менее, сгенерированный код часто намного эффективнее, потому что C не очень хорошо компилируется в архитектуру, в которой отсутствует 16-битная индексированная адресация (для локальных переменных и аргументов функций). Я переписал CCP в PLM, добавив множество новых команд и все еще оставаясь в пределах 2 КБ, наложенных исходной архитектурой.
Да, когда я был молодым (помните Kernighan & Ritchie?), Я читал бесчисленные статьи, объясняющие, насколько ужасным был код, сгенерированный компиляторами C, особенно на Z-80. Удивительно (но логично) видеть, насколько привязаны к данному оборудованию некоторые системные языки (например, C). Но, конечно, новички, знающие только C, не могут этого понять, поскольку у них нет опыта.
C - отличный язык, но он просто не подходит для некоторых видов оборудования, например, для старых 8-битных процессоров. Есть 2 основные проблемы. Во-первых, выражения C переводятся в размер слова / указателя, который на 8080 равен 16 битам. Очевидно, это не очень эффективно. Во-вторых, как я уже говорил, локальные переменные динамически размещаются в стеке, но нет инструкций, обеспечивающих поддержку размера слова для такого доступа. Предположим, вы хотите передать адрес локального буфера в подпрограмму C на Z80. Самый маленький код (8 байт), который вы можете сделать: -
PUSH IX; Базовый указатель
POP HL
LD BC, буфер
ADD HL, BC; HL: = IX + буфер
PUSH HL
В отличие от более современного EZ80 допускается: -
PEA (IX + буфер)