Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''ERASE''' (стереть) — стандартное слово [[Каллисто]]. Обнулить массив. | | '''ERASE''' — стандартное слово [[Каллисто]]. |
| ERASE ( a u −− ) Стереть. Записать u нулей в память, начиная с адреса a.
| | |
| Слово ERASE записывает u нулевых байтов в память, начиная с адреса a.
| | Записывает u нулевых байтов в память начиная с адреса a. |
|
| |
|
| == Ввод слова ERASE ==
| |
| В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша ×|{{Серая клавиша|×}}]] {{ШГ←}} [[Клавиша 1|{{Серая клавиша|1}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
| |
|
| |
|
| == ERASE в стандарте ANS Forth == | | == ERASE в стандарте ANS Forth == |
Строка 12: |
Строка 10: |
| последовательных адресуемых элементов памяти, начинающихся с addr. | | последовательных адресуемых элементов памяти, начинающихся с addr. |
|
| |
|
| == История ==
| |
| Слово ERASE пришло в [[Каллисто]] из Форта, где оно является древним и стабильным. В существующем ныне виде слово ERASE известно с 1979 года и входит во все стандарты.
| |
|
| |
|
| === ERASE в предыдущем стандарте Forth-83 (англ.) ===
| | == ERASE в предыдущем стандарте Forth-83 (англ.) == |
| ERASE addr u -- 79 | | ERASE addr u -- 79 |
| u bytes of memory beginning at addr are set to zero. No | | u bytes of memory beginning at addr are set to zero. No |
| action is taken if u is zero. | | 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>
| |
|
| |
|
| === colorForth (cf2019.nasm 2019 Sep 14) === | | === colorForth (cf2019.nasm 2019 Sep 14) === |
Строка 103: |
Строка 32: |
|
| |
|
| == Ссылки == | | == Ссылки == |
| * {{Исходник|ERASE|ERASE}} | | * [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.2.1350 Слово ERASE в стандарте ANS Forth] ''(англ.)'' |
| * См. также слова [[FILL]] [[BLANK]]
| | * [http://www.forth200x.org/documents/html/core.html#core:ERASE Слово ERASE в черновике Forth 200x] ''(англ.)'' |
| * Слово [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] ''(англ.)''
| |
|
| |
|
|
| |
|
Строка 113: |
Строка 39: |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Примитивы]]
| |
| [[Категория:Работа с памятью Каллисто]] | | [[Категория:Работа с памятью Каллисто]] |
| [[Категория:Стандартные слова]]
| |
| [[Категория:1994 CORE EXT]]
| |
| [[Категория:2012 CORE EXT]]
| |