MESSAGE
MESSAGE — архаичное слово Каллисто. Вывести на индикатор сообщение об ошибке.
MESSAGE ( c −− ) Сохранить >IN в R# и вывести сообщение номер c.
Ввод слова MESSAGE[править]
В режиме ЛАТ последовательно нажмите клавиши ÷ ИП 1 1 ШГ← БП ИП
Номера сообщений Каллисто[править]
Сообщение Значения Сообщение при WARNING=1 Кто генерирует ошибку ( нет в Каллисто 1.0) MSG# 0 Слово не узнано. [COMPILE] TO 'N ' Число не узнано. Нет соответствия системе счисления MSG# 1 Попытка извлечь нечто из пустого стека EMPTY STACK ?STACK MSG# 2 Переполнение стека или словаря STACK OR DIRECTORY OVERFLOW ?STACK MSG# 4 Повторное описание слова (не является IT ISN'T UNIQUE фатальной ошибкой) MSG# 17 Используется только при компиляции COMPILATION ONLY ?COMP MSG# 18 Используется только при исполнении EXECUTION ONLY ?EXEC MSG# 19 IF и THEN или другие операторы CONDITIONALS AREN'T PAIRED ?PAIRS не имеют пары MSG# 20 Определение не завершено DEFINITION ISN'T FINISHED ?CSP MSG# 21 Неверный аргумент слова FORGET PROTECTED DIRECTORY FORGET ( нет в Каллисто 1.0) Слово в защищённой области словаря MSG# 22 Должно использоваться только USED AT LOADING ONLY ?LOADING при загрузке MSG# 23 Строка экрана вне диапазона 0..47 MSG# 24 ??? ??? FORGET ( нет в Каллисто 1.0) MSG# 26 Деление на 0 0 DIVISION ( нет в Каллисто) (только в Каллисто, ошибки дисковых операций) MSG# 39 Сохранение от другой версии LOAD" ( не может быть игнорировано) MSG# 40 Файл не найден LOAD" MSG# 41 Нет диска MSG# 42 Диск не форматирован MSG# 43 Нет места на диске MSG# 44 Нет места в каталоге MSG# 45 Ошибка имени файла/каталога MSG# 46 Невозможно удалить/создать/загрузить файл/каталог MSG# 47 Файл/каталог не выбран MSG# 48 Нет разрешения дисковой операции
История[править]
Централизация сообщений об ошибках в MESSAGE — ранняя форма системы обработки ошибок в Форте. В отличии от вошедшего в стандарт слова ABORT" каллистянский MESSAGE позволяет экономить драгоценное место в памяти программ, сведя все сообщения об ошибках к единой справочной таблице, не расходующей эту память.
В fig-Форте была переменная WARNING, с помощью которой слово MESSAGE можно было попросить считать с диска текстовое сообщение об ошибке. Этот дружелюбный, но тоже занимающий дефицитное место в памяти программ, механизм пришлось удалить из Каллисто 1.0, так как наличие всего одного буфера в МК-161 делает загрузку экрана с текстом ошибок дополнительным источником нестабильности в критической ситуации.
MESSAGE в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
MESSAGE n -- Print on the selected output device the text of line n relative to screen 4 of drive O. n may be positive or negative. MESSAGE may be used to print incidental text such as report headers. If WARNING is zero, the message will simply be printed as a number (disc unavailable).
Реализация[править]
3529 ;#MESSAGE 3530 ; MESSAGE ( c −− ) Сохранить >IN в R# и вывести сообщение номер c. 3531 ; В Форте ИТЭФ сообщения при WARNING=1 хранились в блоке №4. 3532 ; 3533 ; Сообщение Значения Возможный текст Кто генерирует ошибку 3534 ; 3535 ; MSG# 0 Слово не узнано. [COMPILE] TO 'N ' 3536 ; Число не узнано. 3537 ; Нет соответствия системе счисления 3538 ; MSG# 1 Попытка извлечь нечто из пустого стека EMPTY STACK ?STACK 3539 ; MSG# 2 Переполнение стека или словаря STACK OR DIRECTORY OVERFLOW ?STACK 3540 ; MSG# 4 Повторное описание слова (не является IT ISN'T UNIQUE 3541 ; фатальной ошибкой) 3542 ; MSG# 17 Используется только при компиляции COMPILATION ONLY ?COMP 3543 ; MSG# 18 Используется только при исполнении EXECUTION ONLY ?EXEC 3544 ; MSG# 19 IF и THEN или другие операторы CONDITIONALS AREN'T PAIRED ?PAIRS 3545 ; не имеют пары 3546 ; MSG# 20 Определение не завершено DEFINITION ISN'T FINISHED ?CSP 3547 ; MSG# 21 Неверный аргумент слова FORGET PROTECTED DIRECTORY FORGET ( нет в Каллисто 1.0) 3548 ; Слово в защищённой области словаря 3549 ; MSG# 22 Должно использоваться только USED AT LOADING ONLY ?LOADING 3550 ; при загрузке 3551 ; MSG# 23 Строка экрана вне диапазона 0..47 3552 ; MSG# 24 ??? ??? FORGET ( нет в Каллисто 1.0) 3553 ; MSG# 26 Деление на 0 0 DIVISION ( нет в Каллисто) 3554 ; (только в Каллисто, ошибки дисковых операций) 3555 ; MSG# 39 Сохранение от другой версии LOAD" ( не может быть игнорировано) 3556 ; MSG# 40 Файл не найден LOAD" 3557 ; MSG# 41 Нет диска 3558 ; MSG# 42 Диск не форматирован 3559 ; MSG# 43 Нет места на диске 3560 ; MSG# 44 Нет места в каталоге 3561 ; MSG# 45 Ошибка имени файла/каталога 3562 ; MSG# 46 Невозможно удалить/создать/загрузить файл/каталог 3563 ; MSG# 47 Файл/каталог не выбран 3564 ; MSG# 48 Нет разрешения дисковой операции 3565 ; 3566 LMESS: .DB 7 3567 .TEXT "MESSAGE" 3568 .DW LDLINE 3569 MESS: .DW CALL, IN,UAT, RNUM,STORE, PDOTQ 3570 .DB 5 3571 .TEXT "MSG #" 3572 .DW BRAN,RDOT
Советская реализация[править]
Юрий Семёнов приводит следующее определение слова MESSAGE (стр. 156):
: MESSAGE >IN @ R# ! ( сохранение указателя входного буфера в R#) WARNING @ IF ( если WARNING $0) ?DUP IF ( если код диагностического сообщения не равен 0) 4 OFFSET @ - ( выбор экрана с текстами диагностических сообщений) (LINE) TYPE ( печать сообщения) ELSE ." MSG # 0" THEN ( если код ошибки равен 0) ELSE ." MSG # " I. THEN ; ( печать сообщения, если WARNING =0)
Определение слова MESSAGE в FORTH ИТЭФ:
HEAD 207Q,'MESSAG',305Q,MESS,$COL ; MESSAGE DW IN,AT,RNUM,STORE,WARN,AT,ZBRAN,MS1-$ DW DDUP,ZBRAN,MES-$,LIT,4,OFSET,AT,SUB,DLINE MES: DW SEMI MS1: DW PDOTQ DB 6,'MSG # ' DW $DOT,SEMI
В ядре ФОРТ-ЕС другая система обработки ошибок, например было слово BADWORD
Ниже его описание и определение через слово ".
BADWORD * А-> СООБЩИТЬ О НЕОПОЗНАННОМ СЛОВЕ 29 Экран номер 28 ( 31.03.86 LIT" COUNT ," " ". (."/ ." C" ( ,( QUIT ABORT ) : ". ( T-> ) COUNT TYPE ; Экран номер 29 ( 31.03.86 ПРОВЕРКИ И СИГНАЛИЗАЦИИ ОБ ОШИБКАХ ) : BADWORD ( T->) CR ". ." ?" ABORT ;
Ссылки[править]
- Исходный текст слова MESSAGE в Каллисто Классик 1.0
- См. также слова ERROR, ERB и ?ERROR
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |