LIST
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 (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |