FORTH: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
(Новая страница: «'''FORTH''' — стандартное слово Каллисто. {{нет иллюстраций}} {{заготовка}} Категория:Слова…»)
 
 
(не показано 36 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''FORTH''' — стандартное слово [[Каллисто]].
'''FORTH''' (Форт) — стандартное слово [[Каллисто]].
FORTH          ( −− )                              Сделать набор слов FORTH контекстным.
Слово FORTH делает одноимённый [[VOCABULARY|набор слов]] [[CONTEXT|контекстным]].
 
== Ввод слова FORTH ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша П|{{Чёрная клавиша|П}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша ×|{{Серая клавиша|×}}]]  [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ПП|{{Чёрная клавиша|ПП}}]]
 
== FORTH и FORTH-WORDLIST в стандарте ANS Forth ==
<pre>
16.6.2.1590  FORTH                                                  SEARCH EXT
            ( -- )
            Преобразует порядок поиска, состоящий из widn, ... wid2, wid1 (где
            wid1 просматривается первым) в widn, ... wid2, wid FORTH-WORDLIST.
 
16.6.1.1595  FORTH-WORDLIST                                            SEARCH
            ( -- wid )
            Возвращает wid, идентификатор списка слов, который включает все
            стандартные слова, предоставленные реализацией. Этот список слов -
            первоначально список слов компиляции и - часть начального порядка
            поиска.
</pre>
 
== История ==
Начиная с Форта-83, слово FORTH больше не имеет [[IMMEDIATE|признака немедленного исполнения]]. При переводе определений слов с fig-Форта и Форта-79, используйте последовательность [[Слово [|&#91;]] FORTH [[Слово ]|&#93;]]
 
=== FORTH в предыдущем стандарте Forth-83 (англ.) ===
<pre>
      FORTH        --                            83
          The name of the primary vocabulary.  Execution replaces the
          first vocabulary in the search order with FORTH .  FORTH is
          initially the compilation vocabulary and the first
          vocabulary in the search order.  New definitions become part
          of the FORTH vocabulary until a different compilation
          vocabulary is established.  See:  VOCABULARY
 
      FORTH        --                            ONLY
          The name of the primary vocabulary.  Execution makes FORTH
          the transient vocabulary, the first in the search order, and
          thus replaces the previous transient vocabulary.
</pre>
 
=== FORTH в стандарте Forth-79 (англ.) ===
FORTH                                        I,187
    The name of the primary vocabulary.  Execution makes FORTH the
    CONTEXT  vocabulary.  New  definitions become a part  of  the
    FORTH  until  a differing CURRENT vocabulary  is  established.
    User  vocabularies  conclude by 'chaining'  to  FORTH,  so  it
    should  be  considered that FORTH is 'contained'  within  each
    user's vocabulary.
 
=== FORTH в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
FORTH                                        P,L1
        The name of the primary vocabulary.
        Execution makes FORTH the CONTEXT vocabulary. Until additional user
        vocabularies are defined, new user definitions become a part of
        FORTH. FORTH is immediate, so it will execute during the creation of
        a colon-definition, to select this vocabulary at compile time.
 
== Реализация ==
В [[Каллисто|Каллисто 1.0]] слово FORTH находится в [[Память двоичных данных|памяти данных]], куда его переносит из своего [[Поле данных|поля данных]] слово [[COLD]]:
<pre>
455 ; Эти две статьи (27 байт) COLD переносит в словарь в области двоичных регистров
456 ; Их поле данных сможет меняться
457 ;
458 ;#FORTH
459 ; FORTH            ( −− )                              Сделать набор слов FORTH контекстным.
460 ; LFORTH:
461                .DB    5                      ; 11143 = 2b87 = LFORTH:
462                .TEXT  "FORTH"                ; 11144:
463                .DW    LLOADQ                  ; 11149:
464                .DW    SDOEP                  ; 11151 = 2b8f = FORTH: (xt)
465                .DW DOVOC                      ; 11153: Обработчик VOCABULARY для DOES>
466                .DB 1,20H                      ; 11155: псевдозаголовок первого слова
467                .DB 2bH,99H                    ; 11157: ссылка на LTASK в новой адресации
468
469                                                ; Этим адресом инициализируется VOC−LINK
470                .DW    0                      ; 11159 = 2b97 = XVOC: Это должно быть уже в байтовой памяти
</pre>
Реализация из SP-Forth 4.20:
<pre>
WORDLIST VALUE FORTH-WORDLIST  ( -- wid ) \ 94 SEARCH
\ Возвратить wid - идентификатор списка слов, включающего все стандартные
\ слова, обеспечиваемые реализацией. Этот список слов изначально список
\ компиляции и часть начального порядка поиска.
: FORTH ( -- ) \ 94 SEARCH EXT
\ Преобразовать порядок поиска, состоящий из widn, ...wid2, wid1 (где wid1
\ просматривается первым) в widn,... wid2, widFORTH-WORDLIST.
  FORTH-WORDLIST CONTEXT !
;
</pre>
 
=== Советская реализация ===
Описание и определение слова FORTH в ядре ФОРТ-ЕС:
<PRE>
FORTH    -> УСТАНОВИТЬ "CONTEXT" НА НАЧАЛЬНЫЙ СПИСОК          33
FORTH#  A  PFA+2 ДЛЯ СЛОВАРНОЙ СТАТЬИ "FORTH"                  33
 
                    Экран номер 33
( 09.09.86    FORTH FORTH# FL# VOC-LINK VOCABULARY VOCABULARY#)
 
VOC FORTH  &DWORD  H,                        ( FORTH-83)
A: FORTH#  LASTWORD  ( ВХОД В СПИСОК СЛОВАРНЫХ СТАТЕЙ)
A: FL# 0 Н,  ( ПОЛЕ СВЯЗИ ДЛЯ СПИСКОВ СТАТЕЙ)
CREATE VOC-LINK FL# ( ВХОД В СПИСОК СПИСКОВ СТАТЕЙ)
</PRE>
Определение слова FORTH в FORTH ИТЭФ:
<PRE>
            HEAD    305Q,'FORT',310Q,FORTH,$DOE          ; FORTH
            DW  DOVOC,120201Q,TASK-7
  XVOC      LABEL  FAR
            DW  0
</PRE>
 
=== colorForth (cf2019.nasm 2019 Sep 14) ===
<PRE>
sdefine:
    pop dword [ adefine ]
    ret
 
forth:      ; select the Forth wordlist
    call sdefine
forthd:
    push _TOS_
    mov ecx, [ v_ForthWordCount ]
    inc dword [ v_ForthWordCount ]
    lea ecx, [ ( ecx * 4 ) + ForthNames ]
    mov _TOS_, ( ForthJumpTable - ForthNames )
forthdd:
    mov edx, [ ( edi * 4 ) - 0x04 ]
    and edx, byte -0x10
    mov [ecx], edx
    mov edx, [ v_H ]
    mov [ecx+_TOS_], edx
    lea edx, [ecx+_TOS_]
    shr edx, 0x02
    mov [ v_last ], edx
    pop _TOS_
    mov [ list ], esp
    mov dword [ lit ], adup
    test dword [ class ], -1
    jz .fthd
    jmp dword [ class ]
.fthd:
    ret
</PRE>
 
== Ссылки ==
* {{Исходник|FORTH|FORTH}}
* Слова [http://forth.sourceforge.net/standard/dpans/dpans16.htm#16.6.2.1590 FORTH] и [http://forth.sourceforge.net/standard/dpans/dpans16.htm#16.6.1.1595 FORTH-WORDLIST] в стандарте ANS Forth ''(англ.)''
* Слова [http://forth-standard.org/standard/search/FORTH FORTH] и [http://forth-standard.org/standard/search/FORTH-WORDLIST FORTH-WORDLIST] в черновике Forth 200x ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\09.FUNKZIONIROWANIE%20FORT-SISTEMY ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
 


{{нет иллюстраций}}
{{нет иллюстраций}}
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Управление поиском слов]]
[[Категория:Стандартные слова]]
[[Категория:1994 SEARCH EXT]]
[[Категория:2012 SEARCH EXT]]

Текущая версия от 14:46, 30 июня 2021

FORTH (Форт) — стандартное слово Каллисто.

FORTH          ( −− )                               Сделать набор слов FORTH контекстным.

Слово FORTH делает одноимённый набор слов контекстным.

Ввод слова FORTH[править]

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

FORTH и FORTH-WORDLIST в стандарте ANS Forth[править]

 16.6.2.1590   FORTH                                                  SEARCH EXT
            ( -- )
            Преобразует порядок поиска, состоящий из widn, ... wid2, wid1 (где 
            wid1 просматривается первым) в widn, ... wid2, wid FORTH-WORDLIST.

 16.6.1.1595   FORTH-WORDLIST                                             SEARCH
            ( -- wid )
            Возвращает wid, идентификатор списка слов, который включает все 
            стандартные слова, предоставленные реализацией. Этот список слов - 
            первоначально список слов компиляции и - часть начального порядка 
            поиска.

История[править]

Начиная с Форта-83, слово FORTH больше не имеет признака немедленного исполнения. При переводе определений слов с fig-Форта и Форта-79, используйте последовательность [ FORTH ]

FORTH в предыдущем стандарте Forth-83 (англ.)[править]

      FORTH        --                            83
           The name of the primary vocabulary.  Execution replaces the
           first vocabulary in the search order with FORTH .  FORTH is
           initially the compilation vocabulary and the first
           vocabulary in the search order.  New definitions become part
           of the FORTH vocabulary until a different compilation
           vocabulary is established.  See:  VOCABULARY

      FORTH        --                            ONLY
           The name of the primary vocabulary.  Execution makes FORTH
           the transient vocabulary, the first in the search order, and
           thus replaces the previous transient vocabulary.

FORTH в стандарте Forth-79 (англ.)[править]

FORTH                                        I,187
    The name of the primary vocabulary.  Execution makes FORTH the
    CONTEXT  vocabulary.   New  definitions become a part  of  the
    FORTH  until  a differing CURRENT vocabulary  is  established.
    User  vocabularies  conclude by 'chaining'  to  FORTH,  so  it
    should  be  considered that FORTH is 'contained'  within  each
    user's vocabulary.

FORTH в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

FORTH                                         P,L1
       The name of the primary vocabulary.
       Execution makes FORTH the CONTEXT vocabulary. Until additional user
       vocabularies are defined, new user definitions become a part of
       FORTH. FORTH is immediate, so it will execute during the creation of
       a colon-definition, to select this vocabulary at compile time.

Реализация[править]

В Каллисто 1.0 слово FORTH находится в памяти данных, куда его переносит из своего поля данных слово COLD:

 455 ; Эти две статьи (27 байт) COLD переносит в словарь в области двоичных регистров
 456 ; Их поле данных сможет меняться
 457 ;
 458 ;#FORTH
 459 ; FORTH            ( −− )                               Сделать набор слов FORTH контекстным.
 460 ; LFORTH:
 461                 .DB     5                       ; 11143 = 2b87 = LFORTH:
 462                 .TEXT   "FORTH"                 ; 11144:
 463                 .DW     LLOADQ                  ; 11149:
 464                 .DW     SDOEP                   ; 11151 = 2b8f = FORTH: (xt)
 465                 .DW DOVOC                       ; 11153: Обработчик VOCABULARY для DOES>
 466                 .DB 1,20H                       ; 11155: псевдозаголовок первого слова
 467                 .DB 2bH,99H                     ; 11157: ссылка на LTASK в новой адресации
 468 
 469                                                 ; Этим адресом инициализируется VOC−LINK
 470                 .DW     0                       ; 11159 = 2b97 = XVOC: Это должно быть уже в байтовой памяти

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

WORDLIST VALUE FORTH-WORDLIST  ( -- wid ) \ 94 SEARCH
\ Возвратить wid - идентификатор списка слов, включающего все стандартные 
\ слова, обеспечиваемые реализацией. Этот список слов изначально список 
\ компиляции и часть начального порядка поиска.
…
: FORTH ( -- ) \ 94 SEARCH EXT
\ Преобразовать порядок поиска, состоящий из widn, ...wid2, wid1 (где wid1 
\ просматривается первым) в widn,... wid2, widFORTH-WORDLIST.
  FORTH-WORDLIST CONTEXT !
;

Советская реализация[править]

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

FORTH     -> УСТАНОВИТЬ "CONTEXT" НА НАЧАЛЬНЫЙ СПИСОК           33
FORTH#  A  PFA+2 ДЛЯ СЛОВАРНОЙ СТАТЬИ "FORTH"                   33

                     Экран номер 33
( 09.09.86    FORTH FORTH# FL# VOC-LINK VOCABULARY VOCABULARY#)

VOC FORTH   &DWORD  H,                         ( FORTH-83)
A: FORTH#  LASTWORD  ( ВХОД В СПИСОК СЛОВАРНЫХ СТАТЕЙ)
A: FL# 0 Н,  ( ПОЛЕ СВЯЗИ ДЛЯ СПИСКОВ СТАТЕЙ)
CREATE VOC-LINK FL# ( ВХОД В СПИСОК СПИСКОВ СТАТЕЙ)

Определение слова FORTH в FORTH ИТЭФ:

             HEAD    305Q,'FORT',310Q,FORTH,$DOE          ; FORTH
             DW  DOVOC,120201Q,TASK-7
   XVOC      LABEL   FAR
             DW  0

colorForth (cf2019.nasm 2019 Sep 14)[править]

sdefine:
    pop dword [ adefine ]
    ret
…

forth:      ; select the Forth wordlist
    call sdefine
forthd:
    push _TOS_
    mov ecx, [ v_ForthWordCount ]
    inc dword [ v_ForthWordCount ]
    lea ecx, [ ( ecx * 4 ) + ForthNames ]
    mov _TOS_, ( ForthJumpTable - ForthNames )
forthdd:
    mov edx, [ ( edi * 4 ) - 0x04 ]
    and edx, byte -0x10
    mov [ecx], edx
    mov edx, [ v_H ]
    mov [ecx+_TOS_], edx
    lea edx, [ecx+_TOS_]
    shr edx, 0x02
    mov [ v_last ], edx
    pop _TOS_
    mov [ list ], esp
    mov dword [ lit ], adup
    test dword [ class ], -1
    jz .fthd
    jmp dword [ class ]
.fthd:
    ret

Ссылки[править]


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


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