Редактирование: Слово TYPE

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 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]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)