LIST: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
(не показано 29 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''LIST''' (листинг, распечатать) — стандартное слово [[Каллисто]].
'''LIST''' (распечатать, листинг, читается «лист») — стандартное слово [[Каллисто]].
 
LIST          ( c −− )                            Вывести экран c и записать его номер в переменную SCR.
Распечатывает [[экран]] с номером u и записывает его номер в переменную [[SCR]]
Распечатывает [[экран]] с номером c и записывает его номер в переменную [[SCR]]
 
Экран Каллисто содержит в три раза больше строк, чем экран Форта. Поэтому каллистянское слово LIST ближе к слову TRIO fig-Форта.
 
LIST устанавливает десятичную систему представления чисел, что исключает неоднозначность интерпретации текста. Но «старая» система счисления не восстанавливается, если ранее работала другая система, и это может создать трудности.


== Ввод слова LIST ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите четыре белые клавиши [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 1|{{Серая клавиша|1}}]] [[Клавиша 2|{{Серая клавиша|2}}]]


== LIST в стандарте ANS Forth ==
== LIST в стандарте ANS Forth ==
<pre>
  7.6.2.1770  LIST                                                    BLOCK EXT
  7.6.2.1770  LIST                                                    BLOCK EXT
             ( u -- )
             ( u -- )
Строка 15: Строка 14:


         См.: 7.6.1.0800 BLOCK.
         См.: 7.6.1.0800 BLOCK.
</pre>


== История ==
Слово LIST является одним из самых древних и устоявшихся в Форте. Оно появилось в 1966 году, когда Чак Мур, будучи гуру MCP на 5500, работал в Realtime Systems, Inc (RSI).


== LIST в предыдущем стандарте Forth-83 (англ.) ==
[[Экран]] [[Каллисто]] содержит в три раза больше строк, чем экран Форта. Поэтому каллистянское слово LIST ближе к слову TRIO fig-Форта.
 
=== LIST в предыдущем стандарте Forth-83 (англ.) ===
       LIST        u --                          M,79
       LIST        u --                          M,79
           The contents of screen u are displayed.  SCR is set to u.
           The contents of screen u are displayed.  SCR is set to u.
           See:  BLOCK
           See:  BLOCK


 
=== LIST в стандарте Forth-79 (англ.) ===
== LIST в стандарте Forth-79 (англ.) ==
  LIST          n --                          109
  LIST          n --                          109
     List  the ASCII symbolic contents of screen n on  the  current
     List  the ASCII symbolic contents of screen n on  the  current
     output device, setting SCR to contain n.  n is unsigned.
     output device, setting SCR to contain n.  n is unsigned.


 
=== LIST в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
== LIST в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
  LIST          n  ---                            L0
  LIST          n  ---                            L0
         Display the ascii text of screen n on the selected output device.
         Display the ascii text of screen n on the selected output device.
         SCR contains the screen number during and after this process.
         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 ==
=== Советская реализация ===
Юрий Семёнов приводит следующее описание слова LIST (стр. 33), называя его одной из часто употребимых команд Форта:
Юрий Семёнов приводит следующее определение слова LIST (стр. 33), называя его одной из часто употребимых команд Форта:
  : LIST DECIMAL ↵ ↑                          ( в стеке n n )
  : LIST DECIMAL ↵ ↑                          ( в стеке n n )
         SCR !        ( запись в SCR номера выводимого экрана;
         SCR !        ( запись в SCR номера выводимого экрана;
Строка 46: Строка 68:
         1+ NEXT DROP ↵ ;
         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 в стандарте ANS Forth] ''(англ.)''
* {{Исходник|LIST|LIST}}
* [http://www.forth200x.org/documents/html/block.html#block:LIST Слово LIST в черновике Forth 200x] ''(англ.)''
* См. слова [[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] ''(англ.)''




Строка 61: Строка 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

Ссылки[править]


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.