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

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

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

Текущая версия Ваш текст
Строка 1: Строка 1:
'''↵''' (возврат каретки, стрелка вниз с поворотом влево) — адаптированное слово [[Каллисто]].
'''↵''' (возврат каретки, стрелка вниз с поворотом влево) — стандартное слово [[Каллисто]].
  ↵              ( -- )                          Возврат каретки. Продолжить вывод с начала следующей строки.
  ↵              ( -- )                          Возврат каретки. Продолжить вывод с начала следующей строки.
[[Файл:CRdotS.png|thumb|right|264px|Пример работы слова ↵]]
[[Файл:CRdotS.png|thumb|right|264px|Пример работы слова ↵]]
Строка 12: Строка 12:
             Заставляет последующий вывод появляться в начале следующей строки.
             Заставляет последующий вывод появляться в начале следующей строки.


== История ==
== CR в предыдущем стандарте Forth-83 (англ.) ==
Слово ↵ в Форте называется CR и является одним из наиболее старых и устоявшихся слов Форта.
 
CR появился в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа и вскоре стал включать код для работы с выводом.
 
=== CR в предыдущем стандарте Forth-83 (англ.) ===
       CR          --                            M,79            "c-r"
       CR          --                            M,79            "c-r"
           Displays a carriage-return and line-feed or equivalent
           Displays a carriage-return and line-feed or equivalent
           operation.
           operation.


=== CR в стандарте Forth-79 (англ.) ===
== CR в стандарте Forth-79 (англ.) ==
  CR                                          160              "c-r"
  CR                                          160              "c-r"
     Cause  a carriage-return and line-feed to occur at the current
     Cause  a carriage-return and line-feed to occur at the current
     output device.
     output device.


=== CR в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
== CR в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
  CR                                              L0
  CR                                              L0
         Transmit a carriage return and line feed to the selected output
         Transmit a carriage return and line feed to the selected output
         device.
         device.


== Реализация ==
== История ==
<pre>
Слово CR является одним из наиболее старых и устоявшихся слов Форта.
214 ; Обычно код располагается в теле примитива, но мы хотим использовать 2−х байтовые ПП
215 JCR:            PGSB CHPUTCR GSB CHPUTLF KGOTO9 ; Обработчик CR
216
217 CHPUTLF:        PPRM9000 <−>                    ; Нам важна координата y курсора
218                PPRM rrCHH +                    ; Увеличить на высоту данного шрифта
219                65 FANS − − PX<0 CHPUTSCROLL    ; Прокрутка экрана, если не вмещаемся
220                FANS + <−> PPM9000 RTN          ; Обычный LF вниз на rrCHH строк
221 CHPUTCR:        PPRM9000 Cx PPM9000 RTN        ; CR
222 CHPUTSCROLL:    PPRM rrSCRLN PKM19              ; Прокрутить на то число линий, на которое данный шрифт прокручивается
223                PPRM 9000 <−>                  ; Позиция курсора по y
224                PPRM rrSCRLFIX −                ; Корректировать, ведь прокрутка у МК−161 слишком грубая
225                <−> PPM 9000 RTN                ; Устанавить курсор на новую позицию и выйти
1010 ;#CR
1011 ; &crarr;                ( −− )                              Возврат каретки. Продолжить вывод с начала следующей строки.
1012 LCR:            .DB    1,192
1013                .DW    LCDOT
1014 CR:            .DW    JCR                    ; Ради оптимизации обработчик перенесён поближе к CHPUT
</pre>
Реализация из SP-Forth 4.20:
<pre>
HEX


CREATE LT 0A0D , \ line terminator
CR появился в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа и вскоре стал включать код для работы с выводом.
CREATE LTL 2 ,  \ line terminator length
 
: DOS-LINES ( -- )
  0A0D LT ! 2 LTL !
;
: UNIX-LINES ( -- )
  0A0A LT ! 1 LTL !
;
 
DECIMAL
 
\ Разделитель строк
: EOLN ( -- a u ) LT LTL @ ;
 
UNIX-ENVIRONMENT [IF]
: NATIVE-LINES UNIX-LINES ;
[ELSE]
: NATIVE-LINES DOS-LINES ;
[THEN]
: CR ( -- ) \ 94
\ Перевод строки.
  EOLN TYPE
;
</pre>
 
=== Советская реализация ===
Слово ↵ в ФОРТ-ЕС называлось CR и было [[примитив]]ом. Вот его описание и опубликованная часть определения:
<PRE>
CR        -> ВЫВЕСТИ НА ТЕРМИНАЛ ПЕРЕВОД СТРОКИ                6
 
                    Экран номер 6
( 09.09.86 KEY CR EMIT TYPE (EXPECT/ RBLK MBLK )
(  следующие определения дают только имена процедур)
 
CODE  EMIT ( С-> ВЫВЕСТИ ЛИТЕРУ С КОДОМ С НА ТЕРМИНАЛ) END-CODE
</PRE>
 
В FORTH ИТЭФ слово ↵ также называлось CR
 
Ещё в FORTH ИТЭФ был [[примитив]] RC для вывода [[CR]] без [[LF]] через [[примитив]] [[EMIT]]
 
Вот эти определения:
<PRE>
            HEAD    204Q,'EMI',324Q,EMIT,$EMIT          ; EMIT
  $EMIT    LABEL  FAR
            POP  AX
  ENT$:    PUSH  AX
            MOV  AH, 15
            INT  16
            POP  AX
            MOV  AH, 14
            JMP  $EM
  PRINT:    MOV  DX, 0  ; Установка номера принтера
            SUB  AH, AH
            INT  23
            TES  AH, 51Q
            JE    OK
  ERR4:    MOV  AL, AH
            ADD  AL, 60Q
            MOV  AH, 14
            INT  16
            MOV  DX, OFFSET ERMES4
            MOV  AH, 9H
            INT  21H
            JMP  TYPE$
  ERMES4:  DB  ' PRINTER ERROR $'
 
            HEAD    202Q,'R',303Q,RC                    ; RC
            MOV  AX, 13
            JMP  ENT$
            ...
            HEAD    202Q,'C',322Q,CR,$COL                ; CR
            DW LIT,15Q,EMIT,LIT,12Q,EMIT,SEMI
</PRE>
Метки $EM и OK находятся в определении [[EMI]]


== Ссылки ==
== Ссылки ==
* {{Исходник|CR|↵}}
* См. слова [[EMIT]] и [[Слово ↖|↖]]
* См. слова [[EMIT]], [[Слово ↖|↖]] и [[AT]]
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0990 CR (c-r)] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0990 CR (c-r)] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth-standard.org/standard/core/CR CR (c-r)] в черновике Forth 200x ''(англ.)''
* Слово [http://www.forth200x.org/documents/html3/core/CR.html CR (c-r)] в черновике Forth 200x ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\01.OSNOWY%20FORTA ОСНОВЫ ФОРТА] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://www.forth.com/starting-forth/sf1/sf1.html Fundamental Forth] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''




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

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

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