Язык Форт и его реализации



         

Работа с внешней памятью - часть 3


Для записи всех измененных буферов во внешнюю память служит слово SAVE-BUFFERS (сохранить буфера):

: SAVE-BUFFERS ( ---> ) LIMIT FIRST DO I @ 32768 AND IF I @ 32767 AND DUP I ! I 2+ SWAP WBLK THEN 1028 +LOOP ;

При исполнении слова SAVE-BUFFERS все буфера остаются приписанными прежним блокам. Слово FLUSH (очистить) переписывает все исправленные блоки во внешнюю память и освобождает буфера. Многие реализации имеют слово EMPTY-BUFFERS (опустошить буфера), которое освобождает буферный пул, не переписывая исправленные блоки:

: EMPTY-BUFFERS ( ---> ) LIMIT FIRST DO 0 I @ ! 1028 +LOOP ; : FLUSH ( ---> ) SAVE-BUFFERS EMPTY-BUFFERS ;

Внешняя память форт-системы в основном используется для хранения форт-текстов. Блок внешней памяти с форт-текстом называется экраном и условно разбивается на 16 строк по 64 литеры в каждой. Такой формат экрана сложился традиционно и закреплен в стандарте.

Программист создает и исправляет экраны во внешней памяти, используя встроенный редактор форт-системы. Как и в случае встроенного ассемблера, стандарт не определяет конкретный вид и состав его команд, поскольку это в значительной степени определяется функциональными возможностями и характеристиками конкретных терминалов и средствами работы с ними. Обычно слова-команды текстового редактора составляют отдельный список слов с именем EDITOR (редактор), базирующийся на списке FORTH. Для распечатки редактируемого экрана на терминале чаще всего используют слово LIST (распечатать), которое, кроме того, сохраняет номер экрана в служебной переменной SCR:

: LIST ( N ---> ) DUP SCR ! CR ." ЭКРАН " DUP . BLOCK 16 0 DO DUP I 64 * + CR I 3 .R SPACE 64 TYPE LOOP DROP ;

Вначале печатается номер данного экрана, затем его строки. Перед каждой строкой печатается ее номер — число в диапазоне от 0 до 15. По завершении редактирования исправленные экраны можно записать во внешнюю память словом FLUSH.




Содержание  Назад  Вперед