Сообщение от David Given
Что касается языкового стиля: могу только повторить, что Cowgol не основан на Oberon, и я не хочу вносить в него серьёзные изменения на данном этапе.
Что касается ассемблера: да, он не совместим с macro11. На самом деле он использует тот же движок ассемблера, что и классический ASM из 8080 CP/M, потому что это то, что было у меня под рукой в то время. Если вы хотите собрать что-то с помощью macro11, вам нужно будет изменить генерируемый синтаксис, отредактировав серверную часть PDP-11. Вы можете найти сгенерированные ассемблерные файлы в каталоге .obj после сборки - например, .obj/bin/cowbe-pdp11.unixv7.asm. Это создаст двоичные файлы для Unix версии 7. Поддержка RT11 только начинается, но для неё нет библиотеки времени исполнения. (Если вы хотите внести свой вклад, я бы с удовольствием добавил поддержку.)
Re the Spectrum: да, вы, очевидно, не можете запускать двоичные файлы CP/M в Spectrum! Вам нужно будет написать библиотеку времени исполнения и модуль компоновщика специально для Spectrum. Скопируйте rt/cpmz в rt/spectrum и отредактируйте его --- вы захотите отключить модули argv и file, а cowgol.cos можно оставить как есть, поскольку он просто содержит вспомогательные процедуры компилятора. Для компоновщика скопируйте src/cowlink/arch8080.coh в src/cowlink/archspectrum.coh и отредактируйте его. Также есть несколько довольно грубых сборочных скриптов, которые нуждаются в обновлении; toolchains.lua определяет все цепочки инструментов, которые будут созданы. Вы можете закомментировать некоторые, если они вам не интересны.
Я не пробовал собирать это для win32. Вероятно, это было бы довольно болезненно.
Делайте форк: вам не нужно спрашивать! Лицензия либеральная и позволяет вам делать с ней всё, что вы хотите. Но имейте в виду, что если вы слишком существенно что-то измените, я не смогу принимать от вас пулл реквесты...Сообщение от David Given
> Не обижайтесь на меня, но я бы хотел больше внимания уделять созданию полезных инструментов для создания ретро-игр для целого ряда ретро-платформ, а не делать акцент на CP/M и набортной работе компилятора и инструментов.
Это прекрасно, но... Я не хочу этого делать. Для меня это упражнение в попытке создать компилятор для современного языка, который будет работать в этих сверхограниченных системах. Как вы уже выяснили, если вас интересует кросс-компиляция, есть другие, лучшие языки. Например, LLVM сейчас создает довольно хороший машинный код для 6502 и Z80. Для меня основной целью является создание компилятора, который будет работать в этих системах, а не создание компилятора для этих систем (хотя я также нацелен на кросс-компиляцию, потому что на самом деле пытаться что-либо сделать на 4 МГц Z80 невероятно неприятно).
> Я, конечно, хочу иметь возможность просто скачать готовый релиз Cowgol и начать разработку. Потому что вам легко набрать "make" и все пересобрать. Но для людей, которые пришли посмотреть на это, всё далеко не очевидно. Особенно, если они будут собирать его под WSL и столкнутся с теми же проблемами, что и я.
Да, я понимаю ваше разочарование - создавать его сложно. Есть несколько доступных двоичных файлов, но они действительно старые. Оказывается, распространять двоичные файлы сложнее, чем кажется. В какой-то момент я хочу настроить autobuilder, но он сможет создавать только двоичные файлы для Linux i386. (Которые могут запускаться на WSL?)
Что касается ваших проблем со сборкой: не могли бы вы прикрепить журнал сборки, пожалуйста?
Кроме того, прямо сейчас он на самом деле не настроен для автономной работы. Все программы, с которыми я работал, были интегрированы в систему сборки, которая действительно сложна. Это то, над чем нужно поработать.
> В последнее время я видел, что вы делали большой упор на портирование CP/M для 6502. Как вы оцениваете полезность такой разработки для сообщества 6502? Возможно, было бы лучше потратить время не на это портирование, а на Cowgol? В любом случае, я собираюсь разработать игру чтобы посмотреть на Cowgol в действии, как только пойму как собрать на этом HelloWorld для интересующих меня платформ.
Дайте мне знать, если у вас возникнут какие-либо проблемы!
(IIRC, я действительно запустил предыдущую версию на Spectrum, но это было сложно, потому что нет ничего похожего на стандартный API операционной системы. IIRC есть rst, который напечатает символ, и все. Все остальное должно быть сделано путем вызова в Basic ПЗУ.)Ну всё, про хорошую кодогенерацию в Cowgol можно забыть. Делать её просто некому. Хинт от Дэвида: юзайте LLVM. Я, кстати, не знал, что LLVM столь хорош для 6502.Сообщение от Oleg N. Cher
Я всё же замечу мимоходом, что есть привычки, которые даже не рациональны. Они просто более привычны. Людям труднее всего пересматривать их и размышлять о них. Оберон - моя зрелая любовь, а не детский отпечаток, как ностальгия по ZX Spectrum.
Вы, вероятно, не согласны с моими наполеоновскими планами, тем более, что я вообще не понимаю, как собирать Cowgol. Я не очень хорошо владею Lua и плохо разбираюсь в Python. Мне гораздо проще модифицировать серверную часть для CP/M, чем копировать её для Spectrum отдельно - потому что я просто не пойму, куда её добавлять.
Я не эксперт по RT-11, и сейчас хочу сначала попробовать просто сгенерировать файл .bin с адреса 200h (как для нашей ретро-платформы БК-0010). (у меня есть утилита sav2bin). Да, это не самый простой способ получить .bin для платформы на базе pdp11, так что подскажите мне способ получше...
Для win32 все не так болезненно, есть просто баги (на самом деле различия логики работы под UNIX и Windows). Для win32 всё собирается отлично даже без предупреждений. Нужны только вызовы pread и pwrite, которые лично я взял из plzip-1.5-rc2.w32-w64.zip, так как в MinGW их нет.
Но проблема в том, что даже для Linux файлы из папки /bootstrap в текущем состоянии вашего репозитория выдают ошибочные нерабочие исполняемые файлы, которые показывают 0 байт свободной памяти. Попробуйте сами...
Если вы хотите создать .exe для Windows под Linux, то, конечно, возникнут трудности. Но под Windows, я уверен, вам подойдет любой компилятор. Я использовал MinGW.
Увы, у каждого из нас мозг вывихнут по-своему. Дэвиду интересно чтобы компилятор работал на CP/M.
- - - Добавлено - - -
Ну что, есть желающие заняться низкоуровневой кодогенерацией? То, что по сути советовали мне сделать.
Cowgol база отличная, для 8 бит подходит гораздо лучше Оберона.





Ответить с цитированием