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


Глава 12. Редакторы Форта - часть 3


Строчный редактор не является "унифицированной" программой, в которой каждое слово, предназначенное для редактирования строки, применяется независимо для изменения отдельной строки текста. Команда n LIST в начале процедуры редактирования присваивает номер блока переменной SCR и отображает содержимое блока, который будет редактироваться (SCR не нужно для системы Форт-83, но большинство диалектов ее используют).

Слова строчного редактора используют число в SCR для идентификации блока, который должен редактироваться, и, кроме того, многие из них требуют при исполнении наличия в стеке номера строки. В табл. 12.1 представлены некоторые типичные команды строчного редактора, которые использовались в устаревшей версии MMSFORTH V 1.9 (MMSFORTH в настоящее время поставляется с мощным экранным редактором). Вы сами можете описать эти слова, основываясь на знаниях, приобретенных в гл.10.

Таблица 12.1. Команды строчного редактора MSFORTHV 1.9.

n A текст Добавить строку, сдвинуть вниз остальные строки: строка помещается в PAD-буфер n D Стереть строку, сдвинуть вверх остальные строки; строка помещается в PAD-буфер n I Ввести строку, сдвинув остальные строки вниз; строка извлекается из PAD-буфера n P текст Поместить текст, следующий за "Р", в строку n n R Заменить строку n строкой из PAD-буфера S Выйти из редактора и спасти все изменения n Т Отобразить на экране строку n; поместить строку в PAD-буфер Q Выйти из редактора без спасения внесенных изменений

При выполнении команды LIST номер блока запоминается в SCR, а его содержимое заносится в буфер. Большинство операторов строчного редактора используют последовательность SCR @ BLOCK для получения адреса памяти, куда был загружен блок с диска (блочный буфер). Редактирование производится непосредственно в блочном буфере, и дополнительно требуется только 64 байта памяти сразу за словом PAD. Эта память служит для размещения строки, которая стерта или введена, так что она может быть позднее использована для ввода или замещения фрагмента текста в блочном буфере.


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