ABORT

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

ABORT (выброс, читается «аборт») — стандартное слово Каллисто.

ABORT          ( −− )                               Очищает стек, устанавливает набор слов FORTH и молча делает QUIT.

Очищает стеки возвратов и данных, устанавливает состояние исполнения. Делает набор слов FORTH контекстным, исполняет QUIT для передачи управления на пульт Каллисто (BLK=0).

Слово ABORT используется при инициализации среды, обработке всевозможных ошибок и выходе системы из нештатных ситуаций.

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

В режиме ЛАТ последовательно нажмите клавиши $\mathrm{\overset{\leftarrow}{ШГ}}$  В/О   5   ×   2 

ABORT в стандарте ANS Forth[править]

 6.1.0670   ABORT                                                           CORE
            ( i*x -- ) ( R: j*x -- )
            Освобождает стек данных и выполняет функцию QUIT, которая включает 
            освобождение стека возвратов, без отображения сообщения.

        См.: 9.6.2.0670 ABORT.

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

Слово ABORT появилось в 1958 году в самой первой версии интерпретатора Форта, написанного Чак Муром на Фортране для IBM EDPM 704 для САО. Тогда оно ещё не называлось ABORT, так в то время команды Форта кодировались числами.

Обработка ошибок заключалась в прекращении исполнения. Затем, как и позже, ABORT спрашивал пользователя, что делать. Поскольку вводимые перфокарты перечислялись по мере ввода, вы знали, где допущена ошибка.

Хотя с 1983 года стандарт Форта запрещает это, в некоторых системах ABORT распечатывал имя интерпретатора.

ABORT в предыдущем стандарте Forth-83 (англ.)[править]

     ABORT                                      79
          Clears the data stack and performs the function of QUIT .
          No message is displayed.

ABORT в стандарте Forth-79 (англ.)[править]

ABORT                                        101
    Clear  the  data and return stacks,  setting  execution  mode.
    Return control to the terminal.

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

ABORT                                           L0
       Clear the stacks and enter the execution state. Return control to
       the operators terminal, printing a message appropriate to the
       installation.

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

3442 ;#ABORT
3443 ; ABORT            ( −− )                               Очистить стек, установив набор слов FORTH, и молча сделать QUIT.
3444 ; Прервать исполнение, сделать набор FORTH контекстным, исполнить QUIT
3445 ; Используется при инициализации системы, обработке всевозможных ошибок
3446 ; и выходе системы из нештатных ситуаций.
3447 LABORT:         .DB     5
3448                 .TEXT   "ABORT"
3449                 .DW     LQUIT
3450 ABORT:          .DW CALL
3451 RABORT:         .DW SPSTO, RAD, DEC
3452                 .DB 2bH,8fH                     ; 11151 FORTH (токен)
3453                 .DW DEFIN, BRAN,RQUIT

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

: ABORT  \ 94 EXCEPTION EXT
\ Расширить сематику CORE ABORT чтобы было:
  ( i*x -- ) ( R: j*x -- )
\ Выполнить функцию -1 THROW
  -1 THROW
;
0 VALUE THROW-CODE
…
: THROW
     STATE @ IF
     OPT_INIT OP0 @ C@ 0xB8 = 0 AND
     IF  0xE9 C,              \ машинная команда JMP
         THROW-CODE  DP @ CELL+ - ,
\          DP @ TO LAST-HERE
         EXIT 
     THEN
     OPT_CLOSE
     0x850FC00B , \  or eax, eax \  jnz near
     THROW-CODE DP @ CELL+ - ,
     'DROP    INLINE,
     ELSE THROW
     THEN ; IMMEDIATE

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

Юрий Семёнов приводит следующее определение слова ABORT (стр. 56):

 : ABORT   !SP ( установка указателя стека параметров в началь-
                 ное состояние)
           DECIMAL    ( установка десятичной системы счисления)
           ↵ ." FORTH-PC IS HERE"    ( сообщение о готовности)
           FORTH DEFINITIONS ( словарь Форт сделан контекстным)
           QUIT ;                 ( вход в  QUIT-петлю )

Слово ABORT в ядре ФОРТ-ЕС называется QUIT

При этом стандартное слово QUIT переименовано в ФОРТ-СИСТЕМА

Судя по первой строчке экрана № 28 и индексу, это изменение внесли в последнюю минуту перед публикацией — что, возможно, сделало опубликованный исходный текст некомпилируемым из-за отсутствия в нём слова ABORT

Вот их описание и определение QUIT из ФОРТ-ЕС, которое соответствует слову ABORT из Каллисто:

ABORT    СБРОСИТЬ СТЕК И УЙТИ ПО "QUIT"                         28
QUIT         СБРОСИТЬ СТЕК ВОЗВРАТОВ, ПЕРЕЙТИ В РЕЖИМ           28
             ИСПОЛНЕНИЯ И ПРОДОЛЖИТЬ ИНТЕРПРЕТАЦИЮ

                     Экран номер 28
( 31.03.86 LIT" COUNT ," " ". (."/ ." C" ( ,( QUIT ABORT )

: QUIT  ( ->) [COMPILE] [  S0 @ SP! R0 @ RP!  ФОРТ-СИСТЕМА ;

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

             HEAD    205Q,'ABOR',324Q,ABORT,$COL          ; ABORT
             DW  SPSTO,DEC,CR,PDOTQ
             DB  17,'FORTH-PC IS HERE '
             DW  FORTH,DEFIN,QUIT

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


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


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