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

User Tag List

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

Тема: Ретро-ЯП Millfork для Atari, Apple II, ZX Spectrum, MSX, CP/M, NES, Game Boy и MS-DOS

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

    По умолчанию Ретро-ЯП Millfork для Atari, Apple II, ZX Spectrum, MSX, CP/M, NES, Game Boy и MS-DOS

    Ещё один язык, похожий на Cowgol. Поддерживает генерацию в z80 и 6502. Компилер написан на Scala. В поставке есть игра Pong для NES (прилагаемая в каком-то NES-туториале и переписанная с асма).


    Кто целевая аудитория?

    Millfork был разработан как язык для разработчиков старых 8-битных платформ, в основном для разработчиков игр, которые мало используют расширенные возможности C, но у которых нет времени писать ассемблер.

    Что послужило вдохновением?

    Главными вдохновителями были Atalan, а также Quetzalcoatl, Batari BASIC и NESHLA. К сожалению, Atalan был заброшен, а компилятор остался в нерабочем состоянии. Цель Millfork — добиться успеха там, где Atalanпотерпел неудачу.

    Какие платформы поддерживаются?

    Большие программы в Millfork были разработаны для Commodore 64.

    Millfork также был протестирован (через эмуляторы) для запуска тривиальных программ на других 8-битных компьютерах Commodore, 8-битных компьютерах Atari, Apple II, BBC Micro, ZX Spectrum 48k, NEC PC-88, MSX, CP/M, NES, Game Boy, Atari Lynx, Atari 2600 и MS-DOS.

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

    Какие микропроцессоры поддерживаются?

    • MOS 6502 и его потомки: 6510, 65C02, Ricoh 2A03 и в меньшей степени CSG 65CE02, Hudson Soft HuC6280 и WDC 65816. 6509 не поддерживается и не будет, однако с некоторой осторожностью к нему можно относиться как к обычному 6502.

    • Intel 8080, Intel 8085, Zilog Z80, Sharp LR35902 (также известный как GBZ80)

    • Существует также частичная экспериментальная поддержка Intel 8086 посредством автоматического преобразования 8080 в 8086. Сгенерированный код очень большой и очень медленный.

    • Поддержка Motorola 6809 появится в будущем. Вы можете проверить ход работы, создав собственную платформу с использованием процессора 6809, но подавляющее большинство программ Millfork даже не скомпилируются.

    Почему Millfork, когда я могу использовать ассемблер?

    • Ассемблер не будет переносим. Если вы хотите использовать как 6502, так и Z80, вам придется поддерживать две отдельные кодовые базы.

    • Милфорк более продуктивен. Программисту не нужно беспокоиться о распределении регистров или размерах переменных.

    Почему Millfork, когда я могу использовать C?

    • Миллфорк обычно немного быстрее.

    • Нет среды выполнения, поэтому проще создавать небольшие программы.

    • Многие функции, обычно встречающиеся в продвинутых ассемблерах, но редко встречающиеся в языках высокого уровня, также доступны в Millfork, например макросы, включение бинарных файлов, явное распределение памяти, инициализация массивов выражениями.

    • Millfork более тщательно обращается с кодировкой текста.

    • Большое разнообразие целочисленных типов почти произвольных размеров.

    • Семантика разработана для 8-битных микропроцессоров, поэтому обычно требуется менее явное приведение типов.

    • Низкоуровневые вещи, такие как перенос после арифметических операций или отдельных байтов более крупных переменных.

    • Встроенная поддержка десятичной арифметики.

    • Простое взаимодействие со ассемблером.

    Звучит так, словно Миллфорк превосходит С во всех аспектах, верно?

    К сожалению нет:

    • Милфорк очень требователен. Он позволяет избежать компиляции сложных выражений, особенно тех, которые содержат более крупные переменные.

    • Поддержка целочисленной математики не очень полная.

    • Математическая поддержка чисел с плавающей запятой отсутствует.

    • Арифметика указателей очень ограничена.

    • Препроцессор Millfork менее мощный, чем препроцессор C.

    • Нет поддержки связывания с внешними библиотеками, написанными не на Millfork. Вам нужно либо переписать внешнюю сборку в синтаксис сборки Millfork, либо сгенерировать статический двоичный файл и связать его вручную с помощью директивы file.

    • Поскольку работа над компилятором находится в стадии разработки, некоторые из упомянутых проблем могут быть улучшены в будущем.


    Почему он называется Милфорк?

    Это означает язык среднего уровня для компьютеров K ommodore .

    (В Юте также есть шахтерский городок Милл-Форк, который, будучи подходящим компилятором для устаревших машин, в настоящее время заброшен.)

    «Коммодор» не пишется через букву К!

    Тсс.

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

    Dart Alver (31.08.2024), mastermind (01.09.2024)

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

  4. #2
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,299
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    105
    Поблагодарили
    77 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Забавная штука
    Пример на Atari(lines.mfk)
    Код:
    // idea @ilmenit
    // https://demozoo.org/productions/280623
    // for 8bit AtariXL, OS Rev 2
    
    alias prev_x = os_OLDCOL.lo
    alias cursor_x = os_COLCRS.lo
    alias prev_y = os_OLDROW
    alias cursor_y = os_ROWCRS
    alias color = os_ATACHR
    
    byte i
    
    array(byte) colors = [
      $00,$55,$AA,$FF
    ]
    
    asm void openmode(byte register(a) m) @ $ef9c extern
    asm void drawto() @ $f9c2 extern
    
    void main(){
      openmode(7)
    //  os_COLOR4 = 2
    
      for i,0,to,159 {
    	os_ATACHR = colors[i&3]
        cursor_x = i
        prev_x = 159-i
        prev_y = 0
        cursor_y = 79
        drawto()
      }
    
      while true {}
    }
    Компиляция(папка include в той же папке, где сам проект)
    Код:
    java -jar millfork.jar -I .\include\ -t A8 lines.mfk
    Последний раз редактировалось Shiny; 01.09.2024 в 08:27. Причина: фикс компиляции

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

    breeze (30.08.2024)

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

    По умолчанию

    Гм, дошло наконец-то, только долго, как до жирафа.

  7. #4
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,299
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    105
    Поблагодарили
    77 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Маленькая бестолковая программа, написанная от нечего делать.
    Вложения Вложения
    • Тип файла: rar dhack.rar (1,016 байт, Просмотров: 26)

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

    Dart Alver (31.08.2024)

  9. #5
    Activist
    Регистрация
    10.01.2010
    Адрес
    Смоленская обл.
    Сообщений
    462
    Спасибо Благодарностей отдано 
    157
    Спасибо Благодарностей получено 
    167
    Поблагодарили
    78 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если б я чуть лучше по англицки понимал, а то переводчик чутка раздражает. ((
    А так забавная вещица. Не знаю конечно насколько компактный код выдаёт данная весчь, но в принципе забавно.
    Можно собственный вариант параметров машины подрисовать, только не понял, можно ли прописать форматы образов для вывода например как TRD (кажется нет). Хотя по сути это легко можно решить и внешними методами.
    Тот-же sjasm в помощь. ))

  10. #6
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,299
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    105
    Поблагодарили
    77 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Есть некое руководство по добавлению отдельного компьютера к компилятору, даже разработаны Mega65 и Aquarius.
    Насчет ужасма - слышал, что допиливали формат под ассемблер, но не видел.

  11. #7
    Guru Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,721
    Спасибо Благодарностей отдано 
    44
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    35 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shiny Посмотреть сообщение
    Забавная штука
    Пример на Atari(lines.mfk)
    А ты не разбирался, есть ли там поддержка работы со спрайтами и FS (чтение запись файлов)?

  12. #8
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,299
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    105
    Поблагодарили
    77 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    А ты не разбирался, есть ли там поддержка работы со спрайтами и FS (чтение запись файлов)?
    не нашел примеров работы с файлами. Что касается PMG ака "спрайты", то можно попробовать написать код. Я раньше писал пример https://g0blinish.ucoz.ru/forblog_6502/corners.rar

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

    breeze (01.09.2024)

  14. #9
    Guru Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,721
    Спасибо Благодарностей отдано 
    44
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    35 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shiny Посмотреть сообщение
    можно попробовать написать код
    Я так понял, что там можно что-то типа макросов как в ужасме наклепать? и при компиляции будет кусок асма вставляться?

  15. #10
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,299
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    105
    Поблагодарили
    77 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от breeze Посмотреть сообщение
    Я так понял, что там можно что-то типа макросов как в ужасме наклепать? и при компиляции будет кусок асма вставляться?
    Макросы можно использовать. При компиляции исходник создается, если использовать ключ командной строки -s

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

    breeze (01.09.2024)

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

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

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

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

Похожие темы

  1. Ответов: 11
    Последнее: 08.12.2023, 17:18
  2. Bad Apple для MSX/MSX2
    от Pyhesty в разделе MSX
    Ответов: 4
    Последнее: 31.05.2021, 21:45
  3. Перенос игр с Game Boy на ZX Spectrum
    от CityAceE в разделе Программирование
    Ответов: 104
    Последнее: 14.02.2019, 10:56
  4. Game Boy Advance
    от megabyte в разделе Nintendo
    Ответов: 8
    Последнее: 22.05.2006, 14:48
  5. Game Boy Advance в Питере.
    от Surfin_Bird в разделе Nintendo
    Ответов: 10
    Последнее: 21.08.2005, 09:50

Ваши права

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