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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
 
Строка 46: Строка 46:
: THRU ( N1,N2->)  ИНТЕРПРЕТИРОВАТЬ БЛОКИ ОТ N1 ДО N2)
: THRU ( N1,N2->)  ИНТЕРПРЕТИРОВАТЬ БЛОКИ ОТ N1 ДО N2)
   1+ SWAP DO I LOAD LOOP ;
   1+ SWAP DO I LOAD LOOP ;
</PRE>
=== colorForth (cf2019.nasm 2019 Sep 14) ===
<PRE>
; : THRU ( f l -- )  1+ SWAP DO  I LOAD  LOOP ;
thru_:  ; ( first last -- )  \ load from the first to the last block
    add _TOS_, 0x02
    mov _SCRATCH_, _TOS_
    _DROP_                          ; TOS = first, SCRATCH = last
    mov ecx, _SCRATCH_
    sub ecx, _TOS_                  ; ecx = count
    jz .end                        ; exit if count is zero
    jc .end                        ; exit if count is negative
    shr ecx, 1                      ; divide by 2, as we skip 2 blocks each time round the loop
.back:
    _DUP_
    _DUP_  ; just to be safe...
    push ecx
    push _SCRATCH_
    call _load_
    pop _SCRATCH_
    pop ecx
    _DROP_  ; just to be safe...
    add _TOS_, 0x02
    loop .back
.end:
    _DROP_
    ret
</pre>
</pre>



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

THRU — стандартное слово Каллисто. Загрузить несколько экранов.

THRU           ( c1 c2 −− )                         Интерпретировать экраны с номерами от c1 до c2 включительно.

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

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

THRU в стандарте ANS Forth[править]

7.6.2.2280   THRU                                                     BLOCK EXT
            ( i*x u1 u2 -- j*x )
            LOAD последовательные блоки из запоминающего устройства с номерами 
            с u1 по u2. Другое состояние стека из-за интерпретации слов с 
            помощью LOAD.

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

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

         THRU         u1 u2 --                      M,83                 
              Load consecutively the blocks from u1 through u2.

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

THRU           n1 n2 --
    Load consecutively the blocks from n1 through n2.

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

3595 ;#THRU
3596 ; THRU             ( c1 c2 −− )                         Интерпретировать экраны с номерами от c1 до c2 включительно.
3597 LTHRU:          .DB     4
3598                 .TEXT   "THRU"                  ; ( первый последний −− )
3599                 .DW     LSEMIS
3600 THRU:           .DW CALL, OVER,SUB,ONEP, XFOR,THRU2
3601 THRU1:          .DW DUP,LOAD, ONEP, XNEXT,THRU1
3602 THRU2:          .DW DROP, EXIT

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

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

THRU     + +N1,+N2-> ИНТЕРПРЕТИРОВАТЬ ЭКРАНЫ С НОМЕРАМИ        41
             ОТ +N1 ДО +N2 ВКЛЮЧИТЕЛЬНО

                    Экран номер 41
( 31.03.86  -TRAILING  ' ['] [COMPILE] LOAD THRU ;S  --> )

: THRU ( N1,N2->)  ИНТЕРПРЕТИРОВАТЬ БЛОКИ ОТ N1 ДО N2)
  1+ SWAP DO I LOAD LOOP ;

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

; : THRU ( f l -- )   1+ SWAP DO  I LOAD  LOOP ;
thru_:  ; ( first last -- )   \ load from the first to the last block
    add _TOS_, 0x02
    mov _SCRATCH_, _TOS_
    _DROP_                          ; TOS = first, SCRATCH = last
    mov ecx, _SCRATCH_
    sub ecx, _TOS_                  ; ecx = count
    jz .end                         ; exit if count is zero
    jc .end                         ; exit if count is negative
    shr ecx, 1                      ; divide by 2, as we skip 2 blocks each time round the loop
.back:
    _DUP_
    _DUP_   ; just to be safe...
    push ecx
    push _SCRATCH_
    call _load_
    pop _SCRATCH_
    pop ecx
    _DROP_  ; just to be safe...
    add _TOS_, 0x02
    loop .back
.end:
    _DROP_
    ret

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


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


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