Слово ↵
↵ (возврат каретки, стрелка вниз с поворотом влево) — адаптированное слово Каллисто.
↵ ( -- ) Возврат каретки. Продолжить вывод с начала следующей строки.
Вывести на терминал возврат каретки и перевод строки. Последующий вывод появится в начале следующей строки.
Ввод слова ↵[править]
В режиме 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 (англ.)
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |