LIST: различия между версиями
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) Нет описания правки |
||
(не показано 45 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''LIST''' — стандартное слово [[Каллисто]]. | '''LIST''' (распечатать, листинг, читается «лист») — стандартное слово [[Каллисто]]. | ||
LIST ( c −− ) Вывести экран c и записать его номер в переменную SCR. | |||
Распечатывает [[экран]] с номером c и записывает его номер в переменную [[SCR]] | |||
== Ввод слова LIST == | |||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите четыре белые клавиши [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 1|{{Серая клавиша|1}}]] [[Клавиша 2|{{Серая клавиша|2}}]] | |||
== LIST в стандарте ANS Forth == | |||
<pre> | |||
7.6.2.1770 LIST BLOCK EXT | |||
( u -- ) | |||
Отображает блок u в формате, определенном реализацией. Сохраняет u в | |||
SCR. | |||
См.: 7.6.1.0800 BLOCK. | |||
</pre> | |||
== История == | |||
Слово LIST является одним из самых древних и устоявшихся в Форте. Оно появилось в 1966 году, когда Чак Мур, будучи гуру MCP на 5500, работал в Realtime Systems, Inc (RSI). | |||
[[Экран]] [[Каллисто]] содержит в три раза больше строк, чем экран Форта. Поэтому каллистянское слово LIST ближе к слову TRIO fig-Форта. | |||
=== LIST в предыдущем стандарте Forth-83 (англ.) === | |||
LIST u -- M,79 | |||
The contents of screen u are displayed. SCR is set to u. | |||
See: BLOCK | |||
=== LIST в стандарте Forth-79 (англ.) === | |||
LIST n -- 109 | |||
List the ASCII symbolic contents of screen n on the current | |||
output device, setting SCR to contain n. n is unsigned. | |||
=== LIST в fig-FORTH Release 1 glossary, май 1979 (англ.) === | |||
LIST n --- L0 | |||
Display the ascii text of screen n on the selected output device. | |||
SCR contains the screen number during and after this process. | |||
== Реализация == | |||
LIST устанавливает [[DECIMAL|десятичную систему представления чисел]], что исключает разночтения номера выводимого [[экран]]а. Но «старая» [[BASE|система счисления]] не восстанавливается. Если вам нужно постоянно работать в другой системе, это может создать трудности. | |||
Вывод на [[индикатор]] можно приостановить или остановить, см. [[?BREAK]] | |||
<pre> | |||
3861 ;#LIST | |||
3862 ; LIST ( c −− ) Вывести экран c и записать его номер в переменную SCR. | |||
3863 USLIST: .DB 4 | |||
3864 .TEXT "LIST" ; ( №блока −− ) | |||
3865 .DW LQUEST ; Распечатать экран с номером №блока и записать его номер в переменную SCR | |||
3866 SLIST: .DW CALL, DEC, DUP,SCR,STORE, PDOTQ ; Без CR, экономим одну строчку. | |||
3867 .DB 3 | |||
3868 .TEXT "S #" | |||
3869 .DW DOT, ZERO, LITB | |||
3870 .DB 48 | |||
3871 .DW XFOR,LST1 | |||
3872 LSTI: .DW CR, DUP,TWO,DOTR, SPACE, QBREAK | |||
3873 .DW DUP, SCR,UAT, DLINE, TYPE1, ONEP, XNEXT,LSTI | |||
3874 LST1: .DW DROP, EXIT | |||
</pre> | |||
=== Советская реализация === | |||
Юрий Семёнов приводит следующее определение слова LIST (стр. 33), называя его одной из часто употребимых команд Форта: | |||
: LIST DECIMAL ↵ ↑ ( в стеке n n ) | |||
SCR ! ( запись в SCR номера выводимого экрана; | |||
в стеке n) | |||
." S# " . ( отображение номера выводимого экрана) | |||
0 16 FOR ( начало цикла отображения 16 строк) | |||
↵ ↑ 3 I.R SPACE ( печать номера строки ) | |||
↑ SCR @ (LINE) TYPE ( распечатка текста строки) | |||
1+ NEXT DROP ↵ ; | |||
Описание и определение LIST в ядре ФОРТ-ЕС: | |||
<PRE> | |||
(#SCR) * N->А,Т ПЕРЕВЕСТИ НОМЕР ЗКРАНА N В ТЕКСТ 46 | |||
LIST + N-> РАСПЕЧАТАТЬ НА ТЕРМИНАЛЕ ЭКРАН N 46 | |||
Экран номер 46 | |||
( 31.09.86 (#SCR/ LIST SCR? INDEX ) | |||
: (#SCR) ( N->A,T ПЕРЕВЕСТИ НОМЕР N ЭКРАНА В ТЕКСТОВОЕ ИМЯ) | |||
BASE @ >R DECIMAL 0 <# #S #> R> BASE ! ; | |||
: LIST ( N-> РАСПЕЧАТАТЬ ЭКРАН N, ЗАПОМНИТЬ ЕГО В "SCR") | |||
DUP SCR ! CR ." ЭКРАН " DUP (#SCR) TYPE | |||
BLOCK 16 0 DO DUP I 64 * + | |||
CR I 3 .R SPACE 64 TYPE LOOP DROP ; | |||
</PRE> | |||
Определения слов LIST и TRIO в FORTH ИТЭФ: | |||
<PRE> | |||
; ** Вспомогательные процедуры ** | |||
HEAD 204Q,'LIS',324Q,$LIST,$COL ; LIST | |||
DW DEC,CR,DUBL,SCR,STORE,PDOTQ | |||
DB 3,'S# ' | |||
DW $DOT,LIT,20Q,ZERO,XDO | |||
LSTI: DW CR,I,THREE,DOTR,SPACE | |||
DW I,SCR,AT,DLINE,XLOOP,LSTI-$,CR,SEMI | |||
... | |||
HEAD 204Q,'TRI',317Q,TRIO,$COL ; TRIO | |||
DW LIT,14Q,EMIT | |||
DW THREE,OVER,PLUS,SWAP,XDO | |||
TRI: DW I,$LIST,XLOOP,TRI-$,SEMI | |||
</PRE> | |||
== Ссылки == | == Ссылки == | ||
* [http://forth.sourceforge.net/standard/dpans/dpans7.htm#7.6.2.1770 | * {{Исходник|LIST|LIST}} | ||
* См. слова [[INDEX]] и [[SCR]] | |||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans7.htm#7.6.2.1770 LIST] в стандарте ANS Forth ''(англ.)'' | |||
* Слово [http://forth-standard.org/standard/block/LIST LIST] в черновике Forth 200x ''(англ.)'' | |||
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\03.%20KAK%20RABOTATJ%20NA%20FORTE КАК РАБОТАТЬ НА ФОРТЕ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»] | |||
* [http://www.forth.com/starting-forth/sf3/sf3.html The Editor (and Staff)] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |||
Строка 8: | Строка 115: | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Слова высокого уровня]] | |||
[[Категория:Терминальный ввод/вывод Каллисто]] | [[Категория:Терминальный ввод/вывод Каллисто]] | ||
[[Категория:Работа с внешней памятью Каллисто]] | [[Категория:Работа с внешней памятью Каллисто]] | ||
[[Категория:Средства отладки Каллисто]] | [[Категория:Средства отладки Каллисто]] | ||
[[Категория:Стандартные слова]] | |||
[[Категория:1994 BLOCK EXT]] | |||
[[Категория:2012 BLOCK EXT]] |
Текущая версия от 11:17, 10 ноября 2017
LIST (распечатать, листинг, читается «лист») — стандартное слово Каллисто.
LIST ( c −− ) Вывести экран c и записать его номер в переменную SCR.
Распечатывает экран с номером c и записывает его номер в переменную SCR
Ввод слова LIST[править]
В режиме ЛАТ последовательно нажмите четыре белые клавиши − 7 1 2
LIST в стандарте ANS Forth[править]
7.6.2.1770 LIST BLOCK EXT ( u -- ) Отображает блок u в формате, определенном реализацией. Сохраняет u в SCR. См.: 7.6.1.0800 BLOCK.
История[править]
Слово LIST является одним из самых древних и устоявшихся в Форте. Оно появилось в 1966 году, когда Чак Мур, будучи гуру MCP на 5500, работал в Realtime Systems, Inc (RSI).
Экран Каллисто содержит в три раза больше строк, чем экран Форта. Поэтому каллистянское слово LIST ближе к слову TRIO fig-Форта.
LIST в предыдущем стандарте Forth-83 (англ.)[править]
LIST u -- M,79 The contents of screen u are displayed. SCR is set to u. See: BLOCK
LIST в стандарте Forth-79 (англ.)[править]
LIST n -- 109 List the ASCII symbolic contents of screen n on the current output device, setting SCR to contain n. n is unsigned.
LIST в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
LIST n --- L0 Display the ascii text of screen n on the selected output device. SCR contains the screen number during and after this process.
Реализация[править]
LIST устанавливает десятичную систему представления чисел, что исключает разночтения номера выводимого экрана. Но «старая» система счисления не восстанавливается. Если вам нужно постоянно работать в другой системе, это может создать трудности.
Вывод на индикатор можно приостановить или остановить, см. ?BREAK
3861 ;#LIST 3862 ; LIST ( c −− ) Вывести экран c и записать его номер в переменную SCR. 3863 USLIST: .DB 4 3864 .TEXT "LIST" ; ( №блока −− ) 3865 .DW LQUEST ; Распечатать экран с номером №блока и записать его номер в переменную SCR 3866 SLIST: .DW CALL, DEC, DUP,SCR,STORE, PDOTQ ; Без CR, экономим одну строчку. 3867 .DB 3 3868 .TEXT "S #" 3869 .DW DOT, ZERO, LITB 3870 .DB 48 3871 .DW XFOR,LST1 3872 LSTI: .DW CR, DUP,TWO,DOTR, SPACE, QBREAK 3873 .DW DUP, SCR,UAT, DLINE, TYPE1, ONEP, XNEXT,LSTI 3874 LST1: .DW DROP, EXIT
Советская реализация[править]
Юрий Семёнов приводит следующее определение слова LIST (стр. 33), называя его одной из часто употребимых команд Форта:
: LIST DECIMAL ↵ ↑ ( в стеке n n ) SCR ! ( запись в SCR номера выводимого экрана; в стеке n) ." S# " . ( отображение номера выводимого экрана) 0 16 FOR ( начало цикла отображения 16 строк) ↵ ↑ 3 I.R SPACE ( печать номера строки ) ↑ SCR @ (LINE) TYPE ( распечатка текста строки) 1+ NEXT DROP ↵ ;
Описание и определение LIST в ядре ФОРТ-ЕС:
(#SCR) * N->А,Т ПЕРЕВЕСТИ НОМЕР ЗКРАНА N В ТЕКСТ 46 LIST + N-> РАСПЕЧАТАТЬ НА ТЕРМИНАЛЕ ЭКРАН N 46 Экран номер 46 ( 31.09.86 (#SCR/ LIST SCR? INDEX ) : (#SCR) ( N->A,T ПЕРЕВЕСТИ НОМЕР N ЭКРАНА В ТЕКСТОВОЕ ИМЯ) BASE @ >R DECIMAL 0 <# #S #> R> BASE ! ; : LIST ( N-> РАСПЕЧАТАТЬ ЭКРАН N, ЗАПОМНИТЬ ЕГО В "SCR") DUP SCR ! CR ." ЭКРАН " DUP (#SCR) TYPE BLOCK 16 0 DO DUP I 64 * + CR I 3 .R SPACE 64 TYPE LOOP DROP ;
Определения слов LIST и TRIO в FORTH ИТЭФ:
; ** Вспомогательные процедуры ** HEAD 204Q,'LIS',324Q,$LIST,$COL ; LIST DW DEC,CR,DUBL,SCR,STORE,PDOTQ DB 3,'S# ' DW $DOT,LIT,20Q,ZERO,XDO LSTI: DW CR,I,THREE,DOTR,SPACE DW I,SCR,AT,DLINE,XLOOP,LSTI-$,CR,SEMI ... HEAD 204Q,'TRI',317Q,TRIO,$COL ; TRIO DW LIT,14Q,EMIT DW THREE,OVER,PLUS,SWAP,XDO TRI: DW I,$LIST,XLOOP,TRI-$,SEMI
Ссылки[править]
- Исходный текст слова LIST в Каллисто Классик 1.0
- См. слова INDEX и SCR
- Слово LIST в стандарте ANS Forth (англ.)
- Слово LIST в черновике Forth 200x (англ.)
- КАК РАБОТАТЬ НА ФОРТЕ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- The Editor (and Staff) в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |