SMUDGE
SMUDGE — стандартное слово Каллисто. Сделать слово видимым/невидимым.
SMUDGE ( −− ) Изменить признак видимости последней созданной статьи.
Изменить флаг "SMUDGE" последней созданной статьи.
Ввод слова SMUDGE[править]
В режиме ЛАТ последовательно нажмите клавиши 1 ÷ 3 K БП ИП
История[править]
В 1968 году Чак Мур работал в Mohasco Industries, Inc (Amsterdam NY, англ.). Первая версия интерпретатора, получившая название FORTH, заработала на миникомпьютере IBM 1130 с графическим дисплеем 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт). Первый FORTH знал слово SMUDGE
SMUDGE избегает рекурсии во время интерпретации определения. Так как в словаре поиск происходит от новейшего определения к старейшему, обычно возникала бы рекурсия. Слово SMUDGE позволяет расширять определения слов. При этом новое слово может ссылаться на старое, с тем же именем.
В FORTH ИТЭФ слово называется SMUG
В других реализациях вместо SMUDGE есть слова HIDE и REVEAL — устанавливающие и сбрасывающие бит невидимости.
В некоторых системах маска бита невидимости представляет собой константа &HIDDEN
В colorForth Чак Мур отказался от признака невидимости и специальных слов для организации явных циклов. Определяемое слово сразу доступно для рекурсии. За счёт того, что в colorForth ; меняет последний вызов на безусловный переход (оптимизация хвостовой рекурсии), следующая последовательность компилируется в цикл:
: СЛОВО … IF … СЛОВО ; THEN … ;
SMUDGE в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
SMUDGE Used during word definition to toggle the "smudge bit" in a definitions' name field. This prevents an uncompleted definition from being found during dictionary searches, until compiling is completed without error.
Реализация[править]
3064 ;#SMUDGE 3065 ; SMUDGE ( −− ) Изменить признак невидимости последней созданной статьи. 3066 LSMUG: .DB 6 3067 .TEXT "SMUDGE" 3068 .DW LCOMP ; Изменить флаг "SMUDGE" в последней созданной статье. 3069 SMUG: .DW CALL ; LAST BL TOGGLE 3070 RSMUG: .DW LATES,BL,TOGL, EXIT ; BL == 32
Реализация из SP-Forth 4.20:
USER C-SMUDGE \ 12 C, \ smudge исправлено ~nemnick 29.11.2000 : SMUDGE ( -- ) LATEST IF C-SMUDGE C@ LATEST 1+ C@ C-SMUDGE C! LATEST 1+ C! THEN ; : HIDE 12 C-SMUDGE C! SMUDGE ; … : REVEAL SMUDGE ;
Советская реализация[править]
Юрий Семёнов приводит следующее определение слова SMUDGE (стр. 71):
: SMUDGE LAST BL TOGGLE ;
Можно заметить, что при таком определении слово BL используется не по прямому назначению (получение кода пробела), а как битовая карта, в которой признак невидимости является единственным установленным битом.
Ядро ФОРТ-ЕС использовал слова SMUDGE и UNSMUDGE
Вот их описания и определения:
SMUDGE *-> УСТАНОВИТЬ В ЕДИНИЦУ ФЛАГ "SMUDGE" 31 В ПОСЛЕДНЕЙ СОЗДАННОЙ СТАТЬЕ UNSMUDGE * -> УСТАНОВИТЬ В НУЛЬ ФЛАГ "SMUDGE" 31 В ПОСЛЕДНЕЙ СОЗДАННОЙ СТАТЬЕ Экран номер 31 ( 31.03.86 LATEST DEFINITIONS SMUDGE UNSMUDGE IMMEDIATE ID.) : SMUDGE ( ->) LATEST С@ [ &SFLAG ] LITERAL OR LATEST C! ; : UNSMUDGE ( ->) LATEST С@ [ 255 &SFLAG - ] LITERAL AND LATEST С! ;
Слово SMUDGE в FORTH ИТЭФ называлось SMUG
Вот его определение:
HEAD 204Q,'SMU',307Q,SMUG,$COL ; SMUDGE DW LATES,BLAN,TOGL,SEMI
Ссылки[править]
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |