Слово TYPE: различия между версиями
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
(не показана 31 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
'''TYPE''' — стандартное слово [[Каллисто]]. | '''TYPE''' (печать, напечатать) — стандартное слово [[Каллисто]]. Передаёт u [[Знакогенератор|литер]], начиная с адреса a, на [[индикатор]]. | ||
TYPE ( a u −− ) Напечатать на индикаторе u литер от адреса a. | |||
Передаёт u [[Знакогенератор| | [[Стек данных|Стек]] при обращении к TYPE должен содержать [[Единое адресное пространство|адрес]], начиная с которого надо начать вывод, и число выводимых символов (последнее лежит наверху [[Стек данных|стека]]). | ||
== Ввод слова TYPE == | |||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите четыре клавиши [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ,|{{Серая клавиша|1=<span style="position:relative;bottom:3px"> , </span>}}]] [[Клавиша 6|{{Серая клавиша|6}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | |||
== TYPE в стандарте ANS Forth == | == TYPE в стандарте ANS Forth == | ||
<PRE> | |||
6.1.2310 TYPE CORE | 6.1.2310 TYPE CORE | ||
( c-addr u -- ) | ( c-addr u -- ) | ||
Строка 19: | Строка 22: | ||
См.: 6.1.1320 EMIT. | См.: 6.1.1320 EMIT. | ||
</PRE> | |||
== История == | |||
Слово TYPE является одним из наиболее старых и устоявшихся слов Форта. | |||
== TYPE в предыдущем стандарте Forth-83 (англ.) == | TYPE появился в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа и вскоре стал включать код для работы с выводом. | ||
Слово TYPE появилось, как цикл, вызывающий [[EMIT]] для отображения символов. В [[Каллисто]] TYPE работает быстрее, т.к [[ГРФ|обновляет экран]] после вывода всей строки, а [[EMIT]] — после каждого символа. | |||
=== TYPE в предыдущем стандарте Forth-83 (англ.) === | |||
<PRE> | |||
TYPE addr +n -- M,79 | TYPE addr +n -- M,79 | ||
+n characters are displayed from memory beginning with the | +n characters are displayed from memory beginning with the | ||
Строка 33: | Строка 44: | ||
devices of control characters, the use of ASCII control | devices of control characters, the use of ASCII control | ||
characters is an environmental dependency. | characters is an environmental dependency. | ||
</PRE> | |||
=== TYPE в стандарте Forth-79 (англ.) === | |||
== TYPE в стандарте Forth-79 (англ.) == | |||
TYPE addr n -- 222 | TYPE addr n -- 222 | ||
Transmit n characters beginning at address to the current | Transmit n characters beginning at address to the current | ||
Строка 41: | Строка 52: | ||
to zero. | to zero. | ||
=== TYPE в fig-FORTH Release 1 glossary, май 1979 (англ.) === | |||
== TYPE в fig-FORTH Release 1 glossary, май 1979 (англ.) == | |||
TYPE addr count --- L0 | TYPE addr count --- L0 | ||
Transmit count characters from addr to the selected output device. | Transmit count characters from addr to the selected output device. | ||
== Реализация == | |||
В [[Каллисто|Каллисто 1.0]] слово TYPE может выводить символы как из [[Память двоичных данных|области данных]], так и из [[Память программ|памяти программ]]: | |||
<pre> | |||
604 ;#TYPE | |||
605 ; TYPE ( a u −− ) Напечатать на индикаторе u литер от адреса a. | |||
606 ; Передать u литер, начиная с адреса a на индикатор. | |||
607 ; Подразумеваем, что строка не пересекает границу областей памяти. | |||
608 LTYPE: .DB 4 | |||
609 .TEXT "TYPE" | |||
610 .DW LLIT | |||
611 TYPE: .DW JTYPE ; Примитив | |||
612 JTYPE: RM3 M8 1 + MB 1 + M3 | |||
613 KRM8 M0 +/− KX<09 ; R0 := длина | |||
614 KRMB MB 1 EE 4 − FX<0 TYPER | |||
615 RMB | |||
616 TYPEP: KPRGM PGSB CHPUT ; вывести очередную литеру из памяти программ | |||
617 RMB 1 + MB FL0 TYPEP | |||
618 KGRPH KGOTO9 ; NEXT | |||
619 TYPER: 1 − M5 | |||
620 TYPERL: KRM5 PGSB CHPUT ; вывести очередную литеру из регистровой памяти | |||
621 FL0 TYPERL | |||
622 KGRPH KGOTO9 ; NEXT | |||
</pre> | |||
Реализация из SP-Forth 4.20: | |||
<pre> | |||
: TYPE1 ( c-addr u -- ) \ 94 | |||
\ Если u>0 - вывести строку символов, заданную c-addr и u. | |||
\ Программы, использующие управляющие символы, зависят от окружения. | |||
ANSI><OEM | |||
2DUP TO-LOG | |||
H-STDOUT DUP 0 > IF WRITE-FILE THROW ELSE 2DROP DROP THEN | |||
; | |||
' TYPE1 ' TYPE TC-VECT! | |||
</pre> | |||
=== Советская реализация === | |||
У Баранова-Ноздрунова приводится следующее описание слова TYPE (стр. 34): | |||
: TYPE ( A,N ---> ) FOR ↑ C@ EMIT 1+ NEXT DROP ; | |||
Слово TYPE в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и опубликованная часть определения: | |||
<PRE> | |||
TYPE A,+N-> НАПЕЧАТАТЬ НА ТЕРМИНАЛЕ +N ЛИТЕР 6 | |||
ОТ АДРЕСА А | |||
Экран номер 6 | |||
( 09.09.86 KEY CR EMIT TYPE (EXPECT/ RBLK MBLK ) | |||
( следующие определения дают только имена процедур) | |||
CODE TYPE ( A,N-> ВЫВЕСТИ HА TEPМИНАЛ N ЛИТЕР ПО АДРЕСУ A) END-CODE | |||
</PRE> | |||
Определение слова TYPE в FORTH ИТЭФ: | |||
<PRE> | |||
HEAD 204Q,'TYP',305Q,$TYPE,$COL ; TYPE | |||
DW DDUP,ZBRAN,TC1-$,ZERO,XDO | |||
TC0: DW DUBL,I,PLUS,CAT,LIT,177Q,$AND | |||
DW ONE,EMI$,XLOOP,TC0-$ | |||
TC1: DW DROP,SEMI | |||
</PRE> | |||
== Ссылки == | == Ссылки == | ||
* [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2310 | * {{Исходник|TYPE|TYPE}} | ||
* [http:// | * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2310 TYPE] в стандарте ANS Forth ''(англ.)'' | ||
* Слово [http://forth-standard.org/standard/core/TYPE TYPE] в черновике Forth 200x ''(англ.)'' | |||
* См. также стандартное слово [[TYPE1]] | * См. также стандартное слово [[TYPE1]] | ||
* [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/sf7/sf7.html A Number of Kinds of Numbers] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |||
* [http://www.forth.com/starting-forth/sf10/sf10.html I/O and You] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |||
Строка 56: | Строка 129: | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Примитивы]] | |||
[[Категория:Терминальный ввод/вывод Каллисто]] | [[Категория:Терминальный ввод/вывод Каллисто]] | ||
[[Категория:Стандартные слова]] | |||
[[Категория:1994 CORE]] | |||
[[Категория:2012 CORE]] |
Текущая версия от 17:58, 10 ноября 2017
TYPE (печать, напечатать) — стандартное слово Каллисто. Передаёт u литер, начиная с адреса a, на индикатор.
TYPE ( a u −− ) Напечатать на индикаторе u литер от адреса a.
Стек при обращении к TYPE должен содержать адрес, начиная с которого надо начать вывод, и число выводимых символов (последнее лежит наверху стека).
Ввод слова TYPE[править]
В режиме ЛАТ последовательно нажмите четыре клавиши 2 , 6 ИП
TYPE в стандарте ANS Forth[править]
6.1.2310 TYPE CORE ( c-addr u -- ) Если u больше нуля, отображает символьную строку, определенную c- addr и u. Когда просматривается символ, чьи символом-определенные биты имеют значение между hex 20 и 7E включительно, отображается соответствующий стандартный символ, определенный в 3.1.2.1 Графические символы. Поскольку различные устройства вывода могут реагировать по-разному на управляющие символы, программы, использующие управляющие символы для выполнения специфических функций, имеют зависимость от окружения. См.: 6.1.1320 EMIT.
История[править]
Слово TYPE является одним из наиболее старых и устоявшихся слов Форта.
TYPE появился в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа и вскоре стал включать код для работы с выводом.
Слово TYPE появилось, как цикл, вызывающий EMIT для отображения символов. В Каллисто TYPE работает быстрее, т.к обновляет экран после вывода всей строки, а EMIT — после каждого символа.
TYPE в предыдущем стандарте Forth-83 (англ.)[править]
TYPE addr +n -- M,79 +n characters are displayed from memory beginning with the character at addr and continuing through consecutive addresses. Nothing is displayed if +n is zero. See: "9.5.4 TYPE" 9.5.4 TYPE Because of the potential non-transportable action by terminal devices of control characters, the use of ASCII control characters is an environmental dependency.
TYPE в стандарте Forth-79 (англ.)[править]
TYPE addr n -- 222 Transmit n characters beginning at address to the current output device. No action takes place for n less than or equal to zero.
TYPE в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
TYPE addr count --- L0 Transmit count characters from addr to the selected output device.
Реализация[править]
В Каллисто 1.0 слово TYPE может выводить символы как из области данных, так и из памяти программ:
604 ;#TYPE 605 ; TYPE ( a u −− ) Напечатать на индикаторе u литер от адреса a. 606 ; Передать u литер, начиная с адреса a на индикатор. 607 ; Подразумеваем, что строка не пересекает границу областей памяти. 608 LTYPE: .DB 4 609 .TEXT "TYPE" 610 .DW LLIT 611 TYPE: .DW JTYPE ; Примитив 612 JTYPE: RM3 M8 1 + MB 1 + M3 613 KRM8 M0 +/− KX<09 ; R0 := длина 614 KRMB MB 1 EE 4 − FX<0 TYPER 615 RMB 616 TYPEP: KPRGM PGSB CHPUT ; вывести очередную литеру из памяти программ 617 RMB 1 + MB FL0 TYPEP 618 KGRPH KGOTO9 ; NEXT 619 TYPER: 1 − M5 620 TYPERL: KRM5 PGSB CHPUT ; вывести очередную литеру из регистровой памяти 621 FL0 TYPERL 622 KGRPH KGOTO9 ; NEXT
Реализация из SP-Forth 4.20:
: TYPE1 ( c-addr u -- ) \ 94 \ Если u>0 - вывести строку символов, заданную c-addr и u. \ Программы, использующие управляющие символы, зависят от окружения. ANSI><OEM 2DUP TO-LOG H-STDOUT DUP 0 > IF WRITE-FILE THROW ELSE 2DROP DROP THEN ; ' TYPE1 ' TYPE TC-VECT!
Советская реализация[править]
У Баранова-Ноздрунова приводится следующее описание слова TYPE (стр. 34):
: TYPE ( A,N ---> ) FOR ↑ C@ EMIT 1+ NEXT DROP ;
Слово TYPE в ФОРТ-ЕС было примитивом. Вот его описание и опубликованная часть определения:
TYPE A,+N-> НАПЕЧАТАТЬ НА ТЕРМИНАЛЕ +N ЛИТЕР 6 ОТ АДРЕСА А Экран номер 6 ( 09.09.86 KEY CR EMIT TYPE (EXPECT/ RBLK MBLK ) ( следующие определения дают только имена процедур) CODE TYPE ( A,N-> ВЫВЕСТИ HА TEPМИНАЛ N ЛИТЕР ПО АДРЕСУ A) END-CODE
Определение слова TYPE в FORTH ИТЭФ:
HEAD 204Q,'TYP',305Q,$TYPE,$COL ; TYPE DW DDUP,ZBRAN,TC1-$,ZERO,XDO TC0: DW DUBL,I,PLUS,CAT,LIT,177Q,$AND DW ONE,EMI$,XLOOP,TC0-$ TC1: DW DROP,SEMI
Ссылки[править]
- Исходный текст слова TYPE в Каллисто Классик 1.0
- Слово TYPE в стандарте ANS Forth (англ.)
- Слово TYPE в черновике Forth 200x (англ.)
- См. также стандартное слово TYPE1
- ВВОД-ВЫВОД в книге Л.Броуди «Начальный курс программирования на языке Форт»
- A Number of Kinds of Numbers в книге Leo Brodie Starting Forth (англ.)
- I/O and You в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |