PDA

Просмотр полной версии : Кросс Паскаль для Z80



Smalovsky
14.01.2023, 17:07
Узнал, что появилась поддержка Спектрума в Лазарусе.
Ссылка https://wiki.freepascal.org/Z80
Однако, не понял, как достать сам компилятор?
В статусе компилятора написано:

По состоянию на 27 апреля 2020 года генератор кода достаточно стабилен, чтобы скомпилировать полный системный блок. Стандартный вывод через write / writeln теперь работает. По состоянию на 17 мая 2020 года уровень оптимизации 1 также работает, поэтому вы можете попробовать выполнить компиляцию с помощью -O1. Обратите внимание, что пока реализовано не так много оптимизаций, специфичных для Z80, но включение оптимизации все еще имеет некоторый небольшой эффект.
Так как достать компилятор?
Вот, ещё нашёл какой-то Паскаль для Лазаруса? Может это он и есть? https://github.com/daar/z80-pascal

Bedazzle
14.01.2023, 20:26
Узнал, что появилась поддержка Спектрума в Лазарусе.


https://i.imgur.com/7KBltDk.png

тут в таргетах Z80 не вижу

Kakos_nonos
14.01.2023, 20:39
Не в лазарусе, а в фрипаскале, наверное. Лазарус это ж фрипаскаль с окошками для винды.

Bedazzle
15.01.2023, 01:58
Не в лазарусе, а в фрипаскале, наверное. Лазарус это ж фрипаскаль с окошками для винды.

Лазарус - это не только винда вообще-то.

Oleg N. Cher
16.01.2023, 23:50
Со слов моего хорошего знакомого, который ковырял FPC для Z80, эффективность кода очень низкая. Похоже, что компилятор не сильно ушёл от стадии макета и годится походу только для хелоуорлдов.

Компилятор использует инфраструктуру (форматы, утилиты) SDCC.

Для тех спектрумистов, у кого ручки чешутся по Паскалю, мой знакомый советует ZX-Like Pascal. Где есть мало-мальская оптимизация и, в целом, дела обстоят получше.

Smalovsky
25.01.2023, 13:58
Oleg N. Cher, а как компилятор раздобыть? Его с гитхаба как-то скачивать надо?
На сайте фриПаскаля написано:

Free Pascal - это зрелый, универсальный компилятор Pascal с открытым исходным кодом. Он может быть нацелен на многие процессорные архитектуры: Intel x86 (16 и 32 разрядные), AMD64 / x86-64, PowerPC, PowerPC64, SPARC, SPARC64, ARM, AArch64, MIPS, Motorola 68k, AVR и JVM. Поддерживаемые операционные системы включают Windows (16/32/64 бит, CE и native NT), Linux, Mac OS X / iOS / iPhoneSimulator / Darwin, FreeBSD и другие версии BSD, DOS (16-разрядный или 32-разрядный DPMI), OS / 2, AIX, Android, Haiku, Nintendo GBA / DS /Wii, AmigaOS, MorphOS, AROS, Atari TOS и различные встроенные платформы. Кроме того, в версии для разработки доступна поддержка архитектур RISC-V (32/64), Xtensa и Z80, а также инфраструктуры компилятора LLVM. Кроме того, команда Free Pascal поддерживает перенос pascal на Javascript под названием pas2js.

Но ссылки на компилятор нет...

andrews
25.01.2023, 18:49
Есть в исходниках на SourceForgе

Я скачал, но bin не строил. Вот фрагмент их кода 78396 относительно z80.

Oleg N. Cher
26.01.2023, 00:26
а как компилятор раздобыть? Его с гитхаба как-то скачивать надо?Не знаю. Может эта ссылка поможет: https://wiki.freepascal.org/Z80#Building

andrews
26.01.2023, 12:47
Там про сборку в Linux. А под Windows7 32 бит как? Там SDCC нужен. А какой версии? У меня 4.1.0 стоит для 32 бит.

b2m
26.01.2023, 15:47
Там SDCC нужен. А какой версии?
Вроде нет. Но можно опционально:

The compiler now includes an internal assembler and linker, so no extra packages are needed. Optionally, the assembler and linker from the SDCC package can be used as well

Oleg N. Cher
27.01.2023, 00:03
andrews, изобретённый мной тандем трансляции Оберона в Си (и последующая компиляция через ZSDCC) будет по многим параметрам намного лучшим выбором, чем FPC для Z80. Вам настолько важно использовать именно Паскаль?

