LOAD

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

LOAD (загрузить) — стандартное слово Каллисто.

LOAD           ( c −− )                             Загрузить с диска и интерпретировать экран номер c.
Пример работы слова LOAD

Загружает экран с номером u (компилирует или исполняет).

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

Ввод слова LOAD

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

Важное примечание

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

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

Сразу после загрузки экрана сохраните результат с помощью команды SAVE", ведь команда объектной загрузки LOAD" работает намного быстрее. Повторная компиляция необходима только в случае изменения исходного кода приложения или при переходе на новую версию Каллисто.

Для экономии времени можно компилировать экраны на эмуляторе, с последующей передачей файлов двоичного сохранения на ЭКВМ. При таком подходе важно использовать ту же самую версию Каллисто и на компьютере, и на ЭКВМ.

Экран, загружаемый словом LOAD, может привести к авосту.

LOAD в стандарте ANS Forth

 7.6.1.1790   LOAD                                                         BLOCK
            ( i*x u -- j*x )
            Сохраняет текущую спецификацию входного источника. Записывает u в 
            BLK (таким образом делает блок u входным источником, и 
            устанавливает входной буфер в соответствии с его содержимым), 
            обнуляет >IN, и интерпретирует. Когда область анализа исчерпана, 
            восстанавливает предыдущую спецификацию входного источника. Другое 
            состояние стека из-за интерпретации слов с помощью LOAD.

            Неопределенная ситуация существует, если u нулевой или - не 
            допустимый номер блока.

        См.: 3.4 Интерпретатор текста Forth.

История

В 1968 году Чак Мур работал в Mohasco Industries, Inc (Amsterdam NY, англ.). Первая версия интерпретатора, получившая название FORTH, заработала на миникомпьютере IBM 1130 с графическим дисплеем 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт). Первый FORTH знал слово LOAD под именем READ

Слово LOAD считывало исходный код из блока размером в 1024 символа.

В MMSFORTH слово LOADS позволяло загрузить сразу несколько последовательных блоков.

LOAD в предыдущем стандарте Forth-83 (англ.)

     LOAD         u --                          M,79
          The contents of >IN and BLK , which locate the current input
          stream, are saved.  The input stream is then redirected to
          the beginning of screen u by setting >IN to zero and BLK to
          u.  The screen is then interpreted.  If interpretation from
          screen u is not terminated explicitly it will be terminated
          when the input stream is exhausted and then the contents of
          >IN and BLK will be restored.  An error condition exists if
          u is zero.  See:  >IN  BLK  BLOCK

LOAD в стандарте Forth-79 (англ.)

LOAD           n --                          202
    Begin  interpretation  of  screen n by  making  it  the  input
    stream;  preserve  the  locators of the present  input  stream
    (from  >IN  and  BLK).   If interpretation is  not  terminated
    explicitly  it  will be terminated when the  input  stream  is
    exhausted.    Control   then  returns  to  the  input   stream
    containing  LOAD,  determined by the input stream locators >IN
    and BLK.

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

LOAD          n  ---                            L0
       Begin interpretation of screen n.
       Loading will terminate at the end of the screen or at ;S. See ;S and
       -->.

Реализация

3574 ;#LOAD
3575 ; LOAD             ( c −− )                             Загрузить с диска и интерпретировать экран номер c.
3576 LLOAD:          .DB     4
3577                 .TEXT   "LOAD"                  ; ( i∗x №блока −− j∗x)
3578                 .DW     LMESS                   ; Загрузить экран с номером u (компилирует или исполняет)
3579 LOAD:           .DW CALL, BLK,UAT,TOR, IN,UAT,TOR, IN,ZSTORE, BLK,STORE
3580                 .DW INTER, FROMR,IN,STORE, FROMR,BLK,STORE, EXIT

Советская реализация

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

 : LOAD   BLK @ >IN @        ( в стеке номер загружаемого экрана N,
                              старые значения переменных BLK и >IN)
          0 >IN !           ( обнуление указателя экранного буфера)
          ROT                                ( в стеке  BLK,>IN,N )
          BLK !                        ( BLK=N, в стеке  BLK, >IN )
          INTERPRET         ( загрузка и интерпретация текста блока
                              с номером BLK слово за словом)
          >IN !             ( восстановление прежнего значения >IN)
          BLK ! ;           ( восстановление прежнего значения BLK)

Там же на стр. 158 приводится более длинное определение, позволяющее описывать слова, размещённые на двух или более экранах:

 : LOAD   BLK @ >R >IN @ >R 0 >IN ! BLK ! INTERPRET R> >IN ! R> BLK ! ;

У Баранова-Ноздрунова определение слова LOAD выглядит так (стр. 80):

: LOAD  ( N:Номер ---> Интерпретировать экран)
  >IN  @  >R  BLK  @  >R  ( Сохранить текущий)
  BLK  !  0  >IN  !  ( Установить новый)
  INTERPRET  ( Проинтерпретировать его)
  R> BLK !  R> >IN ! ; ( Вернуться к прежнему)

Описание и определение слова LOAD в ядре ФОРТ-ЕС:

LOAD      +N-> ИНТЕРПРЕТИРОВАТЬ ЭКРАН С НОМЕРОМ +N              41

                    Экран номер 41
( 31.03.86  -TRAILING  ' ['] [COMPILE] LOAD THRU ;S  --> )

: LOAD ( N->  ИНТЕРПРЕТИРОВАТЬ БЛОК С НОМЕРОМ N)
     >IN @ >R BLK @ >R BLK ! >IN 0! INTERPRET R> BLK ! R> >IN ! ;

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

             HEAD    204Q,'LOA',304Q,LOAD,$COL            ; LOAD
             DW  BLK,AT,IN,AT,ZERO,IN,STORE,ROT,BLK
             DW  STORE,INTER,IN,STORE,BLK,STORE,SEMI

Ссылки


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