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

Ссылки


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


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