Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''↵''' (возврат каретки, стрелка вниз с поворотом влево) — адаптированное слово [[Каллисто]]. | | '''↵''' — стандартное слово [[Каллисто]]. |
| ↵ ( -- ) Возврат каретки. Продолжить вывод с начала следующей строки.
| | |
| [[Файл:CRdotS.png|thumb|right|264px|Пример работы слова ↵]]
| | Вывести на терминал [[возврат каретки]] и [[перевод строки]]. |
| Вывести на терминал [[возврат каретки]] и [[перевод строки]]. Последующий вывод появится в начале следующей строки. | |
|
| |
|
| == Ввод слова ↵ ==
| |
| В [[Режим NUM|режиме NUM]] последовательно нажмите две клавиши [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша В↑|{{Серая клавиша|В↑}}]]
| |
|
| |
|
| == CR в стандарте ANS Forth == | | == CR в стандарте ANS Forth == |
Строка 12: |
Строка 9: |
| Заставляет последующий вывод появляться в начале следующей строки. | | Заставляет последующий вывод появляться в начале следующей строки. |
|
| |
|
| == История ==
| |
| Слово ↵ в Форте называется CR и является одним из наиболее старых и устоявшихся слов Форта.
| |
|
| |
| CR появился в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа и вскоре стал включать код для работы с выводом.
| |
|
| |
| === CR в предыдущем стандарте Forth-83 (англ.) ===
| |
| CR -- M,79 "c-r"
| |
| Displays a carriage-return and line-feed or equivalent
| |
| operation.
| |
|
| |
| === CR в стандарте Forth-79 (англ.) ===
| |
| CR 160 "c-r"
| |
| Cause a carriage-return and line-feed to occur at the current
| |
| output device.
| |
|
| |
| === CR в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
| |
| CR L0
| |
| Transmit a carriage return and line feed to the selected output
| |
| device.
| |
|
| |
| == Реализация ==
| |
| <pre>
| |
| 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 ; ↵ ( −− ) Возврат каретки. Продолжить вывод с начала следующей строки.
| |
| 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
| |
| 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|↵}} | | * [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0990 Слово CR (c-r) в стандарте ANS Forth] ''(англ.)'' |
| * См. слова [[EMIT]], [[Слово ↖|↖]] и [[AT]]
| | * [http://www.forth200x.org/documents/html/core.html#core:CR Слово CR (c-r) в черновике Forth 200x] ''(англ.)'' |
| * Слово [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://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] ''(англ.)''
| |
|
| |
|
|
| |
|
| | {{нет иллюстраций}} |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Примитивы]]
| |
| [[Категория:Терминальный ввод/вывод Каллисто]] | | [[Категория:Терминальный ввод/вывод Каллисто]] |
| [[Категория:Адаптированные слова]]
| |