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


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


0 ( 20 июля 85 Экранный редактор NS 08 из 10) 1 : CLINE ( -- ) LSTART LBUFF 64 CMOVE ; ( копирование строки в буфер) 2 3 : PLINE ( -- ) LBUFF LSTART 64 CMOVE ; ( выложить строку буфера) 4 @CURSOR TYPELINE !CURSOR ; 5 6 : KLINE ( -- ) ( стереть строку, занеся ее в кольцевой буфер) 7 LSTART BLINE 64 CMOVE ( перенос текущей строки ) 8 LSTART 64 + LSTART BBELOW CMOVE ( сдвинуть буфер вверх ) 9 SHOWLINES ; ( отображение измененных строк ) 10 11 : ILINE ( -- ) ( ввести строку из кольцевого буфера ) 12 LSTART DUP 64 + BBELOW ) ( сдвинуть буфер ) 13 BLINE LSTART 64 CMOVE ( перенести строку с низа буфера ) 14 SHOWLINES ; ( отображение измененных строк ) 15

0 ( 20 июля 85 Экранный редактор NS 09 из 10) 1 CREATE KEYVECTORS ] ( исполнительный вектор команд редактора) 2 LEFT ( А курсор влево ) BLK# ( в номер блока ) 3 CLINE ( С копирует строку ) DELETE ( D стирает символ ) 4 ?ЕХIТ ( Е уход из редактора ) --- ( F ) 5 MODE ( G перевод в новый режим ) --- ( H ) 6 ILINE ( I ввод строки ) --- ( J ) 7 KLINE ( К стирание строки ) -BLK ( L последний блок ) 8 NEWLINE ( М или ENTER, CR+LF ) +BLK ( N следующий блок ) 9 OPEN ( O раздвинуть текст ) PLINE ( Р вставить строку ) 10 ( Q курсор на место ) RESTORE ( R восстановить экран ) 11 RIGHT ( S курсор вправо ) TRUNC ( Т укоротить строку ) 12 UPDATES ( U пометить буфер )----( V ) 13 UP ( W курсор вверх ) ?CLEAR ( X очистить буфер экрана ) 14 --- ( Y ) DOWN ( Z курсор вниз ) [ 15 : KEYDO ( n -- ) 1- 2* KEYVECTORS + @ EXECUTE ;

0 ( 20 июля 85 Экранный редактор NS 10 из 10) 1 : EDITCASE ( флаг симв -- флаг ) 2 DUP 27 < OVER 0 > AND ( легальный управляющий символ? ) 3 IF KEYDO ( если так. то исполняем команду ) 4 ELSE DUP 31 > OVER 127 < AND ( если нет, печатный символ ?) 5 IF I/R @ ( если да - смотрим, каков режим ) 6 IF INSERT ELSE OVERTYPE THEN ( и вводим или замещаем ) 7 ELSE DROP --- ( но, если символ непечатный, игнорируем ) 8 THEN 9 THEN ; 10 11 : EDINIT ( blk -- ) SCR ! EMPTY-BUFFERS LOADBLK SHOWBLK ; 12 : EDITLOOP ( -- ) edinit 0 BEGIN KEY EDITCASE DUP UNTIL 13 DROP ; 14 : EDIT ( blk- ) EDITLOOP ; 15 : E SCR @ EDIT :




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