andrews
27.01.2023, 16:59
Да я просто посмотреть хотел, что и как. И Ваш Оберон, и Ваш PL/М у меня тоже есть. Просто на Паскале, Си и PL/M доводилось писать, на Обероне нет.
Правда конечно куча вопросов. На какую файловую систему это настроено? CP/M, TRDOS или что-то еще?

Oleg N. Cher
27.01.2023, 20:19
Поправочка: PL/M не мой. Просто мы с Kakos Nonos собрали .exe'шки компилятора и утилит из готовых исходников.

XDev кросс-средство, работает под виндой. Можно работать и под другими ОС, но процесс чуть сложнее.

При желании можно собирать проги и для TR-DOS, и для CP/M.

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


Правда конечно куча вопросов.Вопросы задавайте, без проблем. Телеграм, ВК, фб. Даже вайбер и скайп есть.

andrews
27.01.2023, 20:25
Нужен "софт из коробки". Установил и в папочке Examples нашел нужное окружение(TRDOS, без системы, что-то другое) и построил и запустил Hello, world!

Потом уже юзверь начинает ковыряться и разбираться. И на что у него мозгов и времени хватит, то он и сделает. STEP BY STEP.

Так отлично, IDE в пакете XDevLite есть. Но дальше что? Project->Open нет. Папка Examples отсутствует. Значит и Open->File новичку ничего не даст. Никакого
Hello, world! ну или вращающегося кубика после первых пяти минут знакомства(первого запуска) не будет!

Нынешний новичок всегда стремится запустить Hello, world! а для железа уже даже не поморгать светодиодиком, а просто сменить темп и интервалы горения/не горения. Если это не дают сделать, у него может наступить нервный срыв :)


Нет, если цель отсечь "трусов, жадин и лентяев", то можно конечно оставить все как есть.


Поправочка: PL/M не мой. Просто мы с Kakos Nonos собрали .exe'шки компилятора и утилит из готовых исходников.

XDev кросс-средство, работает под виндой. Можно работать и под другими ОС, но процесс чуть сложнее.

При желании можно собирать проги и для TR-DOS, и для CP/M.

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

Вопросы задавайте, без проблем. Телеграм, ВК, фб. Даже вайбер и скайп есть.
я очень стесняюсь задавать вопросы при нулевом уровне моей компетентности. Думаю, что не я один. Поэтому "быстрый старт" на 0 уровне очень важен для продвижения любого инструментального софта. Я не говорю, что такая возможность есть у FPC.

Вы проделали колоссальную работу. Осталось добавить сущий пустяк и "оно полетит".
Правда есть еще всякие интересные современные "вкусняшки" в виде подсветки синтаксиса, выпадающих окон на системные вызовы и прочее-прочее. Ну или хотя бы более дружественная Help-система. Вот при нажатии на Help->Examples у меня выпадает
"file Obx/Docu/Sys-Map not found" Понятно, что никого это не собьет с толку, но какое-то время надо потратить. Может быть что-то надо поменять в системных переменных. Тоже тратишь время.
Понятно, что софт получен на халяву и далеко-далеко не ассемблер, на освоение которого времени убьешь на порядки больше.

Oleg N. Cher
27.01.2023, 21:22
"Всё не так, как я хотел" убираем, включаем любознательность. Я уверяю Вас, грамотный или даже не очень грамотный юзер запустит хелоуорлд и всё прочее самостоятельно без посторонней помощи. Проверено. Извините, если разочаровал. Вам шашечки или ехать?

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


Осталось добавить сущий пустяк и "оно полетит"."Угодить всем"? Хрена себе пустячок...

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

По TR-DOS и прочему. Тут рулит принцип: я реализовал то, что мне было нужно. Если кто-то чего-то сделает, и понравится ещё кому-то, то имеет право на жизнь, почему нет.

Если не хотите бомбить меня вопросами лично, то давайте хотя бы перейдём в тему по ZXDev (https://zx-pk.ru/threads/18472-moshchnaya-sreda-zxdev-dlya-razrabotki-na-pyati-yazykakh-dlya-zx-gotova-k-testirovaniyu.html).

s_kosorev
27.01.2023, 22:00
"Всё не так, как я хотел" убираем, включаем любознательность. Я уверяю Вас, грамотный или даже не очень грамотный юзер запустит хелоуорлд и всё прочее самостоятельно без посторонней помощи. Проверено. Извините, если разочаровал. Вам шашечки или ехать?
Знакомьтесь, ОБЕРОН )))

