LOAD
LOAD (загрузить) — стандартное слово Каллисто.
LOAD ( c −− ) Загрузить с диска и интерпретировать экран номер c.
Загружает экран с номером 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
colorForth (cf2019.nasm 2019 Sep 14)[править]
; convert block start address to cell address, add the RELOCATED colorForth system base blockToCellAddress: ; ( blk -- a' ) \ add the RELOCATED offset and convert to cell address add _TOS_, [ v_offset ] ; add the RELOCATED block number offset shl _TOS_, 0x08 ; convert to cell address ret cellAddressToBlock: ; ( a -- blk ) \ convert cell address to block number and subtract the RELOCATED block number offset shr _TOS_, 0x08 ; convert cell address to block number sub _TOS_, [ v_offset ] ; subtract the block number of block 0 ret _load_: ; ( blk -- ) \ load the given block number call blockToCellAddress ; add the RELOCATED block number offset and convert to cell address push edi mov edi, _TOS_ _DROP_ interpret: mov edx, [ ( edi * 4 ) + 0x00 ] inc edi and edx, byte 0x0F call [ ( edx * 4 ) + tokenActions ] jmp short interpret
Ссылки[править]
- Исходный текст слова LOAD в Каллисто Классик 1.0
- См. слова BLK, SAVE" и LOAD"
- Слово LOAD в стандарте ANS Forth (англ.)
- Слово LOAD в черновике Forth 200x (англ.)
- КАК РАБОТАТЬ НА ФОРТЕ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- The Editor (and Staff) в книге Leo Brodie Starting Forth (англ.)
![]() |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |