Проект ZXDev анонсирован на World of Spectrum. Приём получился гораздо теплее, чем здесь. Raydac оказался прав.
Исправлен глюк со сбросом примера на Laser Basic. Проблема будет интересна всем, кто юзает SDCC. Это даже не глюк, допущенный случайно. Дело в том, что я после извлечения параметров функций допускал изменение регистра IX. А делать оказывается этого нельзя, ибо SDCC иногда полагается на его значение после возвращения из функции. (Как написал Филипп: “IX is a calle-saves register”).
Благодаря помощи Филиппа Краузе и Eltaron’а реализована экспериментальная поддержка модели вызова fastacall (передача параметров в регистрах). Из-за отсутствия (пока) в SDCC поддержки fastcall присутствует серьёзное ограничение: параметры должны быть только константами, вычислямыми в процессе компиляции. Фишка по умолчанию отключена. Включить можно в Libs/BasicCfg.h
С использованием модели fastcall получается такой код:
Реорганизовал структуру ZXDev и, как по мне, стало логичнее и удобнее.Код:B.BORDER(B.Black); B.PAPER(B.Green); B.CLS; ;HelloWorld.c:15: Basic_BORDER(0); xor a,a call 0x229B ;HelloWorld.c:16: Basic_PAPER(4); ld c,#4 call _Basic_PAPER_fastcall ;HelloWorld.c:17: Basic_CLS(); call _Basic_CLS
Начата работа над многофункциональной утилитой для конвертирования BIN/IHX в форматы TAP/TRD (возможно, будет поддержан и TZX). Пишу на Обероне с прицелом на трансляцию через Ofront в Си. Принимается любая помощь, в т.ч. идеи.




Ответить с цитированием
