UPDATE

Материал из ПМК вики
Перейти к навигации Перейти к поиску

UPDATE (изменить, обновить) — стандартное слово Каллисто.

UPDATE         ( −− )                               Отметить блочный буфер, как изменённый.

Устанавливает в буфере флаг "спасения".

Обычно UPDATE используется после изменения буфера и перед словом FLUSH, которое сбрасывает обновлённый блок на электронный диск.

Ввод слова UPDATE[править]

В режиме ЛАТ последовательно нажмите клавиши  3   6   K  $\mathrm{\overset{\leftarrow}{ШГ}}$  2   ИП 

Это интересно[править]

Сбросить флаг UPDATE можно двумя способами. Либо SAVE-BUFFERS (или более короткое слово FLUSH), тогда «грязный» блок сбрасывается на диск. Либо EMPTY-BUFFERS, тогда флаг UPDATE очищается вместе с буфером, независимо от их прошлого содержания.

UPDATE в стандарте ANS Forth[править]

 7.6.1.2400   UPDATE                                                       BLOCK
            ( -- )
            Отмечает текущий блочный буфер как измененный. Неопределенная 
            ситуация существует, если нет никакого текущего блочного буфера.

            UPDATE не вызывает немедленно ввод-вывод.

        См.: 7.6.1.0800 BLOCK, 7.6.1.0820 BUFFER, 7.6.1.1559 FLUSH, 7.6.1.2180 
            SAVE-BUFFERS.

История[править]

В 1968 году Чак Мур работал в Mohasco Industries, Inc (Amsterdam NY, англ.). Первая версия интерпретатора, получившая название FORTH, заработала на миникомпьютере IBM 1130 с графическим дисплеем 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт). Первый FORTH знал слово UPDATE

UPDATE позволял пометить блок, чтобы он был записан обратно на диск, когда понадобится его буфер (или словом FLUSH). Это реализовывало виртуальную память.

Английское слово update означает «обновить».

UPDATE в предыдущем стандарте Forth-83 (англ.)[править]

     UPDATE       --                            79
          The currently valid block buffer is marked as modified.
          Blocks marked as modified will subsequently be automatically
          transferred to mass storage should its memory buffer be
          needed for storage of a different block or upon execution of
          FLUSH or SAVE-BUFFERS .

UPDATE в стандарте Forth-79 (англ.)[править]

UPDATE                                       229
    Mark  the  most recently referenced block  as  modified.   The
    block  will subsequently be automatically transferred to  mass
    storage  should  its memory buffer be needed for storage of  a
    different block, or upon execution of SAVE-BUFFERS.

UPDATE в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

UPDATE                                          L0
       Marks the most recently referenced block (pointed to by PREV) as
       altered. The block will subsequently be transferred automatically to
       disc should its buffer be required for storage of a different block.

Реализация[править]

  66 rrBUFBLK        .EQU     5094                   ; 15094 = 3af6 Номер блока в буфере и признак UPDATE
  67 rlBUFBLK        .EQU     5095
…
2441 ;#UPDATE
2442 ; UPDATE           ( −− )                               Отметить блочный буфер, как изменённый.
2443 LUPDAT:         .DB     6
2444                 .TEXT   "UPDATE"                ; ( −− )
2445                 .DW     LDEFIN
2446 UPDAT:          .DW     JUPDAT
2447 JUPDAT:         128  PPM rrBUFBLK               ; Установить в буфере флаг "спасения".
2448                 KGOTO9

Советская реализация[править]

Описание и определение слова UPDATE в ядре ФОРТ-ЕС:

UPDATE       -> ОТМЕТИТЬ ТЕКУЩИЙ БЛОК КАК ИЗМЕНЕННЫЙ           25

                     Экран номер 25
( 31.03.86    +BUF  BUFFER  BLOCK  EMPTY-BUFFERS  UPDATE   )

: UPDATE ( -> )   PREV @ @ 32768 OR PREV @ ! ;

В FORTH ИТЭФ слово UPDATE было примитивом, вот его определение:

            HEAD     206Q,'UPDAT',305Q,UPDAT              ; UPDATE
            MOV  BX, 74Q[DI]
            OR   [BX],   100000Q
            NEXT

Ссылка[править]


  Nopictures-icon.png У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Stub-icon-48px.png Это заготовка статьи. Вы можете помочь проекту, дополнив её.