Вокруг ZX Spectrum 1991 г.

Программирование на Си - Система программирования на языке Си фирмы HiSoft (vl.l)


Система программирования на языке Си фирмы HiSoft (в дальнейшем называемая Си-системой) состоит из двух компонент: текстового редактора и компилятора. Соответственно, имеется, за основных режима: режим редактирования и режим компиляции. Рассмотрим особенности работы в этих режимах. В режиме редактирования производится ввод и исправление текста программы. Управление осуществляется следующими клавишами: «С» - переход в режим компиляции. «В» - возврат в Бейсик-систему; повторный вызов Си-системы производится с помощью команды RANDOMIZE USR 25200. «In1,n2» - переход в подрежим ввода текста. Строки текста автоматически нумеруются начиная с nl, номер увеличивается на n2 при переходе к следующей строке. Выход из этого подрежима осуществляется нажатием «CapsShift»+»1». «Nnl,n2» - перенумерация строк текста. Первой строке присваивается номер nl, а n2 - приращение номеров в последовательных строках. «Dnl,n2» - удаление строк с номерами от nl до n2. Сергей Кауль «Mnl,n2» - копирование строки nl в строку n2. «Lnl,n2» - вывод на экран текста программы начиная со строки nl до строки n2. После заполнения части экрана вывод приостанавливается, позволяя просмотреть выведенную порцию текста. Вывод может быть прерван нажатием «CapsShift»+«l», нажатие любых других клавиш приведет к выводу следующей порции текста. «Knl» - изменение размера порции текста выводимой командой «L». nl задает новое количество строк в порции. «V» - вывод на экран текущих значений основных параметров (первый и второй параметры команд по умолчанию, адрес начала и конца текстового буфера). «Pnl,n2,filename» - запись на магнитофон (или микродрайв, если он имеется) текста программы от строки nl до строки n2. Запись производится в файл с именем filename. «G,,filename» - чтение с магнитофона файла filename. Если в памяти уже находится некоторая программа, то содержимое файла будет размещаться после нее. «Fnl,n2,text1,text2» - поиск текста text1 (образец поиска), начиная со Строки nl и кончая строкой n2, с возможной заменой text1 на text2. После того, как образец поиска найден, автоматически происходит переход в подрежим редактирования строки (см. ниже), где можно осуществить замену text1 на text2 («S»), продолжить поиск («F») или вручную отредактировать найденную строку. «Еn1» - переход в подрежим редактирования строки с номером nl. В этом подрежиме допускаются следующие команды: «CapsShift»+«5» - перемещение курсора на одну позицию влево; «CapsShift»+«8» - перемещение курсора на одну позицию вправо; «Enter» - завершение редактирования строки; «Q» - завершение редактирования строки с отменой внесенных изменений; «R» - стирание редактируемой строки; «L» - повторный вывод на экран редактируемой строки; «К» - удаление символа, находящегося правее курсора; «Z» - удаление всех символов правее курсора; «I» - переход в подрежим вставки символов, при этом на фоне мерцающего курсора отображается «*», выход из подрежима вставки происходит после нажатия «Enter»; «X» - перемещение курсора в конец редактируемой строки и переход в подрежим вставки символов; «С» - переход в подрежим замены символов, при этом на фоне мерцающего курсора отображается «+», выход из подрежима замены происходит после нажатия «Enter»; «F» - поиск следующего образца поиска; «S» - замена найденного образца поиска на заменяющий текст и поиск следующего образца В режиме компиляции осуществляется перевод (компиляция, транслирование) текста программы на языке Си в коды микропроцессора. Переход из режима компиляции в режим редактирования производится нажатием «CapsShift»+«1». Компиляция осуществляется в два этапа. На первом этапе производится предварительная обработка текста; подсистема, которая осуществляет эту работу, называется препроцессором. Все команды препроцессора начинаются с символа «#». Сразу следует оговориться, что возможности описываемого препроцессора существенно хуже, чем фактически сложившийся стандарт, но что поделаешь, - 48 килобайт памяти и внешняя память на магнитной ленте не позволяют размахнуться слишком широко. Итак, перейдем к командам препроцессора. define ИМЯ ЗНАЧЕНИЕ - заменяет каждое вхождение текста. ИМЯ на текст ЗНАЧЕНИЕ. Например, define ZERO 0 include «ИМЯфайла» - приводит к включению содержимого файла ИМЯфайла в текст программы. Поскольку текстовый буфер при этом не увеличивается то эту возможность обычно используют для разбиения больших программ, не помещающихся в текстовый буфер, на относительно небольшие фрагменты, хранящиеся в файлах. Кроме того, с помощью этой команды производится подключение библиотек стандартных подпрограмм. Например, include «screen» - приводит к считыванию с магнитофона файла screen и включению его в текст программы. include «A:screen» - то-же самое, но только чтение с микрорайва или дисковода (в зависимости от варианта Си-системы). translate «ИМЯфайла» - скомпилировать программу и записать ее в файл ИМЯфайла. В последующем загрузка и запуск этой программы осуществляются из Бейсик-системы с помощью команд LOAD «ИМЯфайла»СОDЕ: RANDOMIZE USR 25200. При компиляции программы без команды #translate в памяти находятся сама Си-система, текст программы, таблицы имен, область глобальных переменных, стек, генерируемый компилятором код программы, и область свободной памяти. Все они размещены в памяти начиная с адреса 25200 и выше. Если компиляция осуществлена с командой #translate, то после завершения компиляции сгенерированный код программы перемещается в область Си-системы, уничтожая ее, а область глобальных переменных, стек и область свободной памяти расширяются, захватывая память, которая ранее была, распределена под текст программы и таблицы имен. Этот механизм нужно понимать и не волноваться, если у вас не хватает памяти во время отладки. Уменьшайте размеры массивов и отлаживайте задачу, а перед тем, как компилировать ее с командой #translate установите нужные размеры и, скорее всего памяти окажется достаточно. include - заставляет препроцессор обработать текстовый буфер. Все остальные команды препроцессора обычно включают в текстовый буфер или файлы, подключаемые командой #include « ИМЯфайла». ЗАМЕЧАНИЯ. Команда #translate должна находиться в самом начале текстового буфера, или должна вводиться с клавиатуры перед командой #include. Команда #include «ИМЯфайла» не может быть вложенной, т.е. она может встречаться только в текстовой буфере. Переход ко второму этапу компиляции произвоДится совместным нажатием клавиш «SymbolShift» и «I» (латинское «И»). Если второй этап завершился нормально, то на экране появится сообщение «type y for run» (нажмите «y» для запуска программы). Нажатие клавиши «Y» приведет к выполнению программы, нажатие любой другой клавиши вызовет возврат в режим компиляции. Завершим первое знакомство с Си-системой примером простейшего сеанса работы. Сначала загрузим Си-систему с ленты. После загрузки на экране появится сообщение «Save to Microdrive 1 (y/n)?». Если к вашему компьютеру подключен микродрайв, отвечайте «Y» (при этом видимо произойдет запись на микродрайв), все остальные должны отвечать «N», после чего на экране появляется текст «HISOFT С Compiler…», свидетельствующий о том, что мы оказались в режиме компиляции. Перейдем в режим редактирования. Для этого нажмем «CapsShift»+«l» и «Enter». Теперь на экране возникнет надпись «edit:». Перейдем в подрежим ввода текста, набирая на клавиатуре «I10,10» и «Enter». После появления номера строки 10 наберем текст main() и «Enter». На экране появляется следующий номер - 20. Теперь набираем {printf («hello»); rawin ();} и «Enter». Программа введена в текстовый буфер, поэтому надо закончить ввод. Нажмем «CapsShiff+«1» и «Enter». Скомпилируем программу. Для этого нажав «С» и «Enter» перейдем в режим компиляции. Запустим компилятор командой #include. Если никаких сообщений типа «ERROR ...» нет, а на экране только листинг программы, значит вы правильно ввели текст. В противном случае нужно вернуться в режим редактирования, внимательно просмотреть текст и исправить ошибки. Переходим ко второму этапу компиляции нажав «SymbolShiff+«I». После появления надписи «type у for run» нужно нажать «Y». Нажмем. Программа начала выполняться. Оператор printf («hello») выводит на экран текст hello. Оператор rawin() ожидает ввода с клавиатуры. Нажав любую клавишу мы завершим этот оператор, вслед за чем закончится выполнение и всей программы. На экране вновь появляется надпись «type у for run», позволяя повторно запустить программу. Мы не будем этого больше делать и нажмем «N». Программа отлажена. Теперь оттранслируем ее и запишем сгенерированный код на ленту. Для этого наберем #translate «hel» и «Enter», затем #include и «Enter». Теперь нужно включить магнитофон на за¬пись и нажать «SymbolShift»+«I». Записанную программу можно загру¬зить командой LOAD «hel»CODE или просто LOAD «»CODE, а затем запустить на выполнение командой RANDOMIZE USR 25200. (продолжение следует)


СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Программирование - курс изучения ассемблера от Wlodek Black, продолжение.
Прожекты - дизайн проект игровой программы "Тамогочи" от группы MSD.
Новости - Сегодня я расскажу о том, что ждет из программ, а вернее игр. Эти игрушки на днях появятся в Чайковском.
Нововведения - Оболочка - что нового.
Юмор - аббревиатуры, популярные на сетевых просторах.

В этот день...   29 апреля