Язык программирования Форт


Глава 10. Хранение программ и данных - часть 6


Если содержимое BLK не равно 0, то это означает, что ввод производится с диска, тогда >IN указывает на номер байта в блоке, из которого приходит ввод. В некоторых версиях Форта имеется слово \ (обратная косая черта), которое используется для пропуска оставшейся части строки, т. е. если встречается \, то остаток строки при вводе игнорируется, поэтому этот знак можно использовать для помещения комментариев. Приведем определение этого слова: : \ ( - ) >IN @ 64 / 1+ 64 * >IN ! ; IMMEDIATE

Слово \ заставляет переменную >IN указывать на начало следующей строки, независимо от того, встречается ли оно в определении через двоеточие или самостоятельно. Теперь мы можем определить слово --> : : --> ( -- ) 0 >IN ! 1 BLK +! ; IMMEDIATE

Вам должно быть понятно, как оно работает.

Упражнения

1. Предположим, что вы определили слово : =-> ( -- ) BLK @ 1+ LOAD ; IMMEDIATE Чем его действие будет отличаться от действия слова --> , определенного выше? (Указание: рассмотрите, что произойдет после того, как будет загружен следующий блок.) 2. Дайте новое определение слова --> под именем N->, которое не просто загружает следующий блок, а, кроме того сообщает на экране "Блок n загружен", где n - номер блока, который был загружен. Не пользуйтесь для определения словом -->! 3. Определите слово LISTS, которое будет выводить блоки, сообщая в начале каждого блока его номер "Блок ххх"", где ххх - номер блока, если задан номер начального блока и число блоков, которое нужно вывести, т. е. блоки должны выводиться в виде Блок 25 1 ...... 2 ...... 3 ...... Для вывода каждого блока потребуется 17 строк. На обычной бумажной странице можно напечатать 66 строк- Определите слово LISTS так, чтобы между листингами экранов было такое количество пустых строк, чтобы три экрана занимали ровно 66 строк. 4. Иногда требуется, чтобы сообщение об ошибке выдавалось во время загрузки блока и указывало, в каком месте в блоке обнаружена ошибка. Определите слово с именем ... (уголок), которое указывало бы на местоположение ошибки, т.


- Начало -  - Назад -  - Вперед -