BLANK: различия между версиями
AtH (обсуждение | вклад) (→Ссылки) |
AtH (обсуждение | вклад) |
||
(не показано 17 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''BLANK''' (заполнить пробелами) — стандартное слово [[Каллисто]]. | '''BLANK''' (заполнить пробелами, читается «блэнк») — стандартное слово [[Каллисто]]. Заполнить массив пробелами. | ||
BLANK ( a u −− ) Опробелить. Записать u пробелов в память, начиная с адреса a. | |||
Слово BLANK записывает n кодов [[пробел]]а (32) в память, начиная с адреса a. | |||
== Ввод слова BLANK == | |||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша В/О|{{Чёрная клавиша|В/О}}]] [[Клавиша -|{{Серая клавиша|−}}]] {{ШГ←}} [[Клавиша 4|{{Серая клавиша|4}}]] [[Клавиша 9|{{Серая клавиша|9}}]] | |||
== BLANK в стандарте ANS Forth == | == BLANK в стандарте ANS Forth == | ||
Строка 10: | Строка 12: | ||
последовательных символьных позициях, начинающихся с c-addr. | последовательных символьных позициях, начинающихся с c-addr. | ||
== История == | |||
Слово BLANK взято из Форта, где получило своё настоящее имя в 1983 году и с тех пор не изменялось, переходя из стандарта в стандарт. | |||
В программах, написанных для Форта-79 и более ранних диалектов, нужно исправить название слова на современное BLANK. | |||
== BLANK в предыдущем стандарте Forth-83 (англ.) == | === BLANK в предыдущем стандарте Forth-83 (англ.) === | ||
BLANK addr u -- 83 | BLANK addr u -- 83 | ||
u bytes of memory beginning at addr are set to the ASCII | u bytes of memory beginning at addr are set to the ASCII | ||
character value for space. No action is taken if u is zero. | character value for space. No action is taken if u is zero. | ||
=== BLANKS в стандарте Forth-79 (англ.) === | |||
== BLANKS в стандарте Forth-79 (англ.) == | |||
BLANKS addr n -- 152 | BLANKS addr n -- 152 | ||
Fill an area of memory over n bytes with the value for ASCII | Fill an area of memory over n bytes with the value for ASCII | ||
Строка 23: | Строка 28: | ||
take no action. | take no action. | ||
=== BLANKS в fig-FORTH Release 1 glossary, май 1979 (англ.) === | |||
== BLANKS в fig-FORTH Release 1 glossary, май 1979 (англ.) == | |||
BLANKS addr count -- | BLANKS addr count -- | ||
Fill an area of memory beginning at addr with blanks. | Fill an area of memory beginning at addr with blanks. | ||
== Реализация == | |||
<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 | |||
2018 JBLANK: ; Обработчик FILL | |||
2019 32 | |||
2020 .DB 59H ; FX>=0 aka пропустить 1 байт | |||
2021 JERASE: CX ; Обработчик ERASE | |||
2022 JJFILL: MB RM3 GOTO JFILL2 | |||
… | |||
2031 ;#BLANK | |||
2032 ; BLANK ( a U −− ) Опробелить. Записать U пробелов в память, начиная с адреса a. | |||
2033 LBLANK: .DB 5 | |||
2034 .TEXT "BLANK" ; ( где сколько −− ) | |||
2035 .DW LERASE | |||
2036 BLANK: .DW JBLANK ; Опробелить строку. | |||
</pre> | |||
Реализация из SP-Forth 4.20: | |||
<pre> | |||
: BLANK ( addr len -- ) \ fill addr for len with spaces (blanks) | |||
BL FILL ; | |||
</pre> | |||
== | === Советская реализация === | ||
Юрий Семёнов приводит следующее | Юрий Семёнов приводит следующее определение BLANK (стр. 27) через [[BL]] и более общее слово [[FILL]]: | ||
: BLANK BL FILL ; | : BLANK BL FILL ; | ||
Описание и определение слова BLANK в ядре ФОРТ-ЕС: | |||
<PRE> | |||
BLANK +A,U-> ЗАСЛАТЬ ПРОБЕЛЫ В U БАЙТОВ ПО АДРЕСУ А 22 | |||
Экран номер 22 | |||
( 31.03.86 FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL) | |||
: BLANK ( A,U-> ) BL FILL ; | |||
</PRE> | |||
В FORTH ИТЭФ слово BLANK называлось BLANKS и было [[примитив]]ом, который опирался на код [[примитив]]а [[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 206Q,'BLANK',323Q,BLANK ; BLANKS | |||
MOV AX, 32 | |||
JMP FLL | |||
</PRE> | |||
== Ссылки == | == Ссылки == | ||
* {{Исходник|BLANK|BLANK}} | |||
* См. слова [[FILL]] [[ERASE]] | * См. слова [[FILL]] [[ERASE]] | ||
* См. также слова [[BL]] [[SPACE]] [[SPACES]] | * См. также слова [[BL]] [[SPACE]] [[SPACES]] | ||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans17.htm#17.6.1.0780 BLANK] в стандарте ANS Forth ''(англ.)'' | * Слово [http://forth.sourceforge.net/standard/dpans/dpans17.htm#17.6.1.0780 BLANK] в стандарте ANS Forth ''(англ.)'' | ||
* Слово [http:// | * Слово [http://forth-standard.org/standard/string/BLANK BLANK] в черновике Forth 200x ''(англ.)'' | ||
* [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/sf10/sf10.html I/O and You] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |||
Строка 48: | Строка 103: | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Примитивы]] | |||
[[Категория:Работа с памятью Каллисто]] | [[Категория:Работа с памятью Каллисто]] | ||
[[Категория: | [[Категория:Стандартные слова]] | ||
[[Категория:1994 STRING]] | |||
[[Категория:2012 STRING]] |
Текущая версия от 17:58, 13 ноября 2017
BLANK (заполнить пробелами, читается «блэнк») — стандартное слово Каллисто. Заполнить массив пробелами.
BLANK ( a u −− ) Опробелить. Записать u пробелов в память, начиная с адреса a.
Слово BLANK записывает n кодов пробела (32) в память, начиная с адреса a.
Ввод слова BLANK[править]
В режиме ЛАТ последовательно нажмите клавиши В/О − ШГ← 4 9
BLANK в стандарте ANS Forth[править]
17.6.1.0780 BLANK STRING ( c-addr u -- ) Если u больше чем нуль, сохраняет символьное значение пробела в u последовательных символьных позициях, начинающихся с c-addr.
История[править]
Слово BLANK взято из Форта, где получило своё настоящее имя в 1983 году и с тех пор не изменялось, переходя из стандарта в стандарт.
В программах, написанных для Форта-79 и более ранних диалектов, нужно исправить название слова на современное BLANK.
BLANK в предыдущем стандарте Forth-83 (англ.)[править]
BLANK addr u -- 83 u bytes of memory beginning at addr are set to the ASCII character value for space. No action is taken if u is zero.
BLANKS в стандарте Forth-79 (англ.)[править]
BLANKS addr n -- 152 Fill an area of memory over n bytes with the value for ASCII blank, starting at addr. If n is less than or equal to zero, take no action.
BLANKS в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
BLANKS addr count -- Fill an area of memory beginning at addr with blanks.
Реализация[править]
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 2018 JBLANK: ; Обработчик FILL 2019 32 2020 .DB 59H ; FX>=0 aka пропустить 1 байт 2021 JERASE: CX ; Обработчик ERASE 2022 JJFILL: MB RM3 GOTO JFILL2 … 2031 ;#BLANK 2032 ; BLANK ( a U −− ) Опробелить. Записать U пробелов в память, начиная с адреса a. 2033 LBLANK: .DB 5 2034 .TEXT "BLANK" ; ( где сколько −− ) 2035 .DW LERASE 2036 BLANK: .DW JBLANK ; Опробелить строку.
Реализация из SP-Forth 4.20:
: BLANK ( addr len -- ) \ fill addr for len with spaces (blanks) BL FILL ;
Советская реализация[править]
Юрий Семёнов приводит следующее определение BLANK (стр. 27) через BL и более общее слово FILL:
: BLANK BL FILL ;
Описание и определение слова BLANK в ядре ФОРТ-ЕС:
BLANK +A,U-> ЗАСЛАТЬ ПРОБЕЛЫ В U БАЙТОВ ПО АДРЕСУ А 22 Экран номер 22 ( 31.03.86 FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL) : BLANK ( A,U-> ) BL FILL ;
В FORTH ИТЭФ слово BLANK называлось BLANKS и было примитивом, который опирался на код примитива 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 206Q,'BLANK',323Q,BLANK ; BLANKS MOV AX, 32 JMP FLL
Ссылки[править]
- Исходный текст слова BLANK в Каллисто Классик 1.0
- См. слова FILL ERASE
- См. также слова BL SPACE SPACES
- Слово BLANK в стандарте ANS Forth (англ.)
- Слово BLANK в черновике Forth 200x (англ.)
- ВВОД-ВЫВОД в книге Л.Броуди «Начальный курс программирования на языке Форт»
- I/O and You в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |