TASK

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

TASK (читается «таск») — фортовское слово Каллисто.

TASK           ( −− )                               Последнее слово ядра Каллисто.

Последнее встроенное слово в словаре.

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

В режиме ЛАТ последовательно нажмите четыре клавиши  2  $\mathrm{\overset{\leftarrow}{ШГ}}$  1   9 

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

Слово TASK появилось в 1970 году, когда Чак Мур перенёс Форт на ассемблер Univac 1108 для программирования системы ввода заказов по сети выделенных линий в Mohasco Industries, Inc (Amsterdam NY, англ.).

Слово TASK определяло задачу во время загрузки и ACTIVATE запускало её, когда требовалось. Схожую задачу в Каллисто выполняет переменная APP.

В Форте слово TASK часто использовалось в паре с оператором FORGET — команда FORGET TASK выбрасывала из памяти все слова, кроме стандартных, приводя его в начальное состояние. Если сразу после FORGET TASK создать слово TASK — например командой

: TASK ;

система вернётся примерно в то положение, в котором была при старте и приложения можно компилировать заново.

В стандартной поставке Каллисто слово TASK является последним в словаре, но оператор FORGET пришлось исключить. При необходимости программист может определить собственный оператор FORGET — но после FORGET TASK ему придётся слово FORGET компилировать заново.

Действие чуть суровее, чем  FORGET TASK , выполняет слово COLD.

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

TASK
       A no-operation word which can mark the boundary between
       applications.
       By forgetting TASK and re-compiling, an application can be discarded
       in its entirety.

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

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

 207 JNOP:           KGOTO9                          ; Обработчик NOP
…
 472 ;#TASK
 473 ; TASK             ( −− )                               Последнее слово ядра Каллисто.
 474 ; В Форте слово TASK чаще всего используется оператором FORGET для сброса словаря в начальное состояние.
 475 ;LTASK:
 476                 .DB     4                       ; 11161 = 2b99 = LTASK
 477                 .TEXT   "TASK"                  ; 11162:
 478                 .DB     2bH,87H                 ; 11166: 11143 rrDict, ссылка на LFORTH в единой адресации
 479                 .DW     JNOP                    ; 11168 = TASK: (xt)

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

: TASK ( xt1 -- xt2 )
  CELL EXTERN
  HERE SWAP
  ['] _WNDPROC-CODE COMPILE,
  ,
;

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

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

             HEAD    204Q,'TAS',313Q,TASK,$COL            ; TASK
             DW  SEMI

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


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


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