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

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


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


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