Важная информация

User Tag List

Страница 1 из 6 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 57

Тема: Язык Cowgol и компилятор для 6502, 8080, Z80, 8086, 80386, PDP-11, ARM(thumb2) и в Си

  1. #1
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Язык Cowgol и компилятор для 6502, 8080, Z80, 8086, 80386, PDP-11, ARM(thumb2) и в Си

    Позвольте поделиться находкой. Я, в принципе, давно знал о нём, но не так давно узнал, что появилась поддержка проца PDP-11. Таким образом, теперь он поддерживает все интересующие меня архитектуры.


    Собирается под Linux при помощи make (надо доустановить один пакет ручками). У меня под WSL собрался с ошибками. Под винду нативно его никто не собирал, насколько я понимаю. Также сам компилятор и утилиты могут работать на ретро-платформах под CP/M. Процесс компиляции разбит на обработку фронт-эндом (cowfe), потом бэк-эндом (cowbe) с генерацией промежуточный файлов. Обычный подход для старых компиляторов, работающих на машинах с маленьким объёмом памяти.

    Пара слов о языке Cowgol. Специально адаптированный под ретро-платформы язык. Нет фрейма стека (и рекурсии). Есть 8-, 16- и 32-битная арифметика со знаком и без. Все приведения типов только явные. Синтаксис немного непривычный, но уж точно получше, чем в PL/M.

    Сам язык выглядит намного более платформенно-независимым, чем PL/M.

    Компилятор Cowgol написан на нём самом. Как производилась раскрутка - неизвестно.

    Кодогенераторы относительно простые. Качество кода - терпимое. До идеала - надо дорабатывать

    PDP-11

    8080

    8086

    Z80

    6502

    Автор сего языка жив и сейчас занимается портированием CP/M под 6502.

    Я намерен поковырять Cowgol. Если хотите присоединиться, давайте создадим группу в telegram.

    - - - Добавлено - - -

    Да, забыл добавить: бэк-энд генерирует текст на асме, а не машкод. Так что чистым пуристам не понравится.

  2. Эти 3 пользователя(ей) поблагодарили Oleg N. Cher за это полезное сообщение:

    Destr (09.12.2023), mastermind (08.12.2023), parallelno (08.12.2023)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,804
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    113
    Поблагодарили
    87 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Олежка, бро, так держать!
    Ярило наше всё ( ) и может быть все твои концепты неясные-непонятные станут тем что нужно для дальнейшего!
    Всё это напоминает Ли Цысинь "Задача трех тел" - прочти, друже, не пожалеешь!
    (по случаю приношу извинения что не общались долго - уж очень меня жизнь подкосила, выкарабкиваюсь)

  5. Этот пользователь поблагодарил Destr за это полезное сообщение:

    Oleg N. Cher (09.12.2023)

  6. #3
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пара видосов по Cowgol:

    (для цели ZX Spectrum)(нативно на BBC Master)

  7. #4
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию


    Восьмичасовый стрим написания бэк-энда Cowgol для 8080:



    - - - Добавлено - - -


  8. Этот пользователь поблагодарил Oleg N. Cher за это полезное сообщение:

    parallelno (11.01.2024)

  9. #5
    Guru Аватар для andrews
    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,686
    Спасибо Благодарностей отдано 
    417
    Спасибо Благодарностей получено 
    195
    Поблагодарили
    173 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    https://www.youtube.com/watch?v=cAoP91QDLy4
    (для цели ZX Spectrum)
    здесь можно включить субтитры на английском

    - - - Добавлено - - -

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Восьмичасовый стрим написания бэк-энда Cowgol для 8080:

    https://www.youtube.com/watch?v=iUarU8Fhvug
    а здесь, к сожалению, нет.

    А вообще теперь авторы видосов могут разрешить подключать AI на звуковую дорожку и переводить на любой язык голос. Правда не знаю, бесплатно или нет.
    С неродного языка многоминутный "перевод влет на слух" утомляет и вырубает мозг. Титры здорово мозг разгружают.
    Последний раз редактировалось andrews; 11.01.2024 в 21:54.

  10. #6
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    СРЕДА РАЗРАБОТКИ COWGOL ДОСТУПНА НА Z80 И CP/M

    Cowgol на Z80 под управлением CP/M объединяет все необходимое для предоставления среды разработки Cowgol (включая Си и ассемблер) на Z80 под управлением операционной системы CP/M, что упрощает начало работы с языком Cowgol, небольшим, самораскручиваемым и современным.

    Cowgol — экспериментальный современный язык для (очень) маленьких систем.

    Zilog Z80 представляет собой 8-битный микропроцессор, распространенный во встроенных системах 1970-х и 1980-х годов, а CP/M — той же эпохи операционную систему для массового рынка. Что касается Cowgol, это набор инструментов, язык программирования, основанный на Ada, и компилятор предназначенный для очень маленьких систем, таких как Z80.

    Отличием Cowgol является то, что он предназначен для самостоятельного размещения на этих небольших системах; Cowgol написан сам по себе и способен компилироваться сам. После того как компилятор скомпилирован для конкретной целевой архитектуры (например, Z80), его можно затем использовать в целевой системе для компиляции и запуска программ самостоятельно.

    К счастью, нет необходимости начинать с нуля. Репозиторий Cowgol на Z80, работающий под управлением CP/M (см. первую ссылку этого поста), содержит предварительно скомпилированные двоичные файлы и руководство по их использованию.

    Cowgol все еще находится в стадии разработки, но он работает. Это современный язык, хорошо подходящий для (очень) небольших систем, и благодаря этому проекту его запуск и запуск на Z80 под управлением CP/M стал настолько простым, насколько это возможно.

    Спасибо [feinfinger] за подсказку!


    (обновлено 7 декабря 2023 г.)

    Cowgol — это язык программирования для очень маленьких систем, включая компьютеры Z80 (см. https://github.com/davidgiven/cowgol ).

    Здесь вы найдете полную среду разработки Cowgol для CP/M с процессором Z80.

    Чтобы скомпилировать исходные файлы Cowgol (и, необязательно, файлы Си и ассемблера) или создать исполняемый файл на основе исходных файлов Cowgol (и, необязательно, файлов Си и ассемблера), используется следующая команда:

    COWGOL [-C] [-Mmapfile] [-Lfile] source1.cow [ source2.cow | источник.c | источник.as ] ...

    Можно указать более одного исходного файла (с расширениями: .cow = исходный файл Cowgol, .c = исходный файл C, .as = исходный файл ассемблера)

    Первый файл должен быть исходным файлом Cowgol (он содержит «основной»).

    Подпрограммы Си и ассемблера можно вызывать из исходных файлов Cowgol.

    Если вы хотите просто скомпилировать/собрать файлы, необходимо использовать опцию -C.

    Если опция -C не указана, файлы сначала будут скомпилированы/ассемблированы, а затем скомпонованы в исполняемый файл CP/M (названный в честь первого файла в списке).

    Опция -M создает карту памяти для исполняемого файла.

    Опция -Lfile добавляет файл «libfile.lib» в список ссылок.

    HiTech LINK используется для связи объектных файлов.

    Необходимы следующие исполняемые файлы:

    • $EXEC.COM, «пакетный процессор» из компилятора C HiTech.
    • COWGOL.COM, компонент, который запускает все остальные исполняемые файлы (модифицированный вариант C.COM от HiTech).
    • COWFE.COM, часть компилятора Cowgol (модифицированный вариант оригинального COWFE, написанный Дэвидом Гивеном)
    • COWBE.COM, часть компилятора Cowgol (модифицированный вариант оригинального COWBE, написанный Дэвидом Гивеном)
    • COWLINK.COM, часть компилятора Cowgol (модифицированный вариант оригинального COWLINK, написанный Дэвидом Гивеном)
    • COWFIX.COM, интерфейс к Z80AS (преобразует выходные данные COWLINK в синтаксис, принятый Z80AS)
    • LINK.COM, компоновщик HiTech
    • CPP.COM, препроцессор C HiTech.
    • P1.COM, компилятор C HiTech, этап 1.
    • CGEN.COM, компилятор C HiTech, этап 2
    • OPTIM.COM, оптимизатор компилятора C от HiTech.

    Также должен присутствовать файл библиотеки «cowgol.coo».

    Папка EXE содержит исполняемые файлы.

    Среда выполнения имеет стек размером 512 байт, что больше исходного стека размером 128 байт.

    См. «Dynamic_allocation_in_Cowgol.txt» для получения подробной информации об использовании функций динамического распределения из Cowgol.

    Папка INCLUDE содержит включаемые файлы и файл библиотеки cowgol.coo.

    В папке «Примеры» содержатся примеры сеансов компиляции.


  11. Этот пользователь поблагодарил Oleg N. Cher за это полезное сообщение:

    andrews (12.01.2024)

  12. #7
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дэвид Гивен говорит:
    11 декабря 2023 г., 6:37

    Я сделал Ковгол! Это всё еще грубовато, но достаточно мощно, чтобы написать на нем компилятор. Очевидно. С точки зрения самостоятельного хостинга самая большая недостающая функция заключается в том, что компилятор основан на генераторе парсера Lemon, который написан на Си, поэтому для изменения парсера всегда требуется кросс-компиляция с ПК. Мне нужно подумать о замене этого рукописным парсером. Если я смогу уменьшить размер кода, это тоже будет хорошо, так как в настоящее время внешний интерфейс компилятора занимает 35 КБ на Z80 (и 36 КБ на 8080, 43 КБ на 6502 и 33 КБ на 6303).
    https://hackaday.com/2023/12/10/cowg...cp-m/#comments

    - - - Добавлено - - -

    Ладислав Силагьи говорит:
    12 декабря 2023 г., 5:59

    @JRD:
    Cowgol — очень привлекательный язык для всех, кто работает на компьютерах на базе Z80. Однако для компьютеров Z80 в оригинальной версии Дэвида Гивена на GitHub не было достойной «среды разработки». То есть не было возможности скомпилировать программы Cowgol с помощью простой команды, как в случае с программами, написанными на Си, где вы используете команду:

    >C source.c

    , чтобы скомпилировать source.c и создать исполняемый файл source.com. построен.
    Это именно то, что я сделал, предоставив платформу для использования одной команды, например:

    >cowgol source.cow

    ,чтобы скомпилировать source.cow, скомпоновать его и построить исполняемый файл source.com.
    Более того, вы можете смешивать Cowgol, Си и ассемблер:

    >cowgol main.cow подпрограммуа.c подпрограмма2.as

    , чтобы получить скомпилированные файлы source.cow и подпрограммы подпрограммы1.c, сборку подпрограммы2.as, связанные объектные файлы и сборку файла main.com. .
    Платформа использует компоненты HiTech (компилятор и компоновщик C), специальный синтаксический анализатор и исполнитель командной строки Cowgol.com (адаптированный из оригинального C.COM) и мой собственный ассемблер Z80AS.
    Примеры см. на https://github.com/Laci1953/Cowgol_on_CP_M .
    Сейчас я работаю над улучшенным компилятором Cowgol, способным компилировать исходные файлы большего размера на системах Z80 с 128 или 512 КБ ОЗУ.
    Он будет полностью использовать доступное пространство оперативной памяти для размещения объектов, позволяя обрабатывать очень большие файлы Cowgol (надеюсь, он сможет скомпилировать себя сам…)

    Небольшой тест уже работает с частью компилятора (cowfe.com); тест выполняется на компьютере Z80 с оперативной памятью 512 КБ:

    D>cowfe t.cow test
    COWFE: 18 КБ свободной основной памяти
    448 КБ свободной расширенной памяти
    > T.COW
    выполнено: 17 КБ свободной основной памяти
    442 КБ свободной расширенной памяти
    D>

    Конечно, до завершения всех испытаний еще далеко…

    Ладислав

  13. Этот пользователь поблагодарил Oleg N. Cher за это полезное сообщение:

    Kakos_nonos (12.01.2024)

  14. #8
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Из личной переписки с Дэвидом, автором Cowgol.

    Цитата Сообщение от David Given
    Здравствуйте --- спасибо за добрые слова!

    Я знаю об Oberon, хотя никогда им не пользовался. (Я живу в Цюрихе, где находится ETH, так что я вроде как должен знать о нём! Я даже видел некоторые из его машин Lilith в местном VCF). Однако я никогда не был особенно увлечён этой ветвью виртовских языков, поэтому Cowgol в значительной степени основан на Ada, с некоторыми изменениями, чтобы сделать его более привлекательным для современных программистов (таких как я). Одним из них была замена Ada <> на C-подобный !=, просто потому что это намного привычнее. Я не хочу использовать # по той же причине - он просто выглядит странно. Аналогично и с символом комментария. Так что многие из ваших замечаний о том, что он не похож на Оберон, являются намеренными!

    (На самом деле Ада использовала -- для введения комментария, но я не хотел этого делать, потому что это усложняет лексер).

    Я знаю Фабрицио Карузо; одним из моих других проектов является сопровождение Amsterdam Compiler Kit, и я общался с ним по поводу программирования на 8080.
    Цитата Сообщение от Oleg N. Cher
    Уважаемый Дэвид,

    Если вы вдумаетесь в графическое начертание символа "#", вы начнете верить, что это самый подходящий символ для обозначения "не равно". Это "=", перечеркнутый дважды. И в этом смысле я не за то, чтобы снимать шляпу перед дурными привычками программистов на Си, а за то, чтобы формировать полезные привычки. Преимущество "#" в том, что он также находится в таблице ASCII и доступен для всех ретро-компьютеров.

    Oberon - уникальный язык. Последняя редакция Oberon-07 кажется мне слишком минималистичной, но Oberon-2 и особенно Component Pascal очень хороши. По моему мнению (и по мнению Вирта), это по-прежнему лучший выбор для изучения программирования.

    Я бы не сказал, что Cowgol сильно похож на Ada. Это своего рода смесь Algol 60/68 и Си с небольшими добавлениями.

    Кстати, о комментариях. Oberon принимает только один тип комментариев (* comment *), но они могут быть вложенными. Такие комментарии очень удобно использовать для временного комментирования большого блока кода. Я ничего не имею против однострочных комментариев, но я бы не хотел отказываться от возможности быстро закомментировать блок кода.

    Я из того же русскоязычного сообщества, что и shattered, и меня интересует не Unix v7, а RT-11, и я хотел бы отметить, что я так и не понял, как использовать ваш ассемблер для PDP-11. Я получаю только это:

    zorko@User-PC:~/9/BK/obj$ ../bin/cowasm Devyatka.mac
    PDP-11 Assembler (C) 2020 David Given; 4096kB free
    Pass 1
    error at line 1: expected an identifier

    Я не знаю, что с этим делать. Я также не знаю, может ли ваш ассемблер в конечном итоге генерировать .sav-файлы для RT-11.

    Еще о вашем бэкэнде для pdp-11. Сейчас он генерирует числа следующим образом:

    mov #8911h, -(sp)

    macro-11, который использовал shattered, не понимает суффикс h для 16-ричных чисел. Нехорошо, что вы нарушили совместимость с самым функциональным ассемблером в мире pdp11.

    Что касается генерации кода в z80. Я использую cowgol для генерации кода для Sinclair ZX Spectrum, и именно в этом месте org 100h и настройки стека очень сильно мешают:

    org 100h
    lxi sp, TOP+128
    call f29___main
    rst 0

    Этот rst 0 в конце вызывает перезагрузку ZX Spectrum. Спектрум также имеет ПЗУ по адресу 100h. Поэтому начальный адрес для него должен быть от 6000h

    Вы же понимаете, что я не могу использовать Cowgol в его нынешнем виде, и мне все равно придётся вносить свои правки. Я прошу вас о понимании. Меня не интересует ни сама CP/M, ни работа Cowgol в CP/M. Но то, что компиляция HelloWorld занимает 17 минут, когда у вас на столе стоит компьютер с частотой 3 ГГц, - это как-то странно.

    Вместо этого я бы предпочёл больше заниматься оптимизацией, хотя это очень трудная работа. Если я и буду как-то подправлять свой форк Cowgol, то точно в сторону большего упрощения, а не потакания плохим сишным привычкам. Вместо сложного end loop / end if я бы предпочел обычный end. Это приведёт к меньшему засорению кода.

    Вы не будете возражать, если я начну разрабатывать форк Cowgol по-своему? Но имейте в виду, что у меня нет и доли ваших способностей к низкоуровневому машинному коду и усердия. Так что в итоге может получиться что-то, что вам совсем не понравится.

    P.S. Я хотел бы собрать cowgol для Win32, но не могу запустить все утилиты из /bootstrap - результирующий файл показывает 0 свободных байт и не открывает файлы. В итоге, я бы (опять же, если бы это был я) просто сосредоточился на создании набора утилит для целевых Linux/AMD64 и Win32/i386. Это покроет желания 99% тех, кто будет разрабатывать на Cowgol. Никто не будет делать это на CP/M или DOS.

    Тем не менее, это самый удивительный проект, который я видел за последнее время.
    Цитата Сообщение от Oleg N. Cher
    Уважаемый Дэвид,

    Возможно, вы об этом не слышали. Ретро-язык, очень похожий на Cowgol.

    Millfork для Atari, Apple II, ZX Spectrum, MSX, CP/M, NES, Game Boy, MS-DOS и т.д

    Поддерживает генерацию в z80 и 6502. Компилятор написан на Scala. Он поставляется с игрой в Pong для NES (включена в некоторые руководства по NES и переписана из Asm).

    https://karols.github.io/millfork
    https://karols.github.io/millfork/various/faq.html
    https://github.com/KarolS/millfork
    https://www.libhunt.com/compare-millfork-vs-cowgol

    Я не утверждаю, что это лучше, чем Cowgol. Cowgol обладает неоспоримыми преимуществами в простоте и компактности. Но всё равно стоит посмотреть.

    Не обижайтесь на меня, но я бы хотел больше внимания уделять созданию полезных инструментов для создания ретро-игр для целого ряда ретро-платформ, а не делать акцент на CP/M и набортной работе компилятора и инструментов.

    Особенно, если вы хотите помочь распространению Cowgol, проще всего сделать это на волне ностальгии по старым компьютерам и играм. CP/M - отличная система для 8080, но она не была слишком распространена в бывшем СССР. У нас были клоны Sinclair ZX Spectrum, Агаты (клоны Apple), БК/ДВК и УКНЦ (на базе pdp11), а позже - MS-DOS.

    В то время у нас также были машинки на базе 8080, но на кассетах. И в ПЗУ обычно был монитор объёмом 2 Кбайт. И не было CP/M, и не могло быть. Потому что когда началась эра гибких дисков быстро стали доступны более мощные компьютеры.

    Так что у нас мало ностальгии по CP/M, но у нас много ностальгии по ретро-играм, включая их разработку. За последние годы наше сообщество разработало множество отличных игр для целого ряда ретро-платформ, популярных в бывшем СССР.

    Я, конечно, хочу иметь возможность просто скачать готовый релиз Cowgol и начать разработку. Потому что вам легко набрать "make" и все пересобрать. Но для людей, которые пришли посмотреть на это, всё далеко не очевидно. Особенно, если они будут собирать его под WSL и столкнутся с теми же проблемами, что и я.

    Русскоязычное сообщество обладает большим потенциалом для освоения Cowgol, но им нужно предоставить рабочий инструмент. Они не будут разбираться с компиляцией Cowgol и ошибками сборки, как я пытаюсь это сделать с помощью вас, shattered и других людей.

    Поэтому мне кажется, что вам следует позиционировать Cowgol как инструмент для более кроссплатформенной разработки, чем Си. Что отличает его от языка ассемблера, так это переносимость (нет необходимости иметь несколько кодовых баз для разработки сразу для нескольких платформ). А от Си - повышение эффективности благодаря полезным функциям Cowgol. Это большая задача, но, безусловно, достойная.

    Также. Людей определённо будет трудно убедить в том, что Cowgol подойдёт им лучше, чем Си или ассемблер. Дело в том, что наше сообщество состоит из заядлых ретро-программистов, которые хотят заставить аппаратное обеспечение работать на 150%, а это можно сделать только на языке ассемблера. Этих людей может удивить только чрезвычайно высокое качество генерации кода, превосходящее SDCC, ZSDCC (от z88dk), а также Hitech C и коммерческий IAR C.

    Что же касается меня, то я помню завет Вирта, который звучит так: "вы не преуспеете в программировании, если не сосредоточитесь на переносимости ваших программ между платформами". Я вижу в этом смысле огромный потенциал у Cowgol. Только рано почивать на лаврах, это нужно развивать. В последнее время я видел, что вы делали большой упор на портирование CP/M для 6502. Как вы оцениваете полезность такой разработки для сообщества 6502? Возможно, было бы лучше потратить время не на это портирование, а на Cowgol? В любом случае, я собираюсь разработать игру чтобы посмотреть на Cowgol в действии, как только пойму как собрать на этом HelloWorld для интересующих меня платформ.

  15. #9
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от 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 ПЗУ.)
    Цитата Сообщение от 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.
    Ну всё, про хорошую кодогенерацию в Cowgol можно забыть. Делать её просто некому. Хинт от Дэвида: юзайте LLVM. Я, кстати, не знал, что LLVM столь хорош для 6502.

    Увы, у каждого из нас мозг вывихнут по-своему. Дэвиду интересно чтобы компилятор работал на CP/M.

    - - - Добавлено - - -

    Ну что, есть желающие заняться низкоуровневой кодогенерацией? То, что по сути советовали мне сделать.

    Cowgol база отличная, для 8 бит подходит гораздо лучше Оберона.

  16. #10
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Ну что, есть желающие заняться низкоуровневой кодогенерацией? То, что по сути советовали мне сделать.

    Cowgol база отличная, для 8 бит подходит гораздо лучше Оберона.
    Делай сам, не жди никого
    И сразу игру на нем напиши какую-нить для популяризации

Страница 1 из 6 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. SNASM кросс ассемблер для 6502/Z80
    от drbars в разделе Программирование
    Ответов: 4
    Последнее: 25.04.2018, 01:16
  2. TurboDOS система для кластера на Z80/8086
    от bigral в разделе Зарубежные компьютеры
    Ответов: 0
    Последнее: 09.01.2015, 02:02
  3. Компилятор С и ASM для Z80 на C#
    от ZXMAK в разделе Софт
    Ответов: 28
    Последнее: 18.11.2014, 16:31
  4. кросс компилятор С для Z80
    от vitasam в разделе Программирование
    Ответов: 24
    Последнее: 04.03.2007, 18:03

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •