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

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

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

Текущая версия Ваш текст
Строка 1: Строка 1:
'''WORD''' (слово, читается «ворд») — стандартное слово [[Каллисто]].
'''WORD''' (слово, читается «ворд») — стандартное слово [[Каллисто]].
  WORD          ( c −− a )                          Ввести слово до стоп−литеры c.
  WORD          ( c −− a )                          Ввести слово до стоп−литеры c. Дать его адрес как строки со счётчиком.
                                                    Дать его адрес, как строки со счётчиком.
Считывает одно слово из [[Входной буфер терминала|входного]] или [[Буфер|экранного]] буфера и размещает его, начиная с адреса [[HERE]]
Считывает одно слово из [[Входной буфер терминала|входного]] или [[Буфер|экранного]] буфера и размещает его, начиная с адреса [[HERE]]
Первый байт по адресу a содержит число символов в слове. Слово WORD кладёт адрес считанного слова в стек, как это требует Форт−79. Этот адрес a всегда равен [[HERE]] — как и в большинстве реализаций Форта.


== Ввод слова WORD ==
== Ввод слова WORD ==
Строка 89: Строка 90:


== Реализация ==
== Реализация ==
Слово WORD кладёт адрес считанного слова в [[Стек данных|стек]], как это требует Форт. Этот адрес a всегда равен [[HERE]] — как и в большинстве реализаций Форта. Первый байт по адресу a содержит число символов в считанном слове. Фактически это уже заготовка для [[Поле имени|поля имени]] новой [[Словарная статья|словарной статьи]], ждущая своего [[ALLOT]].
Длина имени слова ограничивается 31 литерой.
<pre>
3167 ;#WORD
3168 ; WORD            ( c −− a )                          Ввести слово до стоп−литеры c. Дать его адрес, как строки со счётчиком.
3169 ; Считать одно слово из входного или экранного буфера и разместить его, начиная с адреса HERE
3170 ; Первый байт содержит число литер в слове.
3171 ; Положить адрес считанного слова на стек, как это требует Форт−79.
3172 ; Этот адрес a всегда HERE −− как и в большинстве реализаций Форта.
3173 LWORD:          .DB    4
3174                .TEXT  "WORD"                  ; ( c "<c>ccc<c>" −− HERE )
3175                .DW    LPAD
3176 WORD:          .DW CALL, BLK,UAT, QDUP,ZBRAN,WD1, BLOCK, BRAN,WD2
3177 WD1:            .DW TIB
3178 WD2:            .DW IN,UAT, PLUS, SWAP, ENCL
3179                .DW HERE, BL,BLANK              ; BL == 32  ( 31 имя и 1 байт длины)
3180                .DW IN,PSTOR, DUP,TOR, HERE,CSTOR
3181                .DW HERE,ONEP, FROMR, CMOVE, HERE, EXIT
</pre>
Реализация из SP-Forth 4.20:
<pre>
: WORD ( char "<chars>ccc<char>" -- c-addr ) \ 94
\ Пропустить ведущие разделители. Выбрать символы, ограниченные
\ разделителем char.
\ Исключительная ситуация возникает, если длина извлеченной строки
\ больше максимальной длины строки со счетчиком.
\ c-addr - адрес переменной области, содержащей извлеченное слово
\ в виде строки со счетчиком.
\ Если разбираемая область пуста или содержит только разделители,
\ результирующая строка имеет нулевую длину.
\ В конец строки помещается пробел, не включаемый в длину строки.
\ Программа может изменять символы в строке.
  DUP SKIP PARSE 255 MIN
  DUP SYSTEM-PAD C! SYSTEM-PAD CHAR+ SWAP CMOVE
  0 SYSTEM-PAD COUNT CHARS + C!
  SYSTEM-PAD
;
</pre>
=== Советская реализация ===
Описание и определение слова WORD в ядре ФОРТ-ЕС:
Описание и определение слова WORD в ядре ФОРТ-ЕС:
<PRE>
<PRE>
Строка 167: Строка 127:
[[Категория:Слова высокого уровня]]
[[Категория:Слова высокого уровня]]
[[Категория:Интерпретация входного потока Каллисто]]
[[Категория:Интерпретация входного потока Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

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

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