Вход

Просмотр полной версии : Компилятор Turbo Rascal для > 30 ретро-платформ (NES, Atari, Amiga, Gameboy, ZX, X86)



Oleg N. Cher
01.12.2023, 21:06
Для тех, кто ищет ретрокомпьютерный Паскаль; используйте Turbo Rascal Syntax Error (TRSE):

https://turborascal.com
TRSE (или его полное оригинальное название «Turbo Rascal Syntax Error» — это полный пакет (IDE, компилятор, язык программирования, редактор ресурсов), предназначенный для разработки игр/демо для 8/16-битной линейки. компьютеров, с упором на MOS 6502, Motorola 68000, (GB)Z80, M6809 и X86. TRSE в настоящее время поддерживает разработку приложений для C64, C128, VIC-20, PLUS4, NES, Gameboy, PET, ZX Spectrum, TIKI 100, Amstrad CPC 464, Atari 2600, 8086AT, Amiga 500, Atari 800, BBC Micro, Super Nintendo ( SNES), Mega65, VZ200, MSX, Apple II, Commander X16, TIM-011, Videoton TVC, TRS80 CoCo3, Vectrex, Thomson (mo5 и mo6) и Atari ST 520 ( полный список здесь https://lemonspawn.com/support-sheet/ ). Благодаря преимуществам современной IDE (сообщения об ошибках, завершение кода, подсветка синтаксиса, примеры проектов и учебные пособия) и множеству быстрых встроенных инструментов программирование для вашей любимой устаревшей системы никогда не было таким простым!

TRSE работает на 64-разрядной версии Windows, 64-разрядной версии Linux и OS X. Разработка началась 24 февраля 2018 года. Платформа TRSE содержит ряд примеров проектов для нескольких платформ, включая почти 300 готовых к использованию учебных пособий. TRSE также содержит трассировщик лучей в реальном времени, который может экспортировать (сжатые) данные для демонстраций и создания игр. В дополнение к этому, TRSE содержит универсальный редактор изображений, который может редактировать/импортировать/экспортировать спрайты/изображения/уровни практически во все системы, поддерживаемые TRSE. TRSE также содержит элементарный музыкальный трекер, который в настоящее время поддерживает VIC-20, Adlib и динамики ПК.

https://www.youtube.com/watch?v=9CtHHOtgvKU

Присоединяйтесь к TRSE на Facebook ! (https://www.facebook.com/groups/742955836046459)
Посмотрите наш канал разработчика на YouTube (https://www.youtube.com/channel/UCEoez-AhUWwYH4WdJtwLC_A)
Посмотреть полный список поддерживаемых систем (https://lemonspawn.com/support-sheet)
Введение в программирование TRSE Криса Гаррета (https://retrogamecoders.com/introduction-to-trse-programming)

https://www.youtube.com/watch?v=nWCy9zowrGw

Oleg N. Cher
04.12.2023, 03:09
Ну что же, первые впечатления конечно положительные, давненько мечтал о чём-то подобном, хотя лучше бы взяли в качестве языка Модулу-2 или Оберон.

Есть недостатки. Например, все типы беззнаковые. Вещественной арифметики нет.


TRSE supports several data types:

byte : values 0-255. Supported on all systems.
integer: values 0-65535. Supported on all systems.
long : 32-bit double word. Supported on all x86 and m68k systems. On the 6502, “long” is a 24-bit number.
pointer : Points to an address in memory. Uses zero pages on the 6502, “long” on the x86/m68k and is simply an integer on the (GB)Z80
lpointer: 24-bit pointers for the 65c816.
boolean: Syntactically identical to a byte.
string : An array of characters. Syntactically identical to an array of bytes.Здесь не очень понятно почему беззнаковый целый тип назван integer. Сделали бы word. Ломают совместимость на корню, даже самую минимальную.

Есть и другие странности.


Циклы for в TRSE по умолчанию не включаются, что означает, что приведенное ниже выражение будет считать i от 0 до 9.

for i:=0 to 10 do
begin
PrintNumber(i); // will print 0-9
end;

Если вы предпочитаете включать for, используйте ключевое слово fori :

fori i:=0 to 10 do
begin
PrintNumber(i); // will output 0-10
end;

А знаете как бы я сделал, раз уж так припекло:


for i := 0 to 10 [ by N ] do <— от 0 до 10
for i := 0 until 10 [ by N ] do <— от 0 до 9


Вы можете изменить длину шага, используя ключевое слово step:


for i:=0 to 10 step 2 do
begin
PrintNumber(i); // will output 0,2,4,6,8
end;
А step зачем? Есть же короткое Виртовское by. Авторы совсем не в курсе про дальнейшую деятельность Вирта?

Если кто-то будет связываться с разработчиками Rascal, было бы интересно насколько они открыты к такого рода вопросам.

Да, очень странный Паскаль. У авторов своё ни с чем не сравнимое видение.

"Такого даже в Обероне нет!"

SfS
04.12.2023, 04:41
А step зачем? Есть же короткое Виртовское by. Авторы совсем не в курсе про дальнейшую деятельность Вирта?

Если кто-то будет связываться с разработчиками Rascal, было бы интересно насколько они открыты к такого рода вопросам.

Да, очень странный Паскаль. У авторов своё ни с чем не сравнимое видение.

"Такого даже в Обероне нет!"

Чувствуется тлетворное влияние бейсика на авторов.

Это не Паскаль?

Oleg N. Cher
04.12.2023, 04:58
Это Паскаль. Притом даже есть очень интересные низкоуровневые расширения типа inline. Писать на нём можно.

Однако если хочется совместимости (типа с Турбо Паскалем?) (и зачем она нам?), то упс. Но писать можно. Интересно, кто чего напишет.

andrews
04.12.2023, 22:27
А где всё? Компилеры, ассемблеры и прочие линкеры. Где Hello,World! ?

Oleg N. Cher
05.12.2023, 22:31
Я для себя решил, что писать на этом не буду. Я хотел бы иметь большее влияние на сам проект.

Какой мне смысл, раз у меня более полный контроль над моей собственной средой разработки.

Так что могу накидать хелоуорлдов только по XDev. (Скриншоты делались для Алекса. Привет, Алекc!)

79861798627986379864

А кто чего напишет на этом Rascal - мне и самому интересно. Должны же быть не только кододрочеры типа меня, но и талантливые гейм-девы, кого не испугают ограничения, накладываемые ЯВУ на ретро-платформы.

andrews
06.12.2023, 10:20
Oleg N. Cher, да я не поленился, закачал под 64 бит на свой недонетбук Teclast c Win10 64 бит сие поделие.

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

Такое ощущение что авторы перекладывают труд тестировщиков на потенциальных пользователей. Да, с XDev с Вашей помощью я разобрался под Win32.

Oleg N. Cher
06.12.2023, 13:12
Там должно быть подкачано куча ассемблеров и си-компилеровУдивлён, что Rascal'у нужны Си-компиляторы. Я думал, он прям нативный код генерирует.

Так что, господа хорошие, это очередной недотранслятор в Си? ;) А мы такое ой как не любим, да?)


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


Да, с XDev с Вашей помощью я разобрался под Win32.Вот честно, не помню, чтобы оказывал Вам помощь в освоении XDev :)

andrews
06.12.2023, 15:20
нужны Си-компиляторы. Я думал, он прям нативный код генерирует.
уточню этот момент. Ассемблеры и линкеры точно нужны и их там при скачивании нет. Какой может быть "нативный код" для интегрированной системы? Всей жизни не хватит чтобы с 0 воспроизвести чужой код, созданный за десятилетия.

Oleg N. Cher
06.12.2023, 19:39
Вы сказали, Си-компилеры тоже нужны. Я этот момент не проверял, но если да, то интересно для чего?

Нативный код может быть очень даже. Я имею в виду не разработку на самой ретро-платформе, а компилятор для хост-системы, который генерит прямой машинный код для ретро-платформы, а не промежуточные уровни. При этом ассемблер "не считается" ;)

marinovsoft
07.12.2023, 09:18
Для zx вроде никаких дополнительных утилит ставить не нужно. По крайней мере пример из комплекта поставки собирается. Правда собирается он в файл bin и что с ним дальше делать - х.з.

Oleg N. Cher
08.12.2023, 17:18
Натравить утилиту bin2tap?