BUFFER: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
Строка 62: | Строка 62: | ||
== Реализация == | == Реализация == | ||
Описание и определение слова BUFFER в ядре ФОРТ-ЕС: | |||
<PRE> | <PRE> | ||
BUFFER +N->A ПРИПИСАТЬ БЛОКУ +N БУФЕР 23 | |||
Экран номер 25 | Экран номер 25 | ||
( 31.03.86 +BUF BUFFER BLOCK EMPTY-BUFFERS UPDATE ) | ( 31.03.86 +BUF BUFFER BLOCK EMPTY-BUFFERS UPDATE ) |
Версия от 16:40, 26 марта 2016
BUFFER (буфер) — стандартное слово Каллисто.
Резервирует блок в памяти и приписывает ему номер u (как и BLOCK ), но сам блок с диска не считывается.
Ввод слова BUFFER
В режиме ЛАТ последовательно нажмите клавиши В/О 3 П П ИП ×
BUFFER в стандарте ANS Forth
7.6.1.0820 BUFFER BLOCK ( u -- a-addr ) a-addr - адрес первого символа блочного буфера назначенного блоку u. Содержание блока не определено. Неопределенная ситуация существует, если u - не доступный номер блока.
Если блок u - уже в блочном буфере, a-addr - адрес этого блочного буфера.
Если блок u - уже не в памяти и есть свободный буфер, a-addr - адрес этого блочного буфера.
Если блок u - уже не в памяти и нет никаких свободных блочных буферов, освобождает блочный буфер. Если для блока в этом буфере было выполнено UPDATE, перемещает блок в запоминающее устройство. a-addr - адрес этого блочного буфера.
При завершении операции, блочный буфер указанный a-addr - текущий буфер блоков и назначен на u.
См.: 7.6.1.0800 BLOCK.
BUFFER в предыдущем стандарте Forth-83 (англ.)
BUFFER u -- addr M,83 Assigns a block buffer to block u. addr is the address of the first byte of the block within its buffer. This function is fully specified by the definition for BLOCK except that if the block is not already in memory it might not be transferred from mass storage. The contents of the block buffer assigned to block u by BUFFER are unspecified.
BUFFER в стандарте Forth-79 (англ.)
BUFFER n -- addr 130 Obtain the next block buffer, assigning it to block n. The block is not read from mass storage. If the previous contents of the buffer has been marked as UPDATEd, it is written to mass storage. If correct writing to mass storage is not possible, an error condition exists. The address left is the first byte within the buffer for data storage. n is an unsigned number.
BUFFER в fig-FORTH Release 1 glossary, май 1979 (англ.)
BUFFER n --- addr Obtain the next memory buffer, assigning it to block n. If the contents of the buffer is marked as updated, it is written to the disc The block is not read from the disc. The address left is the first cell within the buffer for data storage.
История
Слово BUFFER появилось в 1970 году, когда Чак Мур перенёс Форт на ассемблер Univac 1108 для программирования системы ввода заказов по сети выделенных линий в Mohasco Industries, Inc (Amsterdam NY, англ.).
BUFFER избегало чтения диска, когда было известно, что желаемый блок пуст.
Реализация
Описание и определение слова BUFFER в ядре ФОРТ-ЕС:
BUFFER +N->A ПРИПИСАТЬ БЛОКУ +N БУФЕР 23 Экран номер 25 ( 31.03.86 +BUF BUFFER BLOCK EMPTY-BUFFERS UPDATE ) : BUFFER ( +N->A) OFFSET @ + USE @ DUP >R ( ИЩЕМ СВОБОДНЫЙ БУФЕР) BEGIN +BUF UNTIL USE ! R@ @ 0< IF ( УСТАНОВЛЕН ПРИЗНАК "UPDATE") R@ 2+ R@ @ 32767 AND WBLK THEN R@ ! R@ PREV ! R> 2+ ;
Ссылки
- Слово BUFFER в стандарте ANS Forth (англ.)
- Слово BUFFER в черновике Forth 200x (англ.)
- ВВОД-ВЫВОД в книге Л.Броуди «Начальный курс программирования на языке Форт»
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |