COLD

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

COLD («холодный» старт) — стандартное слово Каллисто. «Холодная» перезагрузка.

COLD           ( -- )

Словарь приводится в исходное состояние. Все слова, определённые после стандартного слова TASK, удаляются. COLD не возвращает управление назад. Всё, идущее после COLD, игнорируется.

Ввод слова COLD

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

Детали реализации

COLD это первая словарная статья. Это примитив, то есть COLD написан на ЯМК. COLD инициализирует регистры ЭКВМ, использующиеся Каллисто, включая оба словаря — двоичный и десятичный, после чего передаёт управление на адресный интерпретатор, который начинает исполнение шитого кода.

Высокоуровневая часть COLD выводит на экран номер версии Каллисто, после чего передаёт управление слову WARM.

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

COLD
       The cold start proceedure to adjust the dictionary pointer to
       the minimum standard and restart via ABORT.
       May be called from the terminal to remove application programs and
       restart.

Реализация

Каллистянское слово COLD в FORTH ИТЭФ называется INI (первые три буквы английского слова initialization, инициализация). INI начинается с ассемблерного кода, после чего инициализирует регистры и переходит исполнению шитого кода:

       ASSUME  CS:ARRAY, DS:ARRAY, ES:ARRAY, SS:STACK

   $INI      PROC    FAR
             JMP  ENT
   ; ** PRIMITIVES **

             HEAD    203Q,'IN',311Q,INIT                  ;INI
   ENT:      MOV   CX, ARRAY
             MOV   DS, CX          ; Установка DX
             MOV   ES, CX
             MOV   BX, $US
             MOV   AX, $STI        ; Восстановление словаря
             LEA   SI, FORTH+6
             MOV   [SI], AX
             MOV   SI, $BUF
             MOV   CX, 1730        ; Установка счетчика
   XXX:      MOV   WORD PTR [SI],0 ; Обнуление массивов
             ADD   SI, 2
             LOOP  XXX

   ; INIT 'OFFSET, USE, PREV

             MOV   CX, $BUF         ; TO 'USE'
             MOV   [BX]+72Q,CX
             MOV   [BX]+74Q,CX      ; ?
             MOV   CX, 14Q          ; Установка счетчика USER
             MOV   DI, $US          ; Запись адреса области USER
             ADD   DI, 6
             LEA   SI, $STK         ; Запись начального адреса
   REP       MOVS  WORD PTR ES:[DI],HORD PTR DS:[SI]
             MOV   BP, $RS          ; Установка начального значения
             MOV   DI, $US          ; указателя стека возвратов
             MOV   WORD PTR [DI+32Q],7  ; Установка цвета
             MOV   WORD PTR [DI+42Q],0  ; Сброс флага печати
             LEA   SI, G0$
             NEXT
   G0$:      DW SPSTO,DEC,FORTH,DEFIN,ONE,LOAD
   $INI      ENDP

Ссылки


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