Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Это, разумеется, сделано для эффективности и компактности машинного кода. Если знаете Си, то вот как именно это реализовано:
Код:#define __hash__ # #define __id__(x) x #define __ld_a__(x) if(x==0) {__asm xor a,a __endasm;}else{__asm ld a,__id__(__hash__)x __endasm;} #define __ld_c__(x) __asm ld c,__id__(__hash__)x __endasm import void Basic_BORDER_stdcall (SHORTINT color); #ifndef BORDER_fastcall #define Basic_BORDER Basic_BORDER_stdcall #else //BORDER_fastcall #define Basic_BORDER(color) __ld_a__(color); \ __asm \ call 0x229B \ __endasm; #endif import void Basic_PAPER_stdcall (SHORTINT color); import void Basic_PAPER_fastcall (void /* Register C */); #ifndef PAPER_fastcall #define Basic_PAPER Basic_PAPER_stdcall #else //PAPER_fastcall #define Basic_PAPER(color) __ld_c__(color); Basic_PAPER_fastcall() #endif
Приветствую, Олег!
Интеллекта не хватает, твою систему освоить. Поэтому пока балуюсь только гольным sdcc.
Не подскажешь ли, как мне 1) crt0.rel свой сделать, 2) как на выходе бинарные файлы получать вместо ihx?
С уважением,
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
Та ладно, Сергей, не прибедняйтесь. Не так там уж сложно всё. Впрочем, готов поотвечать на вопросы в аське, ирц, жаббере или на форуме ZX.Oberon2.Ru/Forum, милости прошу, пишите ЛС, если есть охота.
crt0.rel я никогда не делал, даже не баловался. Если честно, я даже не знаю зачем оно надо. Тут нам вместе надо обратиться к гуру SDCC.
Перегнать IHX в BIN можно несколькими способами. ZXDev использует утилиту Hex2bin, скачивается отсюда: http://sourceforge.net/projects/hex2bin. Есть планы сделать утилиту, напрямую конвертирующую IHX в TAP/TZX/TRD (с добавкой произвольного загрузчика). Первая версия уже почти-почти готова (но пока умеет только BIN в TAP, без IHX).
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
По реквесту AlCo сделал возможность автосборки и запуска Оберон-программ для Спека нажатием F12 (можно переделать на любую другую комбинацию или отдельную клавишу). Сделано несложно, а именно: для модуля Module.odc (или Mod/Module.odc) ищется одноименный файл Obj/Module.bat, всё остальное делает уже сам батник. Проверяет существование откомпилированных модулей (при необходимости перекомпилируя их), вызывает сишный компилер, проверяет не вернул ли он ошибку; если да, то останавливается; если нет, для основного модуля вызываются Hex2bin, bin2trd, далее целевой собранный TRD-шник запускается в эмуле, связанном с расширением .trd. Запускать TRD-шник автоматически при старте умеют не все эмули. Бороться с этим планирую переходом на формат TAP.
Есть ещё варианты как сделать. Например, если одноименного батника для модуля нет, можно запускать в зависимости от выбранной команды один из батников (Bin/compile, Bin/build, Bin/run) на всю подсистему, они-то и будут знать как компилировать, собирать и запускать программы заданным компилером. Ещё вариант: ручной выбор из меню компилятора и целевой платформы, а батники будут лежать в папке bin компилятора. Эти варианты обдумываются.
Последний раз редактировалось Oleg N. Cher; 15.01.2014 в 00:04.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Прошу прощения, а под х64 будет работать? Пока что посылает лесом, ругается на х64.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Под x64 не тестировалось, но по идее никаких препятствий быть не должно. А как именно ругается?
Вложение 40058
Запускал и в режиме совместимости, результат тот же.
Удалось найти пока только это: http://zx.pk.ru/showthread.php?t=18315 (тот же) и то что во вложении.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)