Что подвинуть вверх? 0xdfff?
Что подвинуть вверх? 0xdfff?
Если стек, то двигать вниз надо. Где память то нужна?
Я, значит, маленько расширил возможности SDK (версия для TS-Config/SDCC v.3.xx) в части увеличения памяти под си-программу.
Вполне возможно сделать это и для оригинальной SDK и любую версию компилятора.
Суть улучшений: был один большой rel-файл, который целиком линковался в компилируемую программу, - стал один большой lib-файл, состоящий из кучи мелких rel-файлов, из которых в конечную программу линкуются только те, которые в ней задействованы.
Так на игре XNX выигрыш составил целых 226 (Двести двадцать шесть) байт.
Прилагаю архив. Более подробно всё описано в read_me.
Замечания и критика приветствуются.
Последний раз редактировалось Sergey; 20.04.2014 в 17:36.
С уважением,
Gris / Red Triangle.
_____________________________________
ZX-EVO/TS-Labs config/NGS/HDD/SD-card
Amiga A1200/Blizzard 1230@50/32/60GB
Amiga A1200/Apollo 1260@66/32/60GB
UnAmiga (C5) AGA GM7123 VideoDAC
Тогда уж неплохо бы и для int и long данных процедурки добавить, а то по байту читать дюже накладно.
Профит для АТМ в архивчике - проверяйте.
void put_memw(u8 pg, u16 addr, u16 data)
u16 get_memw(u8 pg, u16 addr)
void put_meml(u8 pg, u16 addr, u32 data)
u32 get_meml(u8 pg, u16 addr)
Добавил версию для TS-Config. Дополнительно нужно добавить экспорт переменной CC_PAGE2.
В версии для TS-Config в целях ускорения п/п отказался от индексной адресации в пользу адресации через HL относительно стэка.
(Не совсем понимаю, почему в оригинале используется IX).
Проверяйте.
void put_mem(unsigned char pg, unsigned char *addr, unsigned char data)
unsigned char get_mem(unsigned char pg, unsigned char *addr)
void put_memw(unsigned char pg, unsigned int *addr, unsigned int data)
unsigned int get_memw(unsigned char pg, unsigned int addr)
void put_meml(unsigned char pg, unsigned long *addr, unsigned long data)
unsigned long get_meml(unsigned char pg, unsigned long *addr)
P.S.
В общем-то, всё это - "хак", с расчетом, что стэк и временные переменные программы не "раздуются" настолько, что вылезут из области 0xE000 - 0xC000.
P.P.S.
Пожалуй, удалю остальные свои сообщения как бесполезные. Призываю народ поступить аналогично.
Последний раз редактировалось Sergey; 25.04.2014 в 10:30.
С уважением,
Gris / Red Triangle.
_____________________________________
ZX-EVO/TS-Labs config/NGS/HDD/SD-card
Amiga A1200/Blizzard 1230@50/32/60GB
Amiga A1200/Apollo 1260@66/32/60GB
UnAmiga (C5) AGA GM7123 VideoDAC
Добавлены функции для TS-Config. См.выше.
С уважением,
Gris / Red Triangle.
_____________________________________
ZX-EVO/TS-Labs config/NGS/HDD/SD-card
Amiga A1200/Blizzard 1230@50/32/60GB
Amiga A1200/Apollo 1260@66/32/60GB
UnAmiga (C5) AGA GM7123 VideoDAC
А нет возможности сделать загрузку/выгрузку посекторно? Допустим я выделяю где-то в памяти буфер нужного объема, указываю функции номер дорожки, сектора и она уже делает свое дело. Такое реализовать возможно?
Dizzy Scripting Engine:http://www.dizzy-se.ru/
Такое реализовать легко: http://alonecoder.nedopc.com/evo_sdcc_3d13.rar
Буфер в окне #8000..#bfff, подпрограмма туда подключает страницу, которую укажешь в регистре A'. Остальные параметры идут в #3D13 напрямую.
Во время работы с диском устанавливается IM 1, EI, экран 6912.
После завершения #3D13 состояние системы восстанавливается обратно: IM 2, экран EGA, старая страница в окне #8000.
Область #5c00..#5fff сохраняется в конце PAL_PAGE (4-я страница), поэтому дополнительных ограничений на программу нет.
Взносы в призовой фонд конкурса "Твоя игра 5" принимаются с помощью PaуPal, ЯндексДенег или перевода на карту Сбербанка (см. http://ti5.retropc.ru)
alone, спасибо! Вечером начну разбираться.
Dizzy Scripting Engine:http://www.dizzy-se.ru/
Есть такая возможность. Но только для ТС-Конфы. Готовность 70%. Надеюсь, за предстоящие праздники добью.
Будет что-то типа:
unsigned char rdsect(unsigned char *buffer, unsigned char NumSect, unsigned char *path)
unsigned char wrsect(unsigned char *buffer, unsigned char NumSect, unsigned char *path)
Пока затык из-за возможной нечетности адреса буфера - ПДП только с четными адресами работает.
С уважением,
Gris / Red Triangle.
_____________________________________
ZX-EVO/TS-Labs config/NGS/HDD/SD-card
Amiga A1200/Blizzard 1230@50/32/60GB
Amiga A1200/Apollo 1260@66/32/60GB
UnAmiga (C5) AGA GM7123 VideoDAC
Sergey, тс конфа - не вариант. Мне для базовой нужно
Dizzy Scripting Engine:http://www.dizzy-se.ru/
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)