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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
(не показаны 32 промежуточные версии этого же участника)
Строка 1: Строка 1:
'''ERASE''' — стандартное слово [[Каллисто]].
'''ERASE''' (стереть) — стандартное слово [[Каллисто]]. Обнулить массив.
ERASE          ( a u −− )                          Стереть. Записать u нулей в память, начиная с адреса a.
Слово ERASE записывает u нулевых байтов в память, начиная с адреса a.
 
== Ввод слова ERASE ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша ×|{{Серая клавиша|×}}]] {{ШГ←}} [[Клавиша 1|{{Серая клавиша|1}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
 
== ERASE в стандарте ANS Forth ==
6.2.1350  ERASE                                                      CORE EXT
            ( addr u -- )
            Если u больше нуля, очистить все биты в каждом из u
            последовательных адресуемых элементов памяти, начинающихся с addr.
 
== История ==
Слово ERASE пришло в [[Каллисто]] из Форта, где оно является древним и стабильным. В существующем ныне виде слово ERASE известно с 1979 года и входит во все стандарты.
 
=== ERASE в предыдущем стандарте Forth-83 (англ.) ===
      ERASE        addr u --                    79
          u bytes of memory beginning at addr are set to zero.  No
          action is taken if u is zero.
 
=== ERASE в стандарте Forth-79 (англ.) ===
ERASE          addr n --                    182
    Fill  an area of memory over n bytes with zeros,  starting  at
    addr.  If n is zero or less, take no action.
 
=== ERASE в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
ERASE addr n --
        Clear a region of memory to zero from addr over n addresses.
 
== Реализация ==
<pre>
2013 JFILL2:        M8 1 + MA  1 + M3
2014                KRM8 M0 +/−  KX<09              ; Счётчик литер
2015                KRMA 1 EE 4 −  KX>=09  1 − M5 RMB
2016 FILL1:          KM5  FL0 FILL1
2017                KGOTO9
2021 JERASE:        CX                              ; Обработчик ERASE
2022 JJFILL:        MB RM3  GOTO JFILL2
2023
2024 ;#ERASE
2025 ; ERASE            ( a U −− )                          Стереть. Записать U нулей в память, начиная с адреса a.
2026 LERASE:        .DB    5
2027                .TEXT  "ERASE"                ; ( где сколько −− )
2028                .DW    LFILL
2029 ERASE:          .DW    JERASE                  ; Обнулить массив.
</pre>
Реализация из SP-Forth 4.20:
<pre>
: ERASE ( addr u -- ) \ 94 CORE EXT
\ Если u больше нуля, очистить все биты каждого из u байт памяти,
\ начиная с адреса addr.
  0 FILL
;
</pre>
 
=== Советская реализация ===
Юрий Семёнов приводит (стр. 26) следующее определение ERASE через более общее слово [[FILL]]:
: ERASE  0 FILL ;
 
Описание и определение слова ERASE в ядре ФОРТ-ЕС:
<PRE>
ERASE    + A,U-> ЗАСЛАТЬ НУЛИ В U БАЙТОВ ПО АДРЕСУ А            22
 
                    Экран номер 22
( 31.03.86  FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL)
 
: ERASE  ( A,U-> ) 0 FILL ;
</PRE>
В FORTH ИТЭФ слово ERASE было [[примитив]]ом, код которого использовал код [[примитив]]а [[FILL]], вот их определения:
<PRE>
            HEAD    204Q,'FIL',314Q,FILL                ; FILL
            POP  AX      ; Символ
  FLL:    POP  CX      ; Счетчик символов
            CMP  CX, 0
            JLE  DRP    ;
            POP  BX
  $REPE:  MOV  BYTE PTR [BX],  AL
            INC  BX
 
            LOOP $REPE
            NEXT
 
            HEAD    205Q,'ERAS',305Q,ERASE              ; ERASE
            SUB  AX, AX
            JMP  FLL
</PRE>
 
== Ссылки ==
* {{Исходник|ERASE|ERASE}}
* См. также слова [[FILL]] [[BLANK]]
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.2.1350 ERASE] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth-standard.org/standard/core/ERASE ERASE] в черновике Forth 200x ''(англ.)''
* [http://www.forth.com/starting-forth/sf8/sf8.html Variables, Constants, and Arrays] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
 


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

Версия от 17:19, 10 ноября 2017

ERASE (стереть) — стандартное слово Каллисто. Обнулить массив.

ERASE          ( a u −− )                           Стереть. Записать u нулей в память, начиная с адреса a.

Слово ERASE записывает u нулевых байтов в память, начиная с адреса a.

Ввод слова ERASE

В режиме ЛАТ последовательно нажмите клавиши  ИП   ×   ШГ←   1   ИП 

ERASE в стандарте ANS Forth

6.2.1350   ERASE                                                       CORE EXT
           ( addr u -- )
           Если u больше нуля, очистить все биты в каждом из u 
           последовательных адресуемых элементов памяти, начинающихся с addr.

История

Слово ERASE пришло в Каллисто из Форта, где оно является древним и стабильным. В существующем ныне виде слово ERASE известно с 1979 года и входит во все стандарты.

ERASE в предыдущем стандарте Forth-83 (англ.)

     ERASE        addr u --                     79
          u bytes of memory beginning at addr are set to zero.  No
          action is taken if u is zero.

ERASE в стандарте Forth-79 (англ.)

ERASE          addr n --                     182
    Fill  an area of memory over n bytes with zeros,  starting  at
    addr.  If n is zero or less, take no action.

ERASE в fig-FORTH Release 1 glossary, май 1979 (англ.)

ERASE addr n --
       Clear a region of memory to zero from addr over n addresses.

Реализация

2013 JFILL2:         M8 1 + MA  1 + M3
2014                 KRM8 M0 +/−  KX<09              ; Счётчик литер
2015                 KRMA 1 EE 4 −  KX>=09  1 − M5 RMB
2016 FILL1:          KM5  FL0 FILL1
2017                 KGOTO9
…
2021 JERASE:         CX                              ; Обработчик ERASE
2022 JJFILL:         MB RM3  GOTO JFILL2
2023 
2024 ;#ERASE
2025 ; ERASE            ( a U −− )                           Стереть. Записать U нулей в память, начиная с адреса a.
2026 LERASE:         .DB     5
2027                 .TEXT   "ERASE"                 ; ( где сколько −− )
2028                 .DW     LFILL
2029 ERASE:          .DW     JERASE                  ; Обнулить массив.

Реализация из SP-Forth 4.20:

: ERASE ( addr u -- ) \ 94 CORE EXT
\ Если u больше нуля, очистить все биты каждого из u байт памяти,
\ начиная с адреса addr.
  0 FILL
;

Советская реализация

Юрий Семёнов приводит (стр. 26) следующее определение ERASE через более общее слово FILL:

: ERASE   0 FILL ;

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

ERASE    + A,U-> ЗАСЛАТЬ НУЛИ В U БАЙТОВ ПО АДРЕСУ А            22

                     Экран номер 22
( 31.03.86   FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL)

: ERASE  ( A,U-> ) 0 FILL ;

В FORTH ИТЭФ слово ERASE было примитивом, код которого использовал код примитива FILL, вот их определения:

            HEAD     204Q,'FIL',314Q,FILL                 ; FILL
            POP  AX      ; Символ
   FLL:     POP  CX      ; Счетчик символов
            CMP  CX, 0
            JLE  DRP     ;
            POP  BX
   $REPE:   MOV  BYTE PTR [BX],  AL
            INC  BX

            LOOP $REPE
            NEXT

            HEAD     205Q,'ERAS',305Q,ERASE               ; ERASE
            SUB  AX, AX
            JMP  FLL

Ссылки


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


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