Просмотр полной версии : Pascal
Andrew771
17.05.2011, 10:33
Сразу несколько вопросов по языку Паскаль на ZX:
1. Есть ли еще компиляторы Паскаля, кроме Hisoft? Не обязательно на ZX, можно кросскомпиляторы.
2. Можно ли приспособить каким-то образом компиляторы на PC для компиляции в код ZX? Во FreePascal вроде что-то можно крутить внутри его кода, но как и что, не доходит пока. А то бы напильничком допилить для ZX.
3. В Hisoft Pascal компилируется независимый от компилятора код или нет? Я заглядывал в скомпилированный код, там вроде вызовы процедур компилятора.
Stingrey
17.05.2011, 10:37
Borland Turbo Pascal под CP/M есть, с возможностью вставки ассемблерных фрагментов.
Borland Turbo Pascal под CP/M есть, с возможностью вставки ассемблерных фрагментов.
Stingrey а когда мы увидем твою коллекцию дискет?
Andrew771
17.05.2011, 11:03
Borland Turbo Pascal под CP/M есть, с возможностью вставки ассемблерных фрагментов.
А в 48к скомпилированный код будет работать? :)
А в 48к скомпилированный код будет работать? :)
Паскаль компилится в машинный код никакого p-code там нету.
Должен работать, но надо учесть что может компилится под адреса где у спекки ПЗУ ;(
Паскаль компилится в машинный код никакого p-code там нету.
Должен работать, но надо учесть что может компилится под адреса где у спекки ПЗУ ;(
Сдается мне, первой проблемой будет тот факт, что Турбо Паскаль хоть под CP/M, хоть под DOS будет выдавать машинный код процессора х86, а не Z80. А в остальном ничего, остальные проблемы на фоне этого не сильно критичны :)
---------- Post added at 23:26 ---------- Previous post was at 23:21 ----------
2. Можно ли приспособить каким-то образом компиляторы на PC для компиляции в код ZX? Во FreePascal вроде что-то можно крутить внутри его кода, но как и что, не доходит пока. А то бы напильничком допилить для ZX.
Крутить-то во FreePascal можно все, что угодно. Правда, напильничком придется напилить с нуля все, кроме текстового редактора. Т.к. в PCшном Паскале даже базовые типы данных не подходят под ZX.
Паскаль хоть под CP/M, хоть под DOS будет выдавать машинный код процессора х86, а не Z80.
с какого перепугу?
Т.к. в PCшном Паскале даже базовые типы данных не подходят под ZX.
В FreePascal при описании модуля кодогенерации описываются регистры и их разрядность, к примеру есть возможность собрать FreePascal для AVR, соответствующий кодогенератор есть в наборе сырков.
Сдается мне, первой проблемой будет тот факт, что Турбо Паскаль хоть под CP/M, хоть под DOS будет выдавать машинный код процессора х86, а не Z80.
Это если юзать TP под MS-DOS или CP/M-86. Если юзать TP под CP/M-80, то будет генериться код Z-80, программа будет иметь стартовый адрес 0100H. И работать через вызовы BDOS/BIOS CP/M.
Andrew771
18.05.2011, 13:14
TP 1.0 компилит исполнимые файлы COM и CHN.
CHN - это что за формат? Это и есть код под Z80?
---------- Post added at 12:59 ---------- Previous post was at 12:36 ----------
И еще интересный момент. Написал простейшую программу на Паскале:
program test1;
var
prom1: integer;
begin
prom1:=5;
end.
Так вот, скомпилированный файл COM имеет размер 8570 байт, а файл CHN 34 байт. Осмысленные машинные коды не смог найти ни там, ни там. Что делать? :)
---------- Post added at 13:14 ---------- Previous post was at 12:59 ----------
Осмысленные машинные коды не смог найти ни там, ни там
В chn всё же нашел, но это не команды Z80. :(
А как получить Z80?
Сдается мне, первой проблемой будет тот факт, что Турбо Паскаль хоть под CP/M, хоть под DOS будет выдавать машинный код процессора х86, а не Z80. А в остальном ничего, остальные проблемы на фоне этого не сильно критичны :)[COLOR="Silver"]
смотрим тут (http://www.z80.eu/pas-compiler.html)
особенно был популярен на MSX в наших краях ....
---------- Post added at 12:38 ---------- Previous post was at 12:35 ----------
The Chain procedure is used only to activate special TURBO Pascal .CHN files, i.e. files compiled with the cHn-file option selected on the Options menu (see page 260). Such a file contains only program code; no Pascal library. It is loaded into memory and executed at the start ad-dress of the current program, i.e. the address specified when the current program was compiled. It then uses the Pascal library already present in memory. Thus, the current program and the chained program must use the same start address.
http://electrickery.xs4all.nl/comp/tp30/tp30_22.html
О как... писал на Турбо-Паскале с третьей версии, и не подозревал, что он еще и в редакции под Z80 был
Andrew771
18.05.2011, 17:24
Нашел компилятор Паскаля в байт-код, причем с исходниками на Паскале - Facilis Pascal: http://oml.do.am/load/iskhodniki_komiljatorov/bajtkod_kompiljatory/facilis_pascal_v020_c_1980_1994_by_bunch_of_guys/10-1-0-62
В принципе, несложно написать на основе него компилятор для ZX, всего лишь перевести байт-коды в команды ZX и оптимизацию прилепить. :)
В нете валяется ATG схема для CoCo/R паскаля, в том числе с прописанной логикой кодогенерации и в отличии от этого он for цикл умеет
искать надо что то вроде pascalz.
К тому же эти компиляторы простейшие вообще не оптимизируют результат, не умеют вычислять значения констант итд.
Error404
20.05.2011, 11:25
Окончательно вдаваясь в оффтоп, много лет назад мне очень нравился Innerfuse Pascal Script (delphi freeware opensource), который тоже использовал генерацию некоего байт-кода и собственную выполняющую машину. Реализован был почти полный синтаксис языка Object Pascal (включая обработку исключений, поддержку виндовозных интерфейсов - т.е. OLE и подобных). Исключение - только в том что локальные процедуры нельзя было объявлять, а только глобальные, и классы описывать в скрипте было нельзя, но можно было делать интерфейс к существующим и использовать (в привычном синтаксисе) в своих скриптах любые классы реализованным в своем *.exe (аналогично и любые процедуры/функции оттуда дергать).
Отличительная особенность: выполняющая виртуальная машина на этих байт-кодных программках работала всего в два разе медленнее аналогичного "честного" Win32 exe, компиленого той же Дельфи. Что вообще-то очень хороший результат.
Andrew771
20.05.2011, 13:31
CoCo/R
Мощная штука! Сейчас осваиваю и пробую, благодаря наводке ZEKа. Уже получается генерить немного в асм ZX некоторые паскалевские команды. Так можно недолго и полный компилятор написать. :)
Error404
20.05.2011, 17:40
Так можно недолго и полный компилятор написать. :)
А нужен то С. Чего с этого паскаля? С него выход - ноль. Только если чего-то свое писать, но это непродуктивно. Продуктивно - использовать готовые исходники, а это в-основном С. Я вот тут посматривал на lcc, у него тоже настраиваемый кодогенератор, но там как-то сложновато всё...
Andrew771
21.05.2011, 14:38
Только если чего-то свое писать, но это непродуктивно. Продуктивно - использовать готовые исходники, а это в-основном С
Вот так. Писали для Спека всегда своё с нуля, а тут вдруг непродуктивно! Да и сколько исходников на С есть для Спека?
Error404
21.05.2011, 22:15
Вот так. Писали для Спека всегда своё с нуля, а тут вдруг непродуктивно! Да и сколько исходников на С есть для Спека?
Осталось полтора программиста (тех кто ушел в "демы" не считаем - это расход в чистом виде). Дофига они напишут с нуля?
Говоря по С я имел в виду прежде всего системный софт. Портирование которого стоит как раз из-за отсутствия нормального C-компилера.
Andrew771
23.05.2011, 15:23
Говоря по С я имел в виду прежде всего системный софт.
ИМХО, системный софт на спеке вряд ли уже нужен. А вот игры писать было бы быстрее и удобнее на языке высокого уровня с хорошей компиляцией. Тут уже без разницы: С, Бейсик или Паскаль. Я вот на Паскале/Дельфи сижу, а С не знаю, поэтому интересует Паскаль.
интересно Вас послушать уважаемые, но вот немного подумав появились вопросы:
1. это о каком же супер софте на С речь тут идет? (может оно уже готово под СP/M давно)
2. это какие такие игры на паскале можно под zx написать? (ну в теории можно бы наклепать игры в стиле диззи но при этом графику и звук всеравно прийдется выводить на асме а логика компиленная на паскале займет наверно все свободные страницы 128-го и отлаживать такую прогу будет ой как не просто).
NovaStorm
24.05.2011, 08:10
отсутствия нормального C-компилера.
Можно конечно придраться к "нормальному", но и то это не так.
Есть ведь sdcc. Да и кроме него хватает http://www.z80.eu/c-compiler.html
а С не знаю, поэтому интересует Паскаль
Есть подозрения, что пока осилишь паскаль на спеке, с С разберёшься вполне =)
а логика компиленная на паскале займет наверно все свободные страницы
Ну паскаль конечно фигня ещё та, но уж это явно поклёп. На асме и с С конечно придётся писать много, но уж "клей" с логикой настолько не должны разжиреть.
ЗЫ:http://www.z80.eu/pas-compiler.html
Тоже есть. Но под CP/M.
Error404
24.05.2011, 14:14
интересно Вас послушать уважаемые, но вот немного подумав появились вопросы:
1. это о каком же супер софте на С речь тут идет? (может оно уже готово под СP/M давно)
из последнего, что уже можно было бы делать (т.к. железо уже эмулируется в эмуляторе) - это стек TCP и сетевые утилиты. Всё есть в исходниках на С на других платформах, но надо портировать, а значит - нужен компилятор С.
А так, я много чего на С писал под CP/M - утилиты для работы с HDD (partitioning, mkfs), для работы с FAT, файловые менеджеры - т.е. все для чего нужна математика (в которой желательно не запутаться самому) либо есть готовые исходники, и при этом не сильно жесткие требования по быстродействию.
И хотя я и пользовался hitech C (единственным нормальным нативным C для Z80), но он ооочень далек от идеала.
Andrew771
24.05.2011, 21:20
Есть подозрения, что пока осилишь паскаль на спеке, с С разберёшься вполне =)
Это да. Но ведь хочется еще побаловаться компиляторостроением. :)
---------- Post added at 21:20 ---------- Previous post was at 21:18 ----------
А Hisoft Pascal компилит независимый код или обязательно нужно сам компилятор держать в памяти?
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot