Слово ↵: различия между версиями
AtH (обсуждение | вклад) (→Ссылки) |
AtH (обсуждение | вклад) |
||
(не показано 36 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''↵''' (возврат каретки) — | '''↵''' (возврат каретки, стрелка вниз с поворотом влево) — адаптированное слово [[Каллисто]]. | ||
↵ ( -- ) Возврат каретки. Продолжить вывод с начала следующей строки. | |||
Вывести на терминал [[возврат каретки]] и [[перевод строки]]. | [[Файл:CRdotS.png|thumb|right|264px|Пример работы слова ↵]] | ||
Вывести на терминал [[возврат каретки]] и [[перевод строки]]. Последующий вывод появится в начале следующей строки. | |||
== Ввод слова ↵ == | == Ввод слова ↵ == | ||
Строка 11: | Строка 12: | ||
Заставляет последующий вывод появляться в начале следующей строки. | Заставляет последующий вывод появляться в начале следующей строки. | ||
== История == | |||
Слово ↵ в Форте называется CR и является одним из наиболее старых и устоявшихся слов Форта. | |||
CR появился в Форте в 1965 году, когда Чак Мур подрабатывал наёмным программистом в городе Нью-Йорк. Тогда появились миникомпьютеры, а с ними и терминалы. Интерпретатор был идеален для ввода с телетайпа и вскоре стал включать код для работы с выводом. | |||
== CR в предыдущем стандарте Forth-83 (англ.) == | === 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> | |||
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|↵}} | |||
* См. слова [[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:// | * Слово [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] ''(англ.)'' | |||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Примитивы]] | |||
[[Категория:Терминальный ввод/вывод Каллисто]] | [[Категория:Терминальный ввод/вывод Каллисто]] | ||
[[Категория: | [[Категория:Адаптированные слова]] |
Текущая версия от 21:55, 13 ноября 2017
↵ (возврат каретки, стрелка вниз с поворотом влево) — адаптированное слово Каллисто.
↵ ( -- ) Возврат каретки. Продолжить вывод с начала следующей строки.
Вывести на терминал возврат каретки и перевод строки. Последующий вывод появится в начале следующей строки.
Ввод слова ↵[править]
В режиме NUM последовательно нажмите две клавиши F В↑
CR в стандарте ANS Forth[править]
6.1.0990 CR "c-r" CORE ( -- ) Заставляет последующий вывод появляться в начале следующей строки.
История[править]
Слово ↵ в Форте называется 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.
Реализация[править]
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
Реализация из SP-Forth 4.20:
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 ;
Советская реализация[править]
Слово ↵ в ФОРТ-ЕС называлось CR и было примитивом. Вот его описание и опубликованная часть определения:
CR -> ВЫВЕСТИ НА ТЕРМИНАЛ ПЕРЕВОД СТРОКИ 6 Экран номер 6 ( 09.09.86 KEY CR EMIT TYPE (EXPECT/ RBLK MBLK ) ( следующие определения дают только имена процедур) CODE EMIT ( С-> ВЫВЕСТИ ЛИТЕРУ С КОДОМ С НА ТЕРМИНАЛ) END-CODE
В FORTH ИТЭФ слово ↵ также называлось CR
Ещё в FORTH ИТЭФ был примитив RC для вывода CR без LF через примитив EMIT
Вот эти определения:
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
Метки $EM и OK находятся в определении EMI
Ссылки[править]
- Исходный текст слова ↵ в Каллисто Классик 1.0
- См. слова EMIT, ↖ и AT
- Слово CR (c-r) в стандарте ANS Forth (англ.)
- Слово CR (c-r) в черновике Forth 200x (англ.)
- ОСНОВЫ ФОРТА в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Fundamental Forth в книге Leo Brodie Starting Forth (англ.)
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |