PAD

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

PAD (прокладка) — стандартное слово Каллисто.

PAD            ( −− a )                             Адрес буфера промежуточного хранения последовательности литер.

Кладёт на стек адрес буфера для промежуточного хранения последовательностей символов. Внимание, это не переменная!

Ввод слова PAD

В режиме ЛАТ последовательно нажмите три клавиши  6   ШГ←   K 

PAD в стандарте ANS Forth

 6.2.2000   PAD                                                         CORE EXT
            ( -- c-addr )
            c-addr - адрес временной области, которая может использоваться с 
            целью хранения данных для промежуточной обработки.

        См.: 3.3.3.6 Другие временные области.

 A.6.2.2000   PAD
 PAD была доступна как рабочая память для строк начиная с самых ранних Forth 
 реализаций. Было доведено до нашего внимания, что много программистов 
 отказываются от использования PAD, опасаясь несовместимости в системном 
 использовании. PAD конкретно предназначен как удобство для программиста, однако 
 мы документировали факт, что никакие стандартные слова не используют его.

История

Форт-79 требует PAD как минимум 64 байта. Форт-83 требует PAD как минимум 84 байта.

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

     PAD          -- addr                       83
          The lower address of a scratch area used to hold data for
          intermediate processing.  The address or contents of PAD may
          change and the data lost if the address of the next
          available dictionary location is changed.  The minimum
          capacity of PAD is 84 characters.

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

PAD            -- addr                       226
    The  address of a scratch area used to hold character  strings
    for  intermediate processing.   The minimum capacity of PAD is
    64 characters (addr through addr+63).

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

PAD            ---   addr                           L0
       Leave the address of the text output buffer, which is a fixed offset
       above v HERE.

Реализация

Положение временного буфера PAD жёстко связано с верхней границей словаря, определяемой словом HERE

Размер PAD в Каллисто — 84 байта, если буфер растёт «вниз», в сторону младших адресов. Размер буфера PAD в сторону больших адресов относительно большой, буфер может расти вплоть до начала стека возвратов.

«Младшая» часть буфера используется Каллисто при форматном преобразовании целых чисел, а «большая» — при форматном преобразовании десятичных чисел.

3157 ;#PAD
3158 ; PAD              ( −− a )                             Адрес буфера промежуточного хранения последовательности литер.
3159 ; Положение временного буфера жёстко связано с верхней границей словаря, определяемой словом HERE
3160 LPAD:           .DB     3
3161                 .TEXT   "PAD"
3162                 .DW     LNULL
3163 PAD:            .DW CALL, HERE,LITB
3164                 .DB 84                          ; Размер PAD −− 84 байта
3165                 .DW PLUS, EXIT

Реализация из SP-Forth 4.20:

USER-CREATE PAD ( -- c-addr ) \ 94 CORE EXT
\ c-addr - адрес области для промежуточной обработки данных.
1024 CHARS TC-USER-ALLOT

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

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

: PAD   HERE 68 + ;

У Баранова-Ноздрунова приводится следующее описание слова PAD (стр. 36):

 : PAD   ( ---> A )    HERE 100 + ;

В главе 9 Starting FORTH приводится следующее описание слова PAD:

: PAD   HERE 340 + ;

Описание и определение слова PAD в ядре ФОРТ-ЕС:

PAD          ->A ДАТЬ АДРЕС ТЕКУЩЕЙ ВЕРШИНЫ БУФЕРА PAD          37

                     Экран номер 37
( 31.03.86  PAD  HOLD  ALPHA  <# #> # #S SIGN )

: PAD ( ->A)   HERE 100 + ;

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

             HEAD    203Q,'PA',304Q,PAD,$COL              ; PAD
             DW  HERE,LIT,104Q,PLUS,SEMI

Ссылки


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


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