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

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

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

Текущая версия Ваш текст
Строка 1: Строка 1:
'''UCONVERT''' — фортовское слово [[Каллисто]]. Преобразовать последовательность цифр в целое, с учётом [[BASE]].
'''CONVERT''' — стандартное слово [[Каллисто]].
UCONVERT      ( u a −− u1 a1 )                    Преобразовать u и литеры от a+1 в u1 и a1 −− адрес первой не цифры.


== Ввод слова UCONVERT ==
== Ввод слова CONVERT ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша 3|{{Серая клавиша|3}}]] [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша 4|{{Серая клавиша|4}}]] [[Клавиша ↔|{{Серая клавиша|↔}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша 2|{{Серая клавиша|2}}]]
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша 4|{{Серая клавиша|4}}]] [[Клавиша ↔|{{Серая клавиша|↔}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша 2|{{Серая клавиша|2}}]]


== CONVERT в стандарте ANS Forth ==
== CONVERT в стандарте ANS Forth ==
<pre>
  6.2.0970  CONVERT                                                    CORE EXT
  6.2.0970  CONVERT                                                    CORE EXT
             ( ud1 c-addr1 -- ud2 c-addr2 )
             ( ud1 c-addr1 -- ud2 c-addr2 )
Строка 26: Строка 24:


         : CONVERT  CHAR+ 65535 >NUMBER DROP ;
         : CONVERT  CHAR+ 65535 >NUMBER DROP ;
</pre>


== История ==
== CONVERT в предыдущем стандарте Forth-83 (англ.) ==
В стандарте Форта 1994 года слово CONVERT было определено, как устаревшее. Его нет в черновике стандарта 200x года. Эволюция Форта привела к победе слова >NUMBER — в котором явно указана максимальная длина строки для преобразования.
 
Каллистянское слово UCONVERT нестандартное, т.к. в стандарте Форт-94 вместо u прописана пара чисел ud1.
 
=== CONVERT в предыдущем стандарте Forth-83 (англ.) ===
       CONVERT      +d1 addr1 -- +d2 addr2        79
       CONVERT      +d1 addr1 -- +d2 addr2        79
           +d2 is the result of converting the characters within the
           +d2 is the result of converting the characters within the
Строка 42: Строка 34:
           of the first unconvertible character.
           of the first unconvertible character.


=== CONVERT в стандарте Forth-79 (англ.) ===
== CONVERT в стандарте Forth-79 (англ.) ==
  CONVERT        d1 addr1 -- d2 addr2          195
  CONVERT        d1 addr1 -- d2 addr2          195
     Convert  to the equivalent stack number the text beginning  at
     Convert  to the equivalent stack number the text beginning  at
Строка 49: Строка 41:
     of the first non-convertible character.
     of the first non-convertible character.


=== (NUMBER) в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
== (NUMBER) в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
  (NUMBER)      d1 addr1 --- d2 addr2
  (NUMBER)      d1 addr1 --- d2 addr2
         Convert the ascii text beginning at addr1+l with regard to BASE. The
         Convert the ascii text beginning at addr1+l with regard to BASE. The
Строка 55: Строка 47:
         Addr2 is the address of the first unconvertable digit. Used by
         Addr2 is the address of the first unconvertable digit. Used by
         NUMBER.
         NUMBER.
== История ==
В стандарте Форта 1994 года слово CONVERT было определено, как устаревшее. Его нет в черновике стандарта 200x года.


== Реализация ==
== Реализация ==
<pre>
3183 ;#UCONVERT
3184 ; UCONVERT        ( u a −− u1 a1 )                    Преобразовать u и литеры от a+1 в u1 и a1 −− адрес первой не цифры.
3185 LPNUMB:        .DB    8
3186                .TEXT  "UCONVERT"
3187                .DW    LWORD
3188 PNUMB:          .DW CALL
3189 BN:            .DW ONEP, DUP,TOR, CAT, BASE,UAT, DIGIT, ZBRAN,MMO
3190                .DW SWAP, BASE,UAT,STAR, PLUS
3191                .DW DPL,AT, ONEP, ZBRAN,BN1, ONE,DPL,PSTOR      ; Увеличить DPL на единицу, если там не −1
3192 BN1:            .DW FROMR, BRAN,BN
3193 MMO:            .DW FROMR, EXIT
</pre>
Реализация из SP-Forth 4.20:
<pre>
: >NUMBER ( ud1 c-addr1 u1 -- ud2 c-addr2 u2 ) \ 94
\ ud2 - результат преобразования символов строки, заданной c-addr1 u1,
\ в цифры, используя число в BASE, и добавлением каждой к ud1 после
\ умножения ud1 на число в BASE. Преобразование продолжается слева
\ направо до первого непреобразуемого символа, включая символы "+" и "-",
\ или до полного преобразования строки.
\ c-addr2 - адрес первого непреобразумого символа или первого символа
\ за концом строки, если строка была полностью преобразована.
\ u2 - число непреобразованных символов в строке.
\ Неоднозначная ситуация возникает, если ud2 переполняется во время
\ преобразования.
  BEGIN
    DUP
  WHILE
    >R
    DUP >R
    C@ BASE @ DIGIT 0=    \ ud n flag
    IF R> R> EXIT THEN    \ ud n  ( ud = udh udl )
    SWAP BASE @ UM* DROP  \ udl n udh*base
    ROT BASE @ UM* D+      \ (n udh*base)+(udl*baseD)
    R> CHAR+ R> 1-
  REPEAT
;
</pre>
=== Советская реализация ===
Описание и определение слова CONVERT в ядре ФОРТ-ЕС:
Описание и определение слова CONVERT в ядре ФОРТ-ЕС:
<PRE>
<PRE>
Строка 113: Строка 67:


== Ссылки ==
== Ссылки ==
* {{Исходник|UCONVERT|UCONVERT}}
* См. слова [[DIGIT]], [[BASE]] и [[NUMBER]]
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.2.0970 CONVERT] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.2.0970 комментарий к нему] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.2.0970 CONVERT] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.2.0970 комментарий к нему] в стандарте ANS Forth ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\10.WWOD-WYWOD ВВОД-ВЫВОД] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\10.WWOD-WYWOD ВВОД-ВЫВОД] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
Строка 124: Строка 76:
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Слова высокого уровня]]
[[Категория:Слова высокого уровня]]
[[Категория:Адаптированные слова]]
[[Категория:Слова Каллисто без стековых диаграмм]]
[[Категория:Фортовские слова]]
[[Категория:Архаичные слова]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

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

Отменить Справка по редактированию (в новом окне)