Слово TYPE: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 9 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''TYPE''' (печать, напечатать) — стандартное слово [[Каллисто]].
'''TYPE''' (печать, напечатать) — стандартное слово [[Каллисто]]. Передаёт u [[Знакогенератор|литер]], начиная с адреса a, на [[индикатор]].
  TYPE          ( a u −− )                          Напечатать на индикаторе u литер от адреса a.
  TYPE          ( a u −− )                          Напечатать на индикаторе u литер от адреса a.
[[Стек данных|Стек]] при обращении к TYPE должен содержать адрес, начиная с которого надо начать вывод, и число выводимых символов (последнее лежит наверху [[Стек данных|стека]]).
[[Стек данных|Стек]] при обращении к TYPE должен содержать [[Единое адресное пространство|адрес]], начиная с которого надо начать вывод, и число выводимых символов (последнее лежит наверху [[Стек данных|стека]]).
 
Передаёт u [[Знакогенератор|литер]], начиная с адреса a, на выходное устройство.


== Ввод слова TYPE ==
== Ввод слова TYPE ==
Строка 9: Строка 7:


== TYPE в стандарте ANS Forth ==
== TYPE в стандарте ANS Forth ==
<PRE>
  6.1.2310  TYPE                                                            CORE
  6.1.2310  TYPE                                                            CORE
             ( c-addr u -- )
             ( c-addr u -- )
Строка 23: Строка 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
Строка 36: Строка 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
Строка 43: Строка 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.


== История ==
== Реализация ==
Слово TYPE является одним из наиболее старых и устоявшихся слов Форта.
В [[Каллисто|Каллисто 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
;


TYPE появился в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа и вскоре стал включать код для работы с выводом.
' TYPE1 ' TYPE TC-VECT!
 
</pre>
Слово TYPE появилось, как цикл, вызывающий [[EMIT]] для отображения символов. В [[Каллисто]] TYPE работает быстрее, т.к [[ГРФ|обновляет экран]] после вывода всей строки, а [[EMIT]] — после каждого символа.


== Реализация ==
=== Советская реализация ===
У Баранова-Ноздрунова приводится следующее описание слова TYPE (стр. 34):
У Баранова-Ноздрунова приводится следующее описание слова TYPE (стр. 34):
   : TYPE  ( A,N ---> )    FOR ↑ C@ EMIT 1+ NEXT DROP ;
   : TYPE  ( A,N ---> )    FOR ↑ C@ EMIT 1+ NEXT DROP ;
Строка 93: Строка 131:
[[Категория:Примитивы]]
[[Категория:Примитивы]]
[[Категория:Терминальный ввод/вывод Каллисто]]
[[Категория:Терминальный ввод/вывод Каллисто]]
[[Категория:Стандартные слова]]
[[Категория: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

Ссылки[править]


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.