THRU: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
Строка 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
Ссылки[править]
- Исходный текст слова THRU в Каллисто Классик 1.0
- Слово THRU в стандарте ANS Forth, набор слов BLOCK (англ.)
- Слово THRU в черновике Forth 200x (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |