(LINE)

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

(LINE) — адаптированное слово Каллисто. Считать строку с экрана.

(LINE)         ( c1 c2 −− a c )                     Вернуть адрес и длину строки c1 с экрана c2.

Выдаёт адрес a и длину c строки c1 с экрана c2. В Каллисто выдаёт длину без пробелов в конце.

Ввод слова (LINE)

В режиме NUM последовательно нажмите клавиши  ШГ→     Р-ГРД-Г      7   4   ИП     P   ШГ← 

История

(LINE) в fig-FORTH Release 1 glossary, май 1979 (англ.)

(LINE)            n1 n2 --- addr count
       Convert the line number n1 and the screen n2 to the disc buffer
       address containing the data. A count of 64 indicates the full line
       text length.

LINE в предыдущем стандарте Forth-83 (англ.)

     LINE         +n -- addr                    M
          addr is the address of the beginning of line +n for the
          screen whose number is contained in SCR .  The range of +n
          is {0..15}.

LINE в стандарте Forth-79 (англ.)

LINE           n -- addr
    Leave  the  address of the beginning of line n for the  screen
    whose number is contained in SCR.  The range of n is {0..15}.

Реализация

3518 ;#xLINE
3519 ; (LINE)           ( c1 c2 −− a c )                     Вернуть адрес и длину строки номер c1 с экрана c2.
3520 ; Выдать адрес a и длину c строки c1 с экрана c2. В Каллисто выдаёт длину без пробелов в конце.
3521 LDLINE:         .DB     6
3522                 .TEXT   "(LINE)"                ; ( №строки №экрана −− адрес длина)
3523                 .DW     LBLOCK
3524 DLINE:          .DW CALL
3525 RDLINE:         .DW TOR, LIT64,B3BUF,SSMOD, FROMR,PLUS, BLOCK
3526                 .DW PLUS, LIT64, DTRAI, EXIT

Советская реализация

Юрий Семёнов приводит следующее описание слова (LINE) (стр. 157):

 : (LINE)   >R           ( запись номера экрана в стек возврата)
            64 B/BUF ×/MOD  ( частное указывает, на каком экране
                              по отношению к первому лежит
                              нужный текст)
            R> +      ( запись в стек абсолютного номера экрана,
                           откуда будет проведено чтение строки)
            BLOCK +       ( считывание экрана в буфер и запись в
                            стек адреса начала нужной строки)
            64     ( в стеке адрес начала текста и длина строки)
            -TRAILING        ( из 64 вычитается число пробелов в
                               конце строки)
            ;                    ( всё готово для печати строки)

Определение слова .LINE в FORTH ИТЭФ:

             HEAD    205Q,'.LIN',305Q,DLINE,$COL          ; .LINE
             DW  TOR,$CL,BBUF,SSMOD,FROMR,PLUS,BLOCK
             DW  PLUS,$CL,DTRAI,$TYPE,SEMI

Ссылки


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


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