QUIT: различия между версиями
AtH (обсуждение | вклад) (Новая страница: «'''QUIT''' — стандартное слово Каллисто. {{нет иллюстраций}} {{заготовка}} Категория:Слова…») |
AtH (обсуждение | вклад) |
||
(не показаны 43 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
'''QUIT''' — стандартное слово [[Каллисто]]. | '''QUIT''' (уйти, покидать) — стандартное слово [[Каллисто]]. | ||
QUIT ( −− ) Передать управление на пульт. Ждёт команд молча, без приглашения. | |||
Очищает [[Стек возвратов Каллисто|стек возвратов]], устанавливает [[Слово [|состояние исполнения]] и возвращает управление на пульт [[Каллисто]] ([[BLK]]=0). Не выдаётся никаких сообщений. | |||
«В сущности, пока Форт работает, он исполняет команду QUIT. QUIT — это резидентный монитор системы Форт.» © Юрий Семёнов (стр. 56) | |||
== Ввод слова QUIT == | |||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите четыре белые клавиши [[Клавиша +|{{Серая клавиша|+}}]] [[Клавиша 3|{{Серая клавиша|3}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 2|{{Серая клавиша|2}}]] | |||
== QUIT в стандарте ANS Forth == | |||
<pre> | |||
6.1.2050 QUIT CORE | |||
( -- ) ( R: i*x -- ) | |||
Освобождает стек возвратов, сохраняет нуль в SOURCE-ID, если он | |||
присутствует, делает пользовательское устройство ввода входным | |||
источником, и вводит состояние интерпретации. Не отображает | |||
сообщение. Повторяет следующее: | |||
- Принимает строку из входного источника во входной буфер, обнуляет | |||
>IN, и интерпретирует. | |||
- Отображает определенную реализацией системную подсказку, если в | |||
состоянии интерпретации вся обработка была закончена, и нет | |||
неопределенной ситуации. | |||
См.: 3.4 Интерпретатор текста Forth. | |||
</pre> | |||
== История == | |||
Одна из отличительных черт Форта появилась в 1966 году, когда Чак Мур, будучи гуру MCP на 5500, работал в Realtime Systems, Inc (RSI). Это правило, что Форт подтверждает каждую строку ввода добавлением OK по завершению интерпретации. На RSI OK был на другой строчке, например: | |||
56 INSERT ALGOL IS VERY ADAPTABLE | |||
OK | |||
В опубликованной реализации Баранова-Ноздрунова слово QUIT называется ФОРТ-СИСТЕМА | |||
В редакторе EDT для Форта тоже есть слово QUIT — хотя его имя идентично слову QUIT из базового словаря Форта, их функции абсолютно различны. | |||
=== QUIT в предыдущем стандарте Forth-83 (англ.) === | |||
QUIT -- 79 | |||
Clears the return stack, sets interpret state, accepts new | |||
input from the current input device, and begins text | |||
interpretation. No message is displayed. | |||
=== QUIT в стандарте Forth-79 (англ.) === | |||
QUIT 211 | |||
Clear the return stack, setting execution mode, and return | |||
control to the terminal. No message is given. | |||
=== QUIT в fig-FORTH Release 1 glossary, май 1979 (англ.) === | |||
QUIT | |||
Clear the return stack, stop compilation, and return control to the | |||
operators terminal. No message is given. | |||
== Реализация == | |||
<pre> | |||
3427 ;#QUIT | |||
3428 ; QUIT ( −− ) Передать управление на пульт. Ждать команд молча, без приглашения. | |||
3429 ; Очистить стек возвратов, устанавить состояние исполнения и возвратить управление на пульт Каллисто. | |||
3430 ; Не выдаётся никаких сообщений. Резидентный монитор среды Каллисто. | |||
3431 LQUIT: .DB 4 | |||
3432 .TEXT "QUIT" | |||
3433 .DW LPAREN | |||
3434 QUIT: .DW CALL | |||
3435 RQUIT: .DW BLK,ZSTORE, LBRAC | |||
3436 QUI: .DW RPSTO, CR, QUERY, INTER, STATE,UAT | |||
3437 .DW ZEQU, ZBRAN,QUI, PDOTQ | |||
3438 .DB 3 | |||
3439 .TEXT " ok" ; Это приглашение не будет видно при 2 FONT! | |||
3440 .DW BRAN,QUI | |||
</pre> | |||
Реализация из SP-Forth 4.20: | |||
<pre> | |||
: MAIN1 ( -- ) | |||
BEGIN | |||
REFILL | |||
WHILE | |||
INTERPRET OK | |||
REPEAT BYE | |||
; | |||
: QUIT ( -- ) ( R: i*x ) \ CORE 94 | |||
\ Сбросить стек возвратов, записать ноль в SOURCE-ID. | |||
\ Установить стандартный входной поток и состояние интерпретации. | |||
\ Не выводить сообщений. Повторять следующее: | |||
\ - Принять строку из входного потока во входной буфер, обнулить >IN | |||
\ и интепретировать. | |||
\ - Вывести зависящее от реализации системное приглашение, если | |||
\ система находится в состоянии интерпретации, все процессы завершены, | |||
\ и нет неоднозначных ситуаций. | |||
BEGIN | |||
CONSOLE-HANDLES | |||
0 TO SOURCE-ID | |||
0 TO SOURCE-ID-XT | |||
[COMPILE] [ | |||
['] MAIN1 CATCH | |||
['] ERROR CATCH DROP | |||
( R0 @ RP! \ стек не сбрасываем, т.к. это за нас делает CATCH :) | |||
S0 @ SP! \ стек сбрасываем, т.к. OPTIONS может оставить значения :( | |||
AGAIN | |||
; | |||
</pre> | |||
=== Советская реализация === | |||
Юрий Семёнов приводит следующее определение слова QUIT через [[QUERY]] и [[INTERPRET]] (стр. 56): | |||
: QUIT 0 BLK ! ( переход в пультовый режим) | |||
[ ( установка режима исполнения) | |||
BEGIN ( начало бесконечного цикла ожидания) | |||
!RP ( установка указателя возвратного стека в | |||
начальное состояние) | |||
↵ QUERY ( приглашение ввести команду с терминала) | |||
INTERPRET ( интерпретация и исполнение команды) | |||
STATE @ 0= IF ." OK" ( сообщение о благополучном | |||
выполнении в режиме "исполнения") | |||
THEN 0 ( засылка 0 для поддержания цикла) | |||
UNTIL ; | |||
Оно же, с использованием слова [[0!]] и цикла [[BEGIN]]…[[AGAIN]]: | |||
: QUIT BLK 0! ( переход в пультовый режим) | |||
[ ( установка режима исполнения) | |||
BEGIN ( начало бесконечного цикла ожидания) | |||
!RP ( установка указателя возвратного стека в | |||
начальное состояние) | |||
↵ QUERY ( приглашение ввести команду с терминала) | |||
INTERPRET ( интерпретация и исполнение команды) | |||
STATE @ 0= IF ." OK" ( сообщение о благополучном | |||
выполнении в режиме "исполнения") | |||
THEN | |||
AGAIN ; | |||
У Баранова-Ноздрунова определение слова QUIT выглядит так (стр. 81): | |||
: QUIT ( ---> ) | |||
BEGIN ↵ ." >" ( Приглашение к вводу) | |||
TIB 80 EXPECT ( Ввести текст с терминала) | |||
SPAN @ #TIB ! ( Установить его длину) | |||
0 TIB #TIB @ + C! ( Установить ограничитель) | |||
0 >IN ! 0 BLK ! ( Установить входной поток) | |||
INTERPRET ( Интерпретировать введённый текст) | |||
STATE @ 0= IF ." OK" THEN ( Подтверждение) | |||
AGAIN ; | |||
В ядре ФОРТ-ЕС слово QUIT называлось ФОРТ-СИСТЕМА | |||
Вот его описание и определение: | |||
<PRE> | |||
ФОРТ-СИСТЕМА * -> ТЕКСТОВЫЙ ИНТЕРПРЕТАТОР ФОРТ-СИСТЕМЫ 40 | |||
Экран номер 40 | |||
( 31.03.84 EXPECT OUERY INTERPRET ФОРТ-СИСТЕМА X ) | |||
: ФОРТ-СИСТЕМА ( ->) BEGIN QUERY INTERPRET AGAIN ; | |||
</PRE> | |||
Определение слова QUIT в FORTH ИТЭФ: | |||
<PRE> | |||
HEAD 204Q,'QUI',324Q,QUIT,$COL ; QUIT | |||
DW ZERO,BLK,STORE,LBRAC | |||
QUI: DW RPSTO,CR,QUERY,INTER,STATE,AT | |||
DW ZEQU,ZBRAN,QUI-$,PDOTQ | |||
DB 3,' OK' | |||
DW BRAN,QUI-$ | |||
</PRE> | |||
== Ссылки == | |||
* {{Исходник|QUIT|QUIT}} | |||
* См. слова [[ABORT]], [[WARM]], [[COLD]] и [[BYE]] | |||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2050 QUIT] в стандарте ANS Forth ''(англ.)'' | |||
* Слово [http://forth-standard.org/standard/core/QUIT QUIT] в черновике Forth 200x ''(англ.)'' | |||
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\09.FUNKZIONIROWANIE%20FORT-SISTEMY ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»] | |||
* [http://www.forth.com/starting-forth/sf6/sf6.html Throw It For a Loop] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |||
* [http://www.forth.com/starting-forth/sf9/sf9.html Under the Hood] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |||
* [http://www.forth.com/starting-forth/sf10/sf10.html I/O and You] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |||
{{нет иллюстраций}} | {{нет иллюстраций}} | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Слова высокого уровня]] | |||
[[Категория:Стандартные слова]] | |||
[[Категория:1994 CORE]] | |||
[[Категория:2012 CORE]] |
Текущая версия от 20:49, 10 ноября 2017
QUIT (уйти, покидать) — стандартное слово Каллисто.
QUIT ( −− ) Передать управление на пульт. Ждёт команд молча, без приглашения.
Очищает стек возвратов, устанавливает состояние исполнения и возвращает управление на пульт Каллисто (BLK=0). Не выдаётся никаких сообщений.
«В сущности, пока Форт работает, он исполняет команду QUIT. QUIT — это резидентный монитор системы Форт.» © Юрий Семёнов (стр. 56)
Ввод слова QUIT[править]
В режиме ЛАТ последовательно нажмите четыре белые клавиши + 3 7 2
QUIT в стандарте ANS Forth[править]
6.1.2050 QUIT CORE ( -- ) ( R: i*x -- ) Освобождает стек возвратов, сохраняет нуль в SOURCE-ID, если он присутствует, делает пользовательское устройство ввода входным источником, и вводит состояние интерпретации. Не отображает сообщение. Повторяет следующее: - Принимает строку из входного источника во входной буфер, обнуляет >IN, и интерпретирует. - Отображает определенную реализацией системную подсказку, если в состоянии интерпретации вся обработка была закончена, и нет неопределенной ситуации. См.: 3.4 Интерпретатор текста Forth.
История[править]
Одна из отличительных черт Форта появилась в 1966 году, когда Чак Мур, будучи гуру MCP на 5500, работал в Realtime Systems, Inc (RSI). Это правило, что Форт подтверждает каждую строку ввода добавлением OK по завершению интерпретации. На RSI OK был на другой строчке, например:
56 INSERT ALGOL IS VERY ADAPTABLE OK
В опубликованной реализации Баранова-Ноздрунова слово QUIT называется ФОРТ-СИСТЕМА
В редакторе EDT для Форта тоже есть слово QUIT — хотя его имя идентично слову QUIT из базового словаря Форта, их функции абсолютно различны.
QUIT в предыдущем стандарте Forth-83 (англ.)[править]
QUIT -- 79 Clears the return stack, sets interpret state, accepts new input from the current input device, and begins text interpretation. No message is displayed.
QUIT в стандарте Forth-79 (англ.)[править]
QUIT 211 Clear the return stack, setting execution mode, and return control to the terminal. No message is given.
QUIT в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
QUIT Clear the return stack, stop compilation, and return control to the operators terminal. No message is given.
Реализация[править]
3427 ;#QUIT 3428 ; QUIT ( −− ) Передать управление на пульт. Ждать команд молча, без приглашения. 3429 ; Очистить стек возвратов, устанавить состояние исполнения и возвратить управление на пульт Каллисто. 3430 ; Не выдаётся никаких сообщений. Резидентный монитор среды Каллисто. 3431 LQUIT: .DB 4 3432 .TEXT "QUIT" 3433 .DW LPAREN 3434 QUIT: .DW CALL 3435 RQUIT: .DW BLK,ZSTORE, LBRAC 3436 QUI: .DW RPSTO, CR, QUERY, INTER, STATE,UAT 3437 .DW ZEQU, ZBRAN,QUI, PDOTQ 3438 .DB 3 3439 .TEXT " ok" ; Это приглашение не будет видно при 2 FONT! 3440 .DW BRAN,QUI
Реализация из SP-Forth 4.20:
: MAIN1 ( -- ) BEGIN REFILL WHILE INTERPRET OK REPEAT BYE ; : QUIT ( -- ) ( R: i*x ) \ CORE 94 \ Сбросить стек возвратов, записать ноль в SOURCE-ID. \ Установить стандартный входной поток и состояние интерпретации. \ Не выводить сообщений. Повторять следующее: \ - Принять строку из входного потока во входной буфер, обнулить >IN \ и интепретировать. \ - Вывести зависящее от реализации системное приглашение, если \ система находится в состоянии интерпретации, все процессы завершены, \ и нет неоднозначных ситуаций. BEGIN CONSOLE-HANDLES 0 TO SOURCE-ID 0 TO SOURCE-ID-XT [COMPILE] [ ['] MAIN1 CATCH ['] ERROR CATCH DROP ( R0 @ RP! \ стек не сбрасываем, т.к. это за нас делает CATCH :) S0 @ SP! \ стек сбрасываем, т.к. OPTIONS может оставить значения :( AGAIN ;
Советская реализация[править]
Юрий Семёнов приводит следующее определение слова QUIT через QUERY и INTERPRET (стр. 56):
: QUIT 0 BLK ! ( переход в пультовый режим) [ ( установка режима исполнения) BEGIN ( начало бесконечного цикла ожидания) !RP ( установка указателя возвратного стека в начальное состояние) ↵ QUERY ( приглашение ввести команду с терминала) INTERPRET ( интерпретация и исполнение команды) STATE @ 0= IF ." OK" ( сообщение о благополучном выполнении в режиме "исполнения") THEN 0 ( засылка 0 для поддержания цикла) UNTIL ;
Оно же, с использованием слова 0! и цикла BEGIN…AGAIN:
: QUIT BLK 0! ( переход в пультовый режим) [ ( установка режима исполнения) BEGIN ( начало бесконечного цикла ожидания) !RP ( установка указателя возвратного стека в начальное состояние) ↵ QUERY ( приглашение ввести команду с терминала) INTERPRET ( интерпретация и исполнение команды) STATE @ 0= IF ." OK" ( сообщение о благополучном выполнении в режиме "исполнения") THEN AGAIN ;
У Баранова-Ноздрунова определение слова QUIT выглядит так (стр. 81):
: QUIT ( ---> ) BEGIN ↵ ." >" ( Приглашение к вводу) TIB 80 EXPECT ( Ввести текст с терминала) SPAN @ #TIB ! ( Установить его длину) 0 TIB #TIB @ + C! ( Установить ограничитель) 0 >IN ! 0 BLK ! ( Установить входной поток) INTERPRET ( Интерпретировать введённый текст) STATE @ 0= IF ." OK" THEN ( Подтверждение) AGAIN ;
В ядре ФОРТ-ЕС слово QUIT называлось ФОРТ-СИСТЕМА
Вот его описание и определение:
ФОРТ-СИСТЕМА * -> ТЕКСТОВЫЙ ИНТЕРПРЕТАТОР ФОРТ-СИСТЕМЫ 40 Экран номер 40 ( 31.03.84 EXPECT OUERY INTERPRET ФОРТ-СИСТЕМА X ) : ФОРТ-СИСТЕМА ( ->) BEGIN QUERY INTERPRET AGAIN ;
Определение слова QUIT в FORTH ИТЭФ:
HEAD 204Q,'QUI',324Q,QUIT,$COL ; QUIT DW ZERO,BLK,STORE,LBRAC QUI: DW RPSTO,CR,QUERY,INTER,STATE,AT DW ZEQU,ZBRAN,QUI-$,PDOTQ DB 3,' OK' DW BRAN,QUI-$
Ссылки[править]
- Исходный текст слова QUIT в Каллисто Классик 1.0
- См. слова ABORT, WARM, COLD и BYE
- Слово QUIT в стандарте ANS Forth (англ.)
- Слово QUIT в черновике Forth 200x (англ.)
- ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Throw It For a Loop в книге Leo Brodie Starting Forth (англ.)
- Under the Hood в книге Leo Brodie Starting Forth (англ.)
- I/O and You в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |