UPDATE: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
(Новая страница: «'''UPDATE''' — стандартное слово Каллисто. {{нет иллюстраций}} {{заготовка}} Категория:Слова…»)
 
 
(не показаны 32 промежуточные версии этого же участника)
Строка 1: Строка 1:
'''UPDATE''' — стандартное слово [[Каллисто]].
'''UPDATE''' (изменить, обновить) — стандартное слово [[Каллисто]].
UPDATE        ( −− )                              Отметить блочный буфер, как изменённый.
Устанавливает в [[буфер]]е флаг "спасения".
 
Обычно UPDATE используется после изменения [[буфер]]а и перед словом [[FLUSH]], которое сбрасывает обновлённый [[блок]] на электронный диск.
 
== Ввод слова UPDATE ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша 3|{{Серая клавиша|3}}]] [[Клавиша 6|{{Серая клавиша|6}}]] [[Клавиша K|{{Синяя клавиша|K}}]] {{ШГ←}} [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
 
== Это интересно ==
Сбросить флаг UPDATE можно двумя способами. Либо [[SAVE-BUFFERS]] (или более короткое слово [[FLUSH]]), тогда «грязный» блок сбрасывается на диск. Либо [[EMPTY-BUFFERS]], тогда флаг UPDATE очищается вместе с буфером, независимо от их прошлого содержания.
 
== UPDATE в стандарте ANS Forth ==
<PRE>
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.
</PRE>
 
== История ==
В 1968 году Чак Мур работал в Mohasco Industries, Inc ([https://en.wikipedia.org/wiki/Amsterdam_%28city%29,_New_York Amsterdam NY], ''англ.''). Первая версия интерпретатора, получившая название FORTH, заработала на миникомпьютере IBM 1130 с графическим дисплеем 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт). Первый FORTH знал слово UPDATE
 
UPDATE позволял пометить блок, чтобы он был записан обратно на диск, когда понадобится его буфер (или словом [[FLUSH]]). Это реализовывало виртуальную память.
 
Английское слово [http://www.lingvo-online.ru/ru/Translate/en-ru/update ''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.
 
== Реализация ==
<pre>
  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
</pre>
 
=== Советская реализация ===
Описание и определение слова UPDATE в ядре ФОРТ-ЕС:
<PRE>
UPDATE      -> ОТМЕТИТЬ ТЕКУЩИЙ БЛОК КАК ИЗМЕНЕННЫЙ          25
 
                    Экран номер 25
( 31.03.86    +BUF  BUFFER  BLOCK  EMPTY-BUFFERS  UPDATE  )
 
: UPDATE ( -> )  PREV @ @ 32768 OR PREV @ ! ;
</PRE>
В FORTH ИТЭФ слово UPDATE было [[примитив]]ом, вот его определение:
<PRE>
            HEAD    206Q,'UPDAT',305Q,UPDAT              ; UPDATE
            MOV  BX, 74Q[DI]
            OR  [BX],  100000Q
            NEXT
</PRE>
 
== Ссылка ==
* {{Исходник|UPDATE|UPDATE}}
* Слово [http://forth.sourceforge.net/standard/dpans/dpans7.htm#7.6.1.2400 UPDATE] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth-standard.org/standard/block/UPDATE UPDATE] в черновике Forth 200x ''(англ.)''
* [https://en.wikipedia.org/wiki/Dirty_bit Dirty bit в английской Википедии] ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\10.WWOD-WYWOD ВВОД-ВЫВОД] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://www.forth.com/starting-forth/sf3/sf3.html The Editor (and Staff)] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
 


{{нет иллюстраций}}
{{нет иллюстраций}}
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Примитивы]]
[[Категория:Работа с внешней памятью Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:1994 BLOCK]]
[[Категория:2012 BLOCK]]

Текущая версия от 17:27, 9 ноября 2017

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

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

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

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

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

В режиме ЛАТ последовательно нажмите клавиши  3   6   K   ШГ←   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

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


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


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