U♯⟩

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

U#> — фортовское слово Каллисто.

U#>            ( x −− a c )                         Завершить преобразование целого числа. Дать адрес и длину для TYPE.

В стеке остаётся число полученных символов и адрес, как это требуется для слова TYPE.

Ввод слова U#>

В режиме ЛАТ последовательно нажмите клавиши  3     P   F   3     F   ИП 

Эти нажатия оставляют клавиатуру в режиме NUM.

#> в стандарте ANS Forth

 6.1.0040   #>                       "number-sign-greater"                 CORE
            ( xd -- c-addr u )
            Удаляет xd. Делает выходную строку отображаемого числа доступной 
            как символьную строку. C-addr и u определяют результирующую 
            символьную строку. Программа может заменять символы в пределах 
            строки.

        См.: 6.1.0030 #, 6.1.0050 #S, 6.1.0490 <#.

История

Каллистянское U#> происходит от стандартного слова #> , которое присутствует ещё в Форте−79. У нас x помещается в одной ячейке стека.

Слово U#gt; присутствует в некоторых версиях Форта, откуда и заимствовало своё имя.

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

     #>           32b -- addr +n                79     "sharp-greater"
          Pictured numeric output conversion is ended dropping 32b.
          addr is the address of the resulting output string.  +n is
          the number of characters in the output string.  addr and +n
          together are suitable for TYPE .

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

#>             d -- addr n                   190    "sharp-greater"
    End pictured numeric output conversion.   Drop d,  leaving the
    text address, and character count, suitable for TYPE.

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

#>             d  ---  addr  count              L0
       Terminates numeric output conversion by dropping d, leaving the text
       address and character count suitable for TYPE.

Реализация

3746 ;#Unum−end
3747 ; U#>              ( x −− a c )                         Завершить преобразование целого числа. Дать адрес и длину для TYPE.
3748 LEDIGS:         .DB     3
3749                 .TEXT   "U#>"                   ; ( x −− PAD длина )
3750                 .DW     LSPACS                  ; На стеке останется число получившихся литер и адрес, как это требуется для слова TYPE
3751 EDIGS:          .DW CALL
3752 REDIGS:         .DW DROP, HLD,UAT, PAD,OVER,SUB, EXIT

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

: #> ( xd -- c-addr u ) \ 94
\ Убрать xd. Сделать буфер форматного преобразования доступным в виде
\ строки символов, заданной c-addr и u.
\ Программа может менять символы в этой строке.
  2DROP HLD @ PAD OVER - >CHARS 1-
;

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

Определение слова U#> приводится у Юрия Семёнова (стр. 100) и Баранова-Ноздрунова (стр. 37):

 : U#>   ( A ---> B,N )    DROP  HLD @  PAD OVER - ;

В ядре ФОРТ-ЕС слово U#> работало с числовой парой и называлось #>

Вот его определение и описание:

#>        D->A,+N ЗАКОНЧИТЬ ФОРМАТНОЕ ПРЕОБРАЗОВАНИЕ;           37
          ДАТЬ АДРЕС А НАЧАЛА ЛИТЕР И ИХ ЧИСЛО +N

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

: #>  ( D->A,+N)  2DROP HLD @ PAD OVER - ;

В FORTH ИТЭФ слово U#> работало с числовой парой и называлось #>

Вот его определение и описание:

             HEAD    202Q,'#',276Q,EDIGS,$COL             ; #>
             DW  DDROP,HLD,AT,PAD,OVER,SUB,SEMI

Ссылки


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


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