Увы, не ошибаетесь. Я понадеялся, что кто-то переписал PL/M на PL/M с возможностью адаптации под любой 8-32 битный микропроцессор.
Вид для печати
Ну... под любой - эк Вы, батенька, подзагнули. Прям LLVM или GCC хотите, во всяком случае по масштабу.
PL/M - не такой уж и интересный язык для написания кода. Гор готового кода, чтобы ратовать за совместимость, на нём нет. Писать тяжело, отдаёт архаикой. Тот же Context поприятнее, особенно если его грамотно доработать.
TinyContext почти для всех интересных процев есть, и всё осязается одним мозгом в разумное время.
PL/M также и не самый лучший язык, чтобы писать на нём компиляторы. Если нет специальной задачи, чтобы компиль работал прямо на ретро-железе, то лучше его писать на языке как можно более высокого уровня.
Единственное достоинство PL/M - наличие хорошего компилятора для 8080. И только для него. Для остальных процев PL/M нет, во всяком случае, в доступе.
Если кто-то собирается мне рассказать про PL/M-86, то я в курсе. Но для 6502 или PDP-11 нет. Даже для Z80 нет (может где-то и есть, но не у нас).
идея ведь не моя. Это единственный в мире язык уровня ЯВУ- или MASM+, активно использующий регистры конкретного MCU и оптимизацию. Арифметика и логика, не каждому новичку доступные на ассемблере и примитивная обработка строк, прямое обращение по адресам( где могут быть процедуры монитора и системные переменные), условная компиляция, определение собственных макро. Размещение по конкретным адресам фрагментов кода. Да в каких-то версиях компиляторов С, работающих со стеком это тоже доступно. Но в целом это альтернатива С. И не такая как FORTH. Работа с внешними модулями и с библиотеками, написанными на других языках. Хорошее отображение всех нюансов построения выходного кода после LINK и LOCATE, включение и отключение отладки даже на уровне исходного кода для компилятора. Да, для Z80 никто версии не видел. Да, если она и была, так ли хорошо она могла использовать все регистры и все недокументированные команды z80? Компилятор PL/M-86 хороший мостик в мир кросс-компиляторов PL/M, написанных на PL/M.
TinyContext конечно хорош, но где там кодогенерация для всех регистров z80 и использование недокументированных команд?
Ну упс, TinyContext это о простоте, а использовать все тонкости Z80 сложно...
Насчёт условной компиляции в PL/M не уверен. Вы знаете, как доступные компили PLM и PLMX компилят такое?
А вот примерно так:Код:if 1 = 1
Условная компиляция конечно может быть как расширение компилятора, но в контексте PL/M о ней мало кто слышал ;)Код:MVI A, 1
CP 1
...
- - - Добавлено - - -
Архаичность его убивает весь лично мой интерес. Писать на нём громоздко и сложно, поверьте. Наверное на асме в каком-то смысле проще, ибо более предсказуемо.
Я был свидетелем того, как мои коллеги в начале 80-х в течение почти 10 лет разрабатывали на нем втроем проект САУ установкой для получения бесдислокационных монокристаллов кремния с использованием телевизионного датчика зоны расплава. У них было несколько версий и десятки модулей в отдельных исходных файлах. Рекомендацию использовать PL/M-80 они получили или в главке, или во ВНИИЭСО. Правда RMX-80 они почему-то не стали использовать, хотя и напрашивалось такое решение. Та аппаратура была громоздка. А вот если хотя бы та процессорная плата от МСУВТ В7, ПМВ01 была бы в чипе( 8080+8228(или 8238)+8224+8251+8253+8259+формировател ь шины с возможностью вешать внешнюю память и параллельно такие же чипы) и к ней среда разработки с PL/M-80 то и на практике имело бы смысл использовать. Все умощнение MCU для многих практических задач весьма избыточно. А в AVR и Microchip-ах на ранних стадиях даже C не всегда проходил. Использовать же распространенное процессорное ядро 8080 в контроллерах было коммерчески не обоснованно. Для разработчиков на традиционных микро-ЭВМ ( в режиме управляющих ЭВМ) было бы удобней использовать привычные программные средства. Когда была возможность использовать PL/M-80 и C в системах, где не было графического дисплея, то выбирали, как не странно, PL/M-80. Ведь если CPU был CISC, а не RISC - то странно было бы не использовать это( огромное количество регистров и богатую систему машинных команд). Ну а в C почти всё было заточено под использование стека. И брали в этом случае "переносимостью", хотя иногда все-равно приходилось "допиливать" исходники.
Архаичность мой интерес никогда не убивала. Если прошлое решение в чём-то было почти идеально, то не использовать его в будущем весьма странно. Гениально как водяная мельница. Никаких лишних промежуточных звеньев. На входе вода, на выходе мука. Никакого сперва с помощью генератора получаем электричество -затем с помощью мотора его расходуем, теряя по пути кучу энергии.
- - - Добавлено - - -
к сожалению документ от ВНИИЭМ переводной про условную компиляцию у меня не сохранился. А в инете сейчас ссылок нет на оригинал "PL/M-80 compiler operator's manual" Intel 1977 где это могло быть описано.
Остается довольствоваться этим. "PL/M-86 COMPILER OPERATING INSTRUCTIONS for 8O8O/8O85-Based Development Systems" в параграфе 3.10 Conditional Compilation Controls
и экспериментировать.Код:$IF' DEBUG = 1
CALL PRINT$DIAGNOSTICS (TRUE, FALSE);
$ RESET (TRAP)
$ELSEIF' DEBUG = 2
CALL PRINT$DIAGNOSTICS (TRUE, TRUE);
$ RESET (TRAP)
$ELSEIF DEBUG = 3
CALL PRINT$DIAGNOSTICS (TRUE, TRUE);
$ SET (TRAP)
$ENIHF
Доброго вечера!
Имеется в виду этот документ?
ISIS-II PL/M-80 Compiler Operator’s Manual 9800300C
https://mark-ogden.uk/files/intel/pu...nual-Apr81.pdf
PS: Посмотрел, это для ISIS-H Operating System https://www.retrotechnology.com/restore/isis.html
Вот ещё интересный сайтик https://bitsavers.org/
Исходники всякие, есть и под Z80 и по PL/M
https://bitsavers.org/bits/CPM_bitpi...r_stuff_box_2/
вот ещё в разделе http://bitsavers.org/pdf/intel/PLM/
http://bitsavers.org/pdf/intel/PLM/9...nsMan_1975.pdf