ENCLOSE

Материал из ПМК вики
Перейти к навигации Перейти к поиску

ENCLOSE (окружить) — стандартное слово Каллисто.

Ввод слова ENCLOSE

В режиме ЛАТ последовательно нажмите клавиши  ИП   4   С/П      5   1   ИП 

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

ENCLOSE addr1 c -- addr1 n1 n2 n3
       The text scanning primitive used by WORD. From the text address
       addr1 and an ascii delimiting character c, is determined the byte
       offset to the first non-delimiter character n1, the offset to the
       first delimiter after the text n2, and the offset to the first
       character not included.
       This proceedure will not process past an ascii 'null', treating it
       as an unconditional delimiter.

Реализация

Слово ENCLOSE в ФОРТ-ЕС было примитивом. Вот его описание и определение:

ENCLOSE  * A,C->A,N1,N2,N3 ВВОД СЛОВА                           27

                     Экран номер 27
( 31.03.66    ENCLOSE  WORD )

CODE ENCLOSE ( A,C->A,N1,N2,N3) 14  LHRW12 BAL, RW1 RMASK NR,
  RW1 RFORTH AR,  14 14 SR,   0 0 SR,
 BEGIN,   0 0 (, 14  RW1 IC,   0 0 LTR,   2 =F  BZ,
     14 1 (, 0 14 LA, 0 RW2 CR, ?NE UNTIL,  14 0 BCTR,
2 =Н 14 PUT,
BEGIN,   1 14 LR,  0 0 (, 1 RW1 IC, 0 0 LTR,
  2 =F BZ,  14 1 (, 0 14 LA, 0 RW2 CR,   ?E UNTIL,
2 =Н  1 PUSH, RW1 14 LR,   PUSHRW1 В, END-CODE

В FORTH ИТЭФ слово ENCLOSE называлось ENCL и также было примитивом, вот его определение:

   ;         ******************

             HEAD    204Q,'ENC',314Q,ENCL                 ; ENCLOSE
             POP   AX         ; разделитель

             POP   CX         ; начальный адрес
             MOV   BX, CX
   A:        CMP   BYTE PTR  [BX], AL ; обход разделителей в начале
             JNE   NOTEQ
   AAA:      INC   BX
             JMP   A
   NOTEQ:    CMP   BYTE PTR  [BX], 15Q
             JE    AAA
             CMP   BYTE PTR  [BX], 12Q
             JE    AAA
             MOV   DX, BX               ; начало лексемы
             PUSH  DX
   AA:       CMP   BYTE PTR  [BX],  0
             JE    ZZZ                  ; если нуль
             CMP   BYTE PTR  [BX], AL  ; не нуль, ищем конец лексемы
             JE    QW
             INC   BX
             JMP   AA
   EQW:      MOV   AX, BX
             SUB   BX, DX
             PUSH  BX
             SUB   AX, CX
             INC   AX
             PUSH  AX
             NEXT
   ZZZ:      CHP   BX, DX
             JNE   EQW
             INC   BX
             JMP   EQW


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


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