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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 18: Строка 18:
         May be called from the terminal to remove application programs and
         May be called from the terminal to remove application programs and
         restart.
         restart.
== Реализация ==
[[Каллисто|Каллистянское]] слово COLD в FORTH ИТЭФ называется INI (первые три буквы английского слова ''initialization'', инициализация). INI начинается с ассемблерного кода, после чего инициализирует регистры и переходит исполнению шитого кода:
<pre>
      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
</pre>


== Ссылки ==
== Ссылки ==

Версия от 09:26, 27 марта 2016

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

Ссылки


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