Oleg N. Cher
27.01.2023, 22:05
Представляю недовольную морду человека, которому впервые достался Спектрум. Это не про вас конечно. Это про школьника, который мечтал про стопицотый айфон ;-)

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

P.S. Я делал так, как нужно и так, как хорошо. Как должно быть. Но минимальными усилиями. Здраво оценивая свои возможности. Хотите Дельфи для Спека - делайте.

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

Паскаль на Z80 всё равно плохо ложится. Поэтому всегда будут косоревы с недовольной мордой.

s_kosorev
27.01.2023, 23:31
На z80 все плохо ложится

andrews
27.01.2023, 23:36
Хотите Дельфи для Спека - делайте
Какие расширения у исходников на Обероне? .odc ? И как сделать вывод на консоль для Спека пусть даже без системы?

Пока других вопросов нет. И при чем здесь Спек, если это IDE кросс-компилера. Я надеюсь, что эта версия генерит код для Спектрума. Ну или хотя бы код для sdcc с нужным make файлом.

Как действует версия FPC для z80 я не знаю. Для x86 она вроде на выходе делает .exe. А IDE-ка хоть убогая ( напоминает Borland Pascal), но без проблем строит и запускает winhello.pp

Да, это не кросс для z80.

Andrew771
27.01.2023, 23:52
Паскаль на Z80 всё равно плохо ложится. Поэтому всегда будут косоревы с недовольной мордой.
Нинаю, у меня нормально лёг, аж на Цивилизацию замахнулся)

andrews
28.01.2023, 00:26
Расскажите, кто знает, как собрать FPC-Z80 для таргет z80-zxspectrum из исходников? Или где взять такую готовую сборку?

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


которому впервые достался Спектрум
ну мне первый спектрум попался еще тогда, когда и Ленинграда-48 толком не было. Но это была российская огромная двухсторонняя плата с неисчислимой кучей корпусов. Что-то разведено по плате, что-то монтажным проводом. Ножки какие-то откушены и затем снова припаяны. Но по утверждению чела, который мне ее притащил и сказал:
"Давай цветной моник, ща мы ее подключим" и без клавиатуры должна зафурычить.

Слава Богу мы ее не подключили к новгородскому промышленному монитору. Заземление у нас там было не на каждом рабочем месте, а без него он нам немало аппаратуры пожёг.

Я попросил схему. Так она была на синьке и нифига в ней не разобрать. После чего я сказал. Не ребят...схемы четкой нет, плата невообразимо сложная...я пас. Верните счастливому владельцу, который ее собрал и оживил. Теперь уже не вспомню было это до 1987 года или после.

И первое, что я купил домой это был Партнер 01.01 А на работе тоже были МСУВТ -В7( разработчик ВНИИЭМ, изготовитель АЭМЗ Александрия Кировоградской) с 1983 года.

Oleg N. Cher
28.01.2023, 13:26
Ну вот видите как долго к Спеку душой прирастали. А тут поковыряли чуток, и "всё не так" ;) Тут же дело в восприятии.

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


Нинаю, у меня нормально лёг, аж на Цивилизацию замахнулся)"У меня нормально" за отмазку не канает. Это же не превозношение Ваших возможностей по Паскалю, а всеобще грустная ситуация с проецированием кода на ЯВУ на Z80.

Где однобайтовая арифметика? Она нужна, я Вас уверяю. Где арифметика со знаком? Вам нужна была совместимость с Дельфи, я помню, Вы о ней говорили. Так вот это смешные фантазии, пока нет арифметики со знаком. "Мне не надо - значит никому не надо" не катит. Где разные модели вызова процедур, инлайн, передача параметров в регистрах, разные низкоуровневые плюшечки? Есть такое? Эти фишки очень нужны для разработки. Заставлять программиста почти всё делать на асме некрасиво.

Andrew771
31.01.2023, 17:39
Нужен "софт из коробки". Установил и в папочке Examples нашел нужное окружение(TRDOS, без системы, что-то другое) и построил и запустил Hello, world!

Потом уже юзверь начинает ковыряться и разбираться. И на что у него мозгов и времени хватит, то он и сделает. STEP BY STEP.

Вот такой я сделал интерфейс:
https://zx-pk.ru/asset.php?fid=76275&uid=6758&d=1675175504

А в файле формата PRG, который предлагается выбрать, пишешь свою программу на Паскале (можно даже в обычном Блокноте Windows) без всяких лишних довесков, например:



program Kubik;

CONST
HowManyTimes = 1000;
VAR
{ Завести 6 переменных (по количеству граней кубика). }
one, two, three, four, five, six, n, number: WORD;
BEGIN
RANDOMIZE;
{ Обнулить наши счётчики граней кубика. }
one := 0; two := 0; three := 0; four := 0; five := 0; six := 0;
{ Повторить 1000 раз выбрасывание кубика }
FOR n := 1 TO HowManyTimes DO
BEGIN
{ и посчитать сколько раз выпала каждая грань. }
number := random(5)+1;
case number of
1: one := one + 1;
2: two := two + 1;
3: three := three + 1;
4: four := four + 1;
5: five := five + 1;
6: six := six + 1;
end;
END;

{ Нарисовать цветную таблицу } {
+---+------------+
| 1 | 200 |
+---+------------+
| 2 | 200 |
+---+------------+
| 3 | 200 |
+---+------------+
| 4 | 300 |
+---+------------+
| 5 | 50 |
+---+------------+
| 6 | 50 |
+---+------------+
}
BORDER(0); Textbackground(0);
Textcolor(5); Clrscr;
Writeln('+---+------------+');
Write('| '); Textcolor(2); write(1);
Textcolor(5); Writeln(' | |');
Writeln('+---+------------+');

Write('| '); Textcolor(6); write(2);
Textcolor(5); Writeln(' | |');
Writeln('+---+------------+');

Write('| '); Textcolor(4); write(3);
Textcolor(5); Writeln(' | |');
Writeln('+---+------------+');

Write('| '); Textcolor(3); write(4);
Textcolor(5); Writeln(' | |');
Writeln('+---+------------+');

Write('| '); Textcolor(1); write(5);
Textcolor(5); Writeln(' | |');
Writeln('+---+------------+');

Write('| '); Textcolor(7); write(6);
Textcolor(5); Writeln(' | |');
Writeln('+---+------------+');


{ и вывести результаты. }
Gotoxy(10, 1); Textcolor(2); Write(one);
Gotoxy(10, 3); Textcolor(6); Write(two);
Gotoxy(10, 5); Textcolor(4); Write(three);
Gotoxy(10, 7); Textcolor(3); Write(four);
Gotoxy(10, 9); Textcolor(1); Write(five);
Gotoxy(10, 11); Textcolor(7); Write(six);

END.

После нажатия кнопки и выбора файла PRG всё сразу компилируется в файл ASM - на чистом ассемблере для Спектрума.

Это всё, что нужно знать начинающему :)

Oleg N. Cher
31.01.2023, 17:43
Начинающему также нужно знать, что продвинутые юзеры ZX Like Pascal не могут работать с ним без допиливания компилятора.

Andrew771
31.01.2023, 17:45
Начинающему также нужно знать, что продвинутые юзеры ZX Like Pascal не могут работать с ним без допиливания компилятора.
какое допиливание? Там всё уже сделано из коробки, демо-файлы посмотри

Oleg N. Cher
31.01.2023, 17:48
microxa, [07.11.2022 21:20]
Зхлайк тоже позволяет почувствовать себя Виртом

Oleg N. Cher, [07.11.2022 21:20]
Это Андрюха чувствует себя Виртом, а мы так, сирые юзверы

microxa, [07.11.2022 21:22]
Я дохрена там подделал за ним. Красоту асм вставок с передачей в регистрах

Oleg N. Cher, [07.11.2022 21:22]
В своё время я предлагал ему делать компиль как универсальный, кроссплатформенно-мультитаргетный, с модульностью, библиотеками, смарт-линковкой

Oleg N. Cher, [07.11.2022 21:22]
Он мне сказал, что ему нужен чисто язык-инвалид для Спека

Oleg N. Cher, [07.11.2022 21:22]
Подделал это круто, сделай же это публичным

Oleg N. Cher, [07.11.2022 21:23]
У меня вот навскидку есть пара знакомых, кто пользуется ZX Like, а про твои наработки наверняка не слышали

Oleg N. Cher, [07.11.2022 21:23]
И ещё один чел занялся GCC для БК, чего-то там ваяет

microxa, [07.11.2022 21:23]
Оно даже Андрюхе не нать

Andrew771
31.01.2023, 17:51
Он мне сказал, что ему нужен чисто язык-инвалид для Спека
Да, это так, я его писал, чтоб игры ваять на Спеке. А универсальность убивает память и быстродействие, к сожалению.

Oleg N. Cher
31.01.2023, 17:52
Не всегда, смотря как реализовать.