HOLD

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

HOLD (сохранить, читается «холд») — стандартное слово Каллисто.

HOLD           ( c −− )                             Перенести литеру c на вершину буфера PAD.

Слово HOLD вводит в текущую ячейку выходного буфера PAD символ, код которого в стеке

Слово HOLD предназначено для использования между словами <# и U#>.

Ввод слова HOLD

В режиме ЛАТ последовательно нажмите четыре клавиши  ПП   5      K 

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

6.1.1670   HOLD                                                            CORE
           ( char -- )
           Добавляет char к началу выходной строки отображаемого числа. 
           Неопределенная ситуация существует если HOLD выполняется вне <# #> 
           ограничивающих преобразование числа.

История

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

     HOLD         char --                       79
          char is inserted into a pictured numeric output string.
          Typically used between <# and #>.

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

HOLD           char --                       175
    Insert char into a pictured numeric output string.   May  only
    be used between <# and #> .

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

HOLD          c  ---                           L0
       Used between <# and #> to insert an ascii character into a pictured
       numeric output string.
       e.g. 2E HOLD will place a decimal point.

Реализация

 109 rrHLD           .EQU     1118                   ; 11118  HLD − Указатель позиции в выходном буфере, обычно PAD
 110 pHLD            .EQU      118
 111 rlHLD           .EQU     1119
…
2038 ;#HOLD
2039 ; HOLD             ( c −− )                             Перенести литеру c на вершину буфера PAD.
2040 ; Ввести в текущую ячейку выходного буфера PAD литеру, код которой в стеке
2041 ; Для использования между <# и U#>
2042 LHOLD:          .DB     4
2043                 .TEXT   "HOLD"                  ; ( литера −− )
2044                 .DW     LBLANK
2045 HOLD:           .DW     JHOLD
2046 JHOLD:          PPRM rlHLD 1 −
2047                 FX<0 HOLD1
2048                 PPRM rrHLD 1 − PPM rrHLD 255
2049 HOLD1:          PPM rlHLD
2050                 PPRM rrHLD RME ∗ + 1 EE 4 − MA
2051                 PKRM03 KMA
2052 JDROP:          1                               ; Да, это обработчик DROP
2053 NDROP:          RM3 + M3                        ; А сюда сваливается 2DROP
2054                 KGOTO9

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

: HOLD ( char -- ) \ 94
\ Добавить char к началу форматной числовой строки.
\ Исключительная ситуация возникает, если использовать HOLD
\ вне <# и #>, ограничивающивающих преобразование чисел.
  HLD @ CHAR- 
  DUP SYSTEM-PAD U< IF -17 THROW THEN
  DUP HLD ! C!
;

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

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

 : HOLD   ( C ---> )    -1 HLD +!   HLD @ C! ;

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

HOLD      С-> ПЕРЕНЕСТИ ЛИТЕРУ С НА ВЕРШИНУ БУФЕРА PAD          37

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

: HOLD ( C-> )  -1 HLD +!  HLD @ С! ;

В FORTH ИТЭФ слово HOLD было примитивом, вот его определение:

            HEAD     204Q,'HOL',304Q,HOLD                 ; HOLD
            DEC  WORD PTR  [DI]+70Q
            POP  AX
            MOV  BX,  [DI+70Q]
            MOV  BYTE PTR [BX], AL
            NEXT

Ссылки


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


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