С уважением,
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
Не работает инициализация для это переменной:
нужен crt0.sКод:;main.c:801: static u8 str[]="LEVEL ";
Код:.globl _main .area _HEADER (ABS) .org 0x0000 ;--code-loc 0x0006 init: call gsinit jp __pre_main .area _CODE __pre_main: push de ld de,#_HEAP_start ld (_heap_top),de pop de call _main di halt .area _DATA _heap_top:: .dw 0 gsinit: .area _GSINIT .area _GSFINAL ret .area _HEAP _HEAP_start::
С уважением,
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
Попробуй такой. SDK надо пересобрать.
С уважением,
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
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Последний раз редактировалось Sergey; 16.04.2014 в 16:04.
С уважением,
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
на всяк случай, кому если интересно нашёл ещё кросс компилятор, под винду.
https://www.dropbox.com/s/6f3v8g5l3p...efore.zip?dl=0
Error404, зачисти свою личку, а?!
HiSoftC
ПАМЯТКА ПО ИСПОЛЬЗОВАНИЮ
(лучше брать версию с редактором 51 символ в строке)
Загрузка/выгрузка исходников осуществляется в редакторе.
Переход в редактор: [CS+1], enter.
Работа с файлами возможна с ленты и дисководов.
Лента - устройство №0 ("0:" опускается при наборе команды).
Дисковод "А" - устройство №1,
Дисковод "B" - устройство №2. (дальше не пробовал. возможно работает с "С" и "D")
Загрузить исходник:
команда GET,
G ,,[device:]filename.c
Например, загрузить файл "test.c" с дисковода "A":
G ,,1:test.c
Причем, если у вас уже был какой-то текст, то загружаемый файл добавится к нему с перенумерацией строк (как по MERGE в бэйсике).
Записать исходник:
команда PUT,
P start_line,end_line,[device:]filename.c
Например, записать исходник со строки 10 по строку 50 включительно в файл "test2.c" на дисководе "B":
P 10,50,2:test2.c
Вывод каталога;
Команда X.
X [device]
Например, вывести каталог дисковода A:
X 1
Двоеточие после номера устройства можно не указывать.
Без параметров выводит каталог текущего диска.
Компиляция и запуск программы:
загрузили компилятор.
вошли в режим редактирования: [CS+1] enter.
загрузили исходник командой "G".
можно его просмотреть командой "L".
отредактировали, если требуется (замудреный неудобный процесс - проще строки заново вводить).
вышли в компилятор: команда "C".
набираем: "#include", enter.
наблюдаем прогон нашей программы.
жмем [SS+I]
соглашаемся - жмем "Y".
Профит!
Выгрузка объектного кода:
в режиме компилятора набираем:
"#translate [device:]object_name.code", enter.
"#include [device:]source_name.c", enter.
любуемся на прогон листинга
жмем [SS+I]
соглашаемся - жмем "Y".
объектный код записан на диск и запускается наша откомпилированная прога.
можно уже нажать на RESET, потому что после выполнения программы компилятор всё равно сбросится (так задумано)
Профит!
Примечание: расширения в файлах условны. Они для вас, а не для компилятора. Т.е. вы сами должны помнить,
где у вас исходные тексты, хедеры и объектники. Имена, всё равно, обрезаются до 8 символов и в TR-DOS
записываются как кодовые, с расширением "C".
Запуск откомпилированной программы из бэйсика:
1. загружаем файл программы с адреса 25200
2. заносим код 201 (команда RET) по адресу 25218 (а то всё улетит в космос).
3. вызываем код с адреса загрузки.
Профит!Код:10 RANDOMIZE USR 15619:REM: LOAD "MYPROG" CODE 20 POKE 25218,201 : RANDOMIZE USR 25200
Примечание: после отработки программа сбросится. Чтобы этого избежать, как рекомендует разработчик, выход
из программы необходимо завершать инструкцией DI:HALT:
Ссылка на скан официальной документации (куча опечаток, но дарёному коню...): ftp://ftp.worldofspectrum.org/pub/si.../h/HiSoftC.pdfКод:inline(0xf3,0x76);
Подсказки:
1. Чтобы присвоить указателю фиксированное значение, например адрес экрана и т.п., необходимо давать явное приведение типов, причём не так:
а, из-за упрощённости компилятора, так:Код:char *screen; screen = (char *) 0x4000;
Код:typedef char * this_is_char_ptr; char *screen; screen = cast ( this_is_char_ptr ) 0x4000;
ОШИБКИ КОМПИЛЯТОРА:
1. Файловый ввод/вывод для TR-DOS присутствует и работает (например, функции fopen/fclose, getc/ungetc/putc).
Но работают они только в присутствии самого компилятора, - в объектный код при компилировании НЕ включаются.
Получим вылет "в космос". Таким образом, чтобы программа отработала, как задумано, придётся каждый раз её
компилировать и запускать из среды HiSoftC.
Последний раз редактировалось Sergey; 22.11.2014 в 19:02.
С уважением,
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
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)