Редактирование: U♯

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''U#''' — фортовское слово [[Каллисто]].
'''U#''' — встроенное слово [[Каллисто]].
  U#            ( u −− u1 )                          Преобразовать в литеру последнюю цифру из u и добавить к форматной строке.
  U#            ( u −− u1 )                          Преобразовать в литеру последнюю цифру из u и добавить к форматной строке.
Преобразует одну цифру целого числа u и [[HOLD|записывает её]] в выходной буфер [[PAD]]. Выдаёт цифру всегда. Если преобразовывать нечего, записывается [[Символ 0|'0']].
Преобразует одну цифру целого числа u и [[HOLD|записывает её]] в выходной буфер [[PAD]]. Выдаёт цифру всегда. Если преобразовывать нечего, записывается [[Символ 0|'0']].
Строка 19: Строка 19:


== История ==
== История ==
Каллистянское слово U# — адаптированное слово # , которое является стандартным и присутствует со времён Форта−79.
Слово присутствует ещё в Форте−79, но в [[Каллисто]] оно оперирует лишь с одной ячейкой на вершине [[Стек данных|стека]].
 
Каллистянское U# оперирует лишь с одной ячейкой на вершине [[Стек данных|стека]]. Слово U# также присутствует в некоторых версиях Форта, откуда и было взято его имя.


=== # в предыдущем стандарте Forth-83 (англ.) ===
=== # в предыдущем стандарте Forth-83 (англ.) ===
Строка 47: Строка 45:


== Реализация ==
== Реализация ==
<pre>
3776 ;#Unum
3777 ; U#              ( u −− u1 )                          Преобразовать в литеру последнюю цифру из u и добавить к форматной строке.
3778 ; Преобразовать одну цифру целого числа и записать её в выходной буфер PAD
3779 ; Выдать цифру всегда, если преобразовывать нечего, записать '0'.
3780 LDIG:          .DB    2
3781                .TEXT  "U#"                    ; ( x1 −− x2)
3782                .DW    LSIGN
3783 DIG:            .DW CALL, BASE,UAT, SLMOD, SWAP, LITB
3784                .DB 9
3785                .DW OVER, LESS, ZBRAN,DIGI, LITB
3786                .DB 39                          ; 7 если заглавные буквы
3787                .DW PLUS
3788 DIGI:          .DW LITB
3789                .DB 48
3790                .DW PLUS, HOLD, EXIT
</pre>
Реализация из SP-Forth 4.20:
<pre>
: # ( ud1 -- ud2 ) \ 94
\ Делением ud1 на значение BASE выделить одну цифру с конца и
\ добавить ее в буфер форматного преобразования чисел,
\ оставив частное ud2.
\ Исключительная ситуация возникает, если использовать #
\ вне <# и #>, ограничивающивающих преобразование чисел.
  0 BASE @ UM/MOD >R BASE @ UM/MOD R>
  ROT DUP 10 < 0= IF 7 + THEN 48 +
  HOLD
;
</pre>
=== Советская реализация ===
Юрий Семёнов приводит следующее определение слова U# (стр. 100):
Юрий Семёнов приводит следующее определение слова U# (стр. 100):
   : U#  BASE @ /MOD ROT 9 OVER < IF 7 + THEN '0' + HOLD ;
   : U#  BASE @ /MOD ROT 9 OVER < IF 7 + THEN '0' + HOLD ;
Строка 124: Строка 90:
[[Категория:Слова высокого уровня]]
[[Категория:Слова высокого уровня]]
[[Категория:Форматные преобразования Каллисто]]
[[Категория:Форматные преобразования Каллисто]]
[[Категория:Адаптированные слова]]
[[Категория:Фортовские слова]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/U♯