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.




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