С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Сейчас бьюсь над зеркальным выводом спрайтов, уже заканчиваю, чтобы ALKO нормально игру свою писал.
После этого тогда займусь, по срокам не знаю как...
Кстати, меня самого начинает бесить, что нет записей. Из-за этого многие мои исходники на Паскале пока лежат без дела - долго переписывать под Недопаскаль.
После этого уже можно сунуть исходник компилятора самому компилятору.![]()
Обновил сегодня до версии 0903, в первом посте.
Добавил:
- операторы зеркального вывода спрайтов относительно вертикальной оси с разными методами наложения изображения на экран: SpritePutMirrorClear, SpritePutMirrorAnd, SpritePutMirrorOr, SpritePutMirrorXor.
- оптимизировал процедуры вывода на виртуальный экран, чуть быстрее стали работать.
Обновил сегодня до версии 0.904, в первом посте.
Обнаружил и исправил баг - не всегда верно присваивались ячейки строковых массивов. Теперь правильно. Также добавил пару оптимизаций для строковых выражений.
А вообще начал глобальную работу, чтобы поддерживались записи, параметры процедур и функций, типы char и boolean, а также чтобы остальное было в точности со спецификацией Паскаля. Но это надолго, не всё так просто, сам несколько раз переписывал начатое![]()
Последний раз редактировалось Andrew771; 21.09.2015 в 21:34.
Обновил сегодня до версии 0.905, в первом посте.
Операторы и внешне ничего не изменилось, так что полностью совместим с предыдущими версиями 0.903 и 0.904.
Сделал:
- оптимизации для присваиваний и сравнений переменных и констант типа byte - теперь производится в 8-битной арифметике, а не в 16-битной, что увеличивает быстродействие и экономит память;
- удаление повторных присваиваний переменных с одинаковыми значениями;
- удаление повторных строковых констант из данных.
- - - Добавлено - - -
Исходник ZX Like Pascal на Delphi тут: http://zx-pk.ru/showthread.php?t=54&...l=1#post810433
Обновил сегодня до версии 0.906, в первом посте. Исправлены замеченные баги при выводе спрайтов и карт.
Andrew771, можешь сделать поддержку запуска из коммандной строки, чтоб входной фаил PRG фаил передавать в качестве параметра.
Например:
zxpascal.exe game.prg
и на выходе будет game.asm
Это намного сократит количество телодвижений при разработке, сделает ее более удобной. Я сейчас хочу сделать игру на этом паскале, но данное обстоятельство мешает.
- - - Добавлено - - -
Это так делается:
В обработчик события запуска (form1create):
if paramcount<>0 then button1click(self);
И в самой компиляции,
if OpenDialog1.execute then Name:=Opendialog1.Filename;
Заменить на
if paramcount<>0 then Name:=paramstr(1) else
if OpenDialog1.execute then Name:=Opendialog1.Filename;
Я так сделал в той версии, что есть исходники, но она не самая новая.
- - - Добавлено - - -
Делаю щас one-click комплект, уже сделал автоматическую сборку trd из паскаль файла. Надо только перенести prg фаил на батник и оно скомпилируется, сассемблируется и запустится. Сейчас прикручу редактор какой-нибудь и вообще будет круто.
Я ещё в коде убрал вывод org 23900, поскольку это очень рано, trd не хочет работать, дописывается 25000, но это уже во внешнем файле (выходной асм инклюдится).
Я думаю, такие готовый сборки будут способствовать популярности платформы и игрописания.
Обнаружил баг - не работает read и readln переменных типа byte и word, туда заносятся непонятные значения. Сейчас попробую покопаться в исходниках, но врядли найду.
- - - Добавлено - - -
Нашел почему не работает ввод чисел - сжасм интерпретирует sub a,48 как sub a,a:sub a,48
Надо заменить все вхождения просто на sub 48
Вот, сейчас такая сборка
https://yadi.sk/d/y3IQQWDhptLqA
Для работы надо ассоциировать prg-файлы с compile.bat. Далее, открыть программу (или написать) в notepad2 (для примера, он в архиве. Но можете использовать свой редактор), и нажать Ctrl-S, Ctrl-L. Программа, скомпилируется, соберется trd и запустится. (надо чтоб trd был ассоциирован с эмулятором)
Из пожеланий: сделать пометку чтоб переменная не объявлялась в конце. Например:
var a:integer;notdef;
А то в некоторых примерах надо после компиляции идти в фаил и убирать вручную.
- - - Добавлено - - -
Также, пример demo_z компилируется с ошибкой. Две метки имеют одинаковое название, наверное в кодах блоков if/then/else что-то перепуталось.
А вообще, отличный проект, я как-то раньше не обращал на него внимание.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)