Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''TYPE''' (печать, напечатать) — стандартное слово [[Каллисто]]. Передаёт u [[Знакогенератор|литер]], начиная с адреса a, на [[индикатор]]. | | '''TYPE''' (напечатать) — стандартное слово [[Каллисто]]. |
| TYPE ( a u −− ) Напечатать на индикаторе u литер от адреса a.
| | |
| [[Стек данных|Стек]] при обращении к TYPE должен содержать [[Единое адресное пространство|адрес]], начиная с которого надо начать вывод, и число выводимых символов (последнее лежит наверху [[Стек данных|стека]]). | | [[Стек данных|Стек]] при обращении к TYPE должен содержать адрес, начиная с которого надо начать вывод, и число выводимых символов (последнее лежит наверху [[Стек данных|стека]]). |
| | |
| | Передаёт u [[Знакогенератор|символов]] начиная с адреса a на выходное устройство. |
|
| |
|
| == Ввод слова 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 -- ) |
Строка 22: |
Строка 21: |
|
| |
|
| См.: 6.1.1320 EMIT. | | См.: 6.1.1320 EMIT. |
| </PRE>
| |
|
| |
|
| == История ==
| |
| Слово TYPE является одним из наиболее старых и устоявшихся слов Форта.
| |
|
| |
|
| TYPE появился в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа и вскоре стал включать код для работы с выводом.
| | == TYPE в предыдущем стандарте Forth-83 (англ.) == |
| | |
| Слово 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 |
Строка 44: |
Строка 35: |
| 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 |
Строка 52: |
Строка 43: |
| 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 == |
| У Баранова-Ноздрунова приводится следующее описание слова TYPE (стр. 34): | | У Баранова-Ноздрунова приводится следующее описание слова TYPE (стр. 34): |
| : TYPE ( A,N ---> ) FOR ↑ C@ EMIT 1+ NEXT DROP ; | | : 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>
| |
|
| |
|
| == Ссылки == | | == Ссылки == |
| * {{Исходник|TYPE|TYPE}} | | * [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2310 Слово TYPE в стандарте ANS Forth] ''(англ.)'' |
| * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2310 TYPE] в стандарте ANS Forth ''(англ.)''
| | * [http://www.forth200x.org/documents/html/core.html#core:TYPE Слово TYPE в черновике Forth 200x] ''(англ.)'' |
| * Слово [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] ''(англ.)''
| |
|
| |
|
|
| |
|
Строка 129: |
Строка 63: |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Примитивы]]
| |
| [[Категория:Терминальный ввод/вывод Каллисто]] | | [[Категория:Терминальный ввод/вывод Каллисто]] |
| [[Категория:Стандартные слова]] | | [[Категория:Слова Каллисто без стековых диаграмм]] |
| [[Категория:1994 CORE]]
| |
| [[Категория:2012 CORE]]
| |