[an error occurred while processing this directive]
; Библиотека ошибок системы
; данный файл блокирует ошибки системы
; и заменяет их текстовыми сообщениями
; Дата написания 16.08.94;
chn fheader.asm
chn fwords.asm
org 0-¤4e
; Смещение и длина библиотеки
Start
dw 0-Start
dw EndLib-BegLib
; Входы в словарь
dw 0
dw 0
dw 0
dw 0
dw 0
dw Errlib
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
; Объектные ссылки
dw l000
dw l001+1
dw l002+1
dw l003+1
dw l004
dw 0
; Начало библиотеки
BegLib dfb ¤0 Этот байт необходим просто!!!
; Начальная инициализация
Errlib
dfb ¤86
asc "errliB"
dw 0
errlib
jsr lit
l000
dw myerr
l001
jsr nexterr
jsr makemyerr
jsr lit
l004
dw errmessages
jsr four
jmp store
; Адрес следующего обработчика ошибки
nexterr
jsr Var
dw 0
; Обработка на FORTH
myerr
l002
jsr myerra
jsr zbran
dw notfounderr-*-2
jsr lit
dw ¤87
jsr out
jsr outs
jsr isbuf
jsr at
jsr zbran
dw tttt-*-2
jsr space
jsr offsetbuf
jsr at
jsr dot
tttt
jsr cr
notfounderr
l003
jsr nexterr
jsr at
jmp exec
; Моя обработка ошибок с текстовым сопровождением
myerra
jsr Pop
sta Vrem
lda ¤4
sta Vrem+2
lda ¤5
sta Vrem+3
b002
ldy #¤0
lda (Vrem+2),y Это наша ошибка?
cmp #¤ff
beq enderrlist
cmp Vrem
bne nexterrlst
; Ура нашли нашу ошибку!!!
inc Vrem+2
bne b000
inc Vrem+3
b000
lda #TRUE
tay
jsr Push Признак того, что ошибку мы опознали
lda Vrem+2
ldy Vrem+3
jsr Push Выдадим на стек адрес строки для вывода
jmp PushNext Признак успешного завершения поиска
nexterrlst
ldy #¤1
lda (Vrem+2),y
clc
adc #¤2
adc Vrem+2
sta Vrem+2
bcc b002
inc Vrem+3
bne b002
enderrlist
inx
inx
lda #FALSE
tay
jmp PushNext Мы не нашли нашу ошибку!!!
; 11111111111111112222222
; 123456789abcdef0123456789abcdef0123456
errmessages
dfb ¤0,¤f
asc "Деление на ноль"
dfb ¤1,¤22
asc "Нехватка памяти или Неверный адрес"
dfb ¤2,¤26
asc "Некорр. ввод или Синтаксическая ошибка"
dfb ¤3,¤12
asc "Непарные операторы"
dfb ¤4,¤14
asc "Не восстановлен стек"
dfb ¤5,¤15
asc "Не при компилировании"
dfb ¤6,¤15
asc "Только при компиляции"
dfb ¤7,¤10
asc "Нет такого слова"
dfb ¤8,¤13
asc "Нельзя забыть слово"
dfb ¤9,¤f
asc "Нельзя пустой :"
dfb ¤a,¤15
asc "Идентификатор неверен"
dfb ¤b,¤13
asc "Оператор недоступен"
dfb ¤10,¤18
asc "Ошибка заголовка сектора"
dfb ¤11,¤18
asc "Ошибка при чтении данных"
dfb ¤12,¤10
asc "Нет такого файла"
dfb ¤13,¤18
asc "Фатальная ошибка системы"
dfb ¤14,¤16
asc "Нет активных устройств"
dfb ¤15,¤10
asc "Нет такого файла"
dfb ¤16,¤11
asc "Некорректный файл"
dfb ¤17,¤f
asc "Ошибка загрузки"
dfb ¤18,¤17
asc "Нет места на устройстве"
dfb ¤ff
EndLib
[an error occurred while processing this directive]