FILL
FILL (заполнить) — стандартное слово Каллисто.
FILL ( a u c −− ) Заполнить. Записать u байтов c, начиная с адреса a.
Слово FILL записывает u байт c в память, начиная с адреса a. Универсальный оператор для заполнения массивов памяти идентичными символами. На основе слова FILL реализованы специализированные слова ERASE и BLANK, заполняющие области памяти нулями и пробелами.
Ввод слова FILL
В режиме ЛАТ последовательно нажмите четыре клавиши П 7 − −
FILL в стандарте ANS Forth
6.1.1540 FILL CORE ( c-addr u char -- ) Если u больше чем нуль, сохраняет char в каждом из u последовательных символов в памяти, начинающейся с c-addr.
История
Слово FILL пришло в Каллисто из Форта, где оно является древним и стабильным. В существующем ныне виде слово FILL известно с 1979 года и входит во все стандарты.
FILL в предыдущем стандарте Forth-83 (англ.)
FILL addr u 8b -- 83 u bytes of memory beginning at addr are set to 8b. No action is taken if u is zero.
FILL в стандарте Forth-79 (англ.)
FILL addr n byte -- 234 Fill memory beginning at address with a sequence of n copies of byte. If the quantity n is less than or equal to zero, take no action.
FILL в fig-FORTH Release 1 glossary, май 1979 (англ.)
FILL addr quan b -- Fill memory at the address with the specified quantity of bytes b.
Реализация
2000 ;#FILL 2001 ; FILL ( a U c −− ) Заполнить. Записать U байтов c, начиная с адреса a. 2002 ; Записать U байт c в память начиная с адреса a 2003 ; Заполнить массив памяти идентичными литерами. 2004 ; а − адрес первого байта памяти, куда будет засылаться байт c 2005 ; U − число заполняемых байтов 2006 ; Подразумевается, что граница памяти программ и данных не пересекается. 2007 LFILL: .DB 4 2008 .TEXT "FILL" ; ( куда сколько что −− ) 2009 .DW LCMOVEG 2010 FILL: .DW JFILL 2011 JFILL: PKRM03 MB ; Литера 2012 RM3 1 + 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
Советская реализация
Описание и определение слова FILL в ядре ФОРТ-ЕС:
FILL A,U,C-> ЗАСЛАТЬ С В U БАЙТОВ ПО АДРЕСУ А 22 Экран номер 22 ( 31.03.86 FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL) : FILL ( A,U,C->) SWAP ?DUP IF >R OVER C! DUP 1+ R> 1- CMOVE EXIT THEN 2DROP ;
В FORTH ИТЭФ слово FILL было примитивом, который частично опирался на код примитива DROP, вот их определения:
HEAD 204Q,'DRO',320Q,DROP ; DROP DRP: ADD SP, 2 NEXT ... 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
Ссылки
- Исходный текст слова FILL в Каллисто Классик 1.0
- См. также слова ERASE и BLANK
- Слово FILL в стандарте ANS Forth (англ.)
- Слово FILL в черновике Forth 200x (англ.)
- Variables, Constants, and Arrays в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |