[an error occurred while processing this directive]

    
; Файл, содержащий ссылки на слова, определенные в
; базовом FORTH для разработки библиотек и просто
; общего удовлетворения!!!!
;
; Дата написания: 7.94
                           
*********************************************************
; Написание процедур на ассемблере для BForth облегчается
; ассемблерными процедурами описанными ниже.
; Основное соглашение: регистры A, Y всегда могут
;                      использоваться как угодно,
;                      регистр X ВСЕГДА должен содержать
;                      смещение для арифметического стека.
; При выполнении операций со стеком на ассемблере
; Данные помещаются: мл.байт-> A, ст. байт-> Y.

; Более подробные примеры см. SYS*.*

;Название    Адрес         Комментарии
;----------- ------------- -------------------------------


; Слова для формирования ссылок в CFA-------------------
UserVar      equ ¤07f8+FUP Пользовательская переменная                                ( в поле PFA смещение в 0 стр.)
Cons         equ ¤0f2d+FUP Константа( находится в PFA )
Var          equ ¤0f57+FUP Переменная( адрес в PFA )
Does         equ ¤0f88+FUP Структура <BULDS .. DOES>


; Слова для использования ассемблерными процедурами:
PushNext     equ ¤0012+FUP Положить на стек и перейти к                               следующему слову
Push         equ ¤0012+FUP Положить в стек
Pop          equ ¤001e+FUP Взять из стека
VremStack    equ ¤0027+FUP Поместить слово из VREM+0..1                               в стек
StackVrem    equ ¤0034+FUP Наоборот
Vrem2Stack   equ ¤0041+FUP Поместить слово их VREM+2..3                               в стек
StackVrem2   equ ¤004e+FUP Наоборот
GetStream    equ ¤0063+FUP Взять текущее слово из потока                              команд
IncRegs      equ ¤0095+FUP Увеличить регистры как слово
DecRegs      equ ¤009c+FUP Уменьшить регистры как слово
IncRegsStack equ ¤00a3+FUP Увеличить регистры на содержимое                           стека
DecRegsStack equ ¤00b6+FUP То же, но уменьшить
IncMemVrem   equ ¤01f0+FUP Увеличить VREM+0..1 на MEMADR+0.                           ..1
NegVrem      equ ¤01fe+FUP Изменить знак слова во VREM+0..1
IncVrem      equ ¤0222+FUP Увеличить слово во VREM+0..1
GetKey       equ ¤022e+FUP Взять или нет байт с клавиатуры                            ( успешно C=1 )
CursorOff    equ ¤0269+FUP Ассемблерное выключение курсора
CursorOn     equ ¤027a+FUP ------------ включение курсора
IsCtrlA      equ ¤0343+FUP Проверка символа в A на принад-                            лежность к управляющим( если                               так, то C= 1 )
DisInt       equ ¤034f+FUP Запретить прерывания
EnbInt       equ ¤035f+FUP Разрешить прерывания
SysMem       equ ¤291c+FUP Адрес начала массива для описа-                            ния памяти системы
TrueFlag     equ ¤0391+FUP Выдать в стек TRUE
FalseFlag    equ ¤0397+FUP Выдать в стек FALSE

; Слова для программирования на FORTH-------------------
zequ         equ ¤0389+FUP =0
zgreat       equ ¤03a0+FUP >0
zless        equ ¤03ad+FUP <0
equal        equ ¤03ba+FUP =
uless        equ ¤0301+FUP u<
ugreat       equ ¤03e7+FUP u>
less         equ ¤0400+FUP <
great        equ ¤042d+FUP >   
drop         equ ¤043f+FUP 
swap         equ ¤0449+FUP 
dup          equ ¤045d+FUP 
over         equ ¤046c+FUP 
pick         equ ¤0484+FUP 

ddup         equ ¤04a3+FUP -dup
dup2         equ ¤04c0+FUP 
rot          equ ¤04d8+FUP 
ddrop        equ ¤04f4+FUP -drop
dswap        equ ¤0501+FUP 
exec         equ ¤0526+FUP 
dlit         equ ¤0532+FUP Слово для взятия из очереди                                двойного слова и помещения на                              стек
lit          equ ¤0538+FUP Перенести слово из очереди                                 в стек.
zbran        equ ¤053e+FUP Ветвление, если на стеке 0                                 ( в очереди после этого слова                              находится смещение перехода )
bran         equ ¤0548+FUP Безусловное ветвление
nzbran       equ ¤055f+FUP Ветвление, если <>0
xdo          equ ¤056b+FUP Начнем цикл DO .. LOOP
xloo         equ ¤0586+FUP Закончим этот цикл
pfind        equ ¤05c7+FUP
digit        equ ¤062d+FUP
leave        equ ¤0657+FUP 
tor          equ ¤0675+FUP >r
fromr        equ ¤0690+FUP r>
i            equ ¤06a7+FUP 
srp          equ ¤06be+FUP i'
lev          equ ¤06cc+FUP 
true         equ ¤06de+FUP На стек -1
false        equ ¤06eb+FUP На стек  0
zero         equ ¤06f4+FUP 0
one          equ ¤06fd+FUP 1
two          equ ¤0706+FUP 2
three        equ ¤070f+FUP 3
four         equ ¤0718+FUP 4
eight        equ ¤0721+FUP 8
blank        equ ¤072e+FUP В стандарте BL
t32          equ ¤0739+FUP На стек константу 32( дес. )
t64          equ ¤0744+FUP На стек константу 64( дес. )
sysbuf       equ ¤078c+FUP На стек адрес буфера 1 кб.
fence        equ ¤0799+FUP 
hereadr      equ ¤07a8+FUP Вместо DP
holdd        equ ¤07b5+FUP 
state        equ ¤07c2+FUP 
csp          equ ¤07cd+FUP 
tib          equ ¤07d8+FUP  
base         equ ¤07e4+FUP 
warning      equ ¤07f3+FUP
screenparms  equ ¤080d+FUP На стек адрес в 0 странице нача-                           ла экранных параметров
endpos       equ ¤081b+FUP Адрес начала последней строки                              рабочего окна
begpos       equ ¤0829+FUP Адрес начала первой строки рабо-                           чего окна
currpos      equ ¤0838+FUP Текущая позиция для вывода сим-                            вола
winx         equ ¤0844+FUP
winy         equ ¤0850+FUP
winwidth     equ ¤0860+FUP
windepth     equ ¤0870+FUP
posx         equ ¤087c+FUP
posy         equ ¤0888+FUP
mode         equ ¤0894+FUP
atribute     equ ¤08a4+FUP
page         equ ¤08b0+FUP
screenon     equ ¤08c0+FUP
xcoor        equ ¤08cd+FUP
ycoor        equ ¤08da+FUP
plus         equ ¤08e3+FUP +
sub          equ ¤08f0+FUP -
minus        equ ¤0901+FUP
onep         equ ¤091a+FUP 1+
onepstor     equ ¤0929+FUP 1+!
twop         equ ¤094c+FUP 2+
twopstor     equ ¤095e+FUP 2+!
onem         equ ¤097b+FUP 1-
onemstor     equ ¤098a+FUP 1-!
twom         equ ¤09b6+FUP 2-
twomstor     equ ¤09c8+FUP 2-!
mul2         equ ¤09ec+FUP 2*
div2         equ ¤09fb+FUP 2/
swab         equ ¤0a0c+FUP
abs          equ ¤0a1c+FUP
ustar        equ ¤0a2b+FUP u*
mstar        equ ¤0a47+FUP m*
dminus       equ ¤0a81+FUP 
dabs         equ ¤0a99+FUP
udiv         equ ¤0aa8+FUP u/
mdiv         equ ¤0ae2+FUP m/
dplus        equ ¤0b2b+FUP d+
and          equ ¤0b54+FUP
or           equ ¤0b6b+FUP
xor          equ ¤0b81+FUP
min          equ ¤0b97+FUP
max          equ ¤0baf+FUP
spat         equ ¤0bc3+FUP sp`
spsto        equ ¤0bcf+FUP sp!( dropall )
cmove        equ ¤0bf0+FUP
fill         equ ¤0c24+FUP
erase        equ ¤0c56+FUP
blanks       equ ¤0c66+FUP Вместо BLANK
hold         equ ¤0c73+FUP
pstor        equ ¤0c94+FUP +!
togl         equ ¤0cb7+FUP
at           equ ¤0cc8+FUP @
cat          equ ¤0cdd+FUP c@
store        equ ¤0ce9+FUP !
cstor        equ ¤0cfc+FUP c!
nfa          equ ¤0d0d+FUP
lfa          equ ¤0d27+FUP
cfa          equ ¤0d37+FUP
scsp         equ ¤0d42+FUP
here         equ ¤0d53+FUP
allot        equ ¤0d64+FUP
trav         equ ¤0d89+FUP Может быть( TRAVERSE )
lbrac        equ ¤0da6+FUP [
rbrac        equ ¤0db5+FUP ]
hex          equ ¤0dbf+FUP
dec          equ ¤0dd4+FUP decimal
dtrail       equ ¤0ded+FUP -trail
latest       equ ¤0e16+FUP Используется в  формате:                                   WordLen Latest( выдает в стек                              адрес начала последнего слова                              длиной WordLen )
x            equ ¤0e5d+FUP
gettoken     equ ¤0e7c+FUP Вместо ?????
cursor       equ ¤1038+FUP Переменная- стиль курсора
shift        equ ¤1045+FUP Переменная для SHIFT
inwas        equ ¤1052+FUP Признак, что  ВЫВОД был
outwas       equ ¤1060+FUP Признак, что ВВОД был
outchr       equ ¤106e+FUP Символ для вывода в OUT
inbufbeg     equ ¤107e+FUP Начало кольца буфера ВВОД
inbufend     equ ¤108e+FUP Конец кольца буфера  ВЫВОД
nmiwas       equ ¤109e+FUP Признак NMI было
irqwas       equ ¤10aa+FUP Признак IRQ было
intlock      equ ¤10b9+FUP Программная блокировка прерыв.
timeroff     equ ¤10cc+FUP Переменная, отражающая состоя-                             ние таймера
flagi        equ ¤10d6+FUP Переменная- состояние флага I
inbufadr     equ ¤10e6+FUP Вместо TIB
inbuflim     equ ¤10f6+FUP Константа- адрес конца буфера                              ВВОД
nmivect      equ ¤1105+FUP Константа адреса вектора на NMI
irqvect      equ ¤1114+FUP --------------------------- IRQ
instate      equ ¤1123+FUP Слово- выход из IN( последняя                              процедура цепочки )
getbuf       equ ¤113a+FUP Взять из буфера ВВОД
in           equ ¤116e+FUP ВВОД
out          equ ¤1184+FUP ВЫВОД
inset        equ ¤11a5+FUP Установить в цепочку ВВОД проце-                           дуру, адрес кот. на стеке
outset       equ ¤11b6+FUP То же на ВЫВОД
nmiset       equ ¤1236+FUP То же на NMI
irqset       equ ¤1247+FUP То же на IRQ
ifinwas      equ ¤129a+FUP inwas?
ifoutwas     equ ¤12ee+FUP outwas?
kbdin        equ ¤12ff+FUP Стандартная процедура ВВОД с                               клавиатуры
cursorstate  equ ¤132e+FUP Курсор должен бытьна экране или                            нет
isctrl       equ ¤14c2+FUP Символ в OUTCHR управлюющий?
outctrl      equ ¤14da+FUP Вывести управляющий символ в                               OUTCHR по адресу таблицы упр.                              клавиш
jumpkeytab   equ ¤1506+FUP Стандартная таблица упр. клав.
caps         equ ¤156c+FUP Слово- CAPS
swapspar     equ ¤1580+FUP Обменять экранные параметры
setscreen    equ ¤15c8+FUP Установить режим экрана без по-                            каза экрана
scrdrivers   equ ¤15fd+FUP Массив для хранения переходов                              по слову SETSCREEN
settext      equ ¤1614+FUP
clrwinpar    equ ¤16b8+FUP Записать 0 в POSX, POSY, WINX,                             WINY
showscreen   equ ¤16e6+FUP Показать активный экран 
on50         equ ¤16f9+FUP Включить таймер
off50        equ ¤170a+FUP Выключить таймер
conout       equ ¤1721+FUP Вывод на консолю символа
inreset      equ ¤174f+FUP Сбросить ВВОД
outreset     equ ¤1762+FUP Сбросить ВЫВОД
nmireset     equ ¤1775+FUP Сбросить NMI
irqreset     equ ¤1793+FUP Сбросить IRQ
outst        equ ¤17ae+FUP Вывести символ по стеку
type         equ ¤17c8+FUP
get          equ ¤17f7+FUP Ввести байт с ВВОД
gets         equ ¤1807+FUP Ввести строку: MEMADR COUNTER
span         equ ¤18a9+FUP
strdrivers   equ ¤18bb+FUP Массив обработчиков редактора                              строки
temp1        equ ¤19e8+FUP
offsetbuf    equ ¤19f9+FUP Вместо >IN
isbuf        equ ¤1a06+FUP Вместо BLOCKS
textadr      equ ¤1a15+FUP Вместо ????
cr           equ ¤1a1f+FUP
comma        equ ¤1a2b+FUP ,
ccom         equ ¤1a50+FUP c,
space        equ ¤1a73+FUP
pfa          equ ¤1a7f+FUP
qerr         equ ¤1a94+FUP ?err
qcomp        equ ¤1aaa+FUP ?comp
qpair        equ ¤1ac3+FUP ?pair
qcsp         equ ¤1ad5+FUP ?csp
qexec        equ ¤1af1+FUP ?exec
comp         equ ¤1b06+FUP
smug         equ ¤1b2d+FUP smudge
count        equ ¤1b54+FUP
build        equ ¤1b46+FUP  
outs         equ ¤1b78+FUP Вместо COUNT TYPE
pdotq        equ ¤1b7e+FUP (.")
pad          equ ¤1bee+FUP
word         equ ¤1bff+FUP
dfind        equ ¤1c59+FUP
error        equ ¤1c8d+FUP
errproc      equ ¤1ca0+FUP Адрес первой процедуры обработки                           ошибок
udot         equ ¤1e9d+FUP u.
dot          equ ¤1eb0+FUP .
spaces       equ ¤1ecb+FUP
lastwlen     equ ¤1f0a+FUP Переменная- число букв в послед-                           нем
current      equ ¤1f19+FUP
pscode       equ ¤1f82+FUP Компилирует в CFA последне-                                слова ссылку на адрес ко-                                  манды за этим словом
compword     equ ¤1fb5+FUP
literal      equ ¤1fdc+FUP
dliteral     equ ¤1ffb+FUP
forgt        equ ¤2082+FUP
interpret    equ ¤20d5+FUP
quit         equ ¤214b+FUP
abort        equ ¤219a+FUP
sdot         equ ¤21ed+FUP s.
star         equ ¤21fc+FUP *
conv4        equ ¤220a+FUP
slmod        equ ¤221e+FUP /mod
slash        equ ¤2228+FUP /
mod          equ ¤2237+FUP mod
ssla         equ ¤225b+FUP */
ssmod        equ ¤2262+FUP */mod
number       equ ¤2342+FUP
ifnotdig     equ ¤2338+FUP Слово переводяшее счетную строку                           в число двойной длины на стек                              Формат: 0 0 StrAdr                                         Выход: n1 n2 StrAdr'
create       equ ¤2381+FUP
devproc      equ ¤25a1+FUP Слово где находится вектор для                             обработчика текущего УСТРОЙСТВА
DevProc      equ ¤25a4+FUP
inprocess    equ ¤25b2+FUP
InProcess    equ ¤25b5+FUP
systemwait   equ ¤25c4+FUP
SystemWait   equ ¤25c7+FUP
treaters     equ ¤25d4+FUP Адрес начала массива для хране-                            ния векторов обработчиков
Treaters     equ ¤25d7+FUP
clrtrt       equ ¤2600+FUP
regtreat     equ ¤2616+FUP
qlogdev      equ ¤2695+FUP Переменная- число логических                               устройств
QLogDev      equ ¤2698+FUP
currdevno    equ ¤26a6+FUP Переменная- номер текущего лог.                            устройства
CurrDevNo    equ ¤26a9+FUP
lastdevno    equ ¤26b7+FUP Номер последнего лог. устр- ва
LastDevNo    equ ¤26ba+FUP
devtreat     equ ¤26c7+FUP Адрес процедуры- обработчика                               текущего устройства
DevTreat     equ ¤26ca+FUP
lastreat     equ ¤26d7+FUP Адрес прошлого обработчика
Lastreat     equ ¤26da+FUP
workslt      equ ¤26e6+FUP Адрес рабочей области текушего                             устройства
lastslt      equ ¤26f5+FUP
LastSlt      equ ¤26f8+FUP
outd         equ ¤287e+FUP
makechoice   equ ¤2895+FUP Процедура  для произведения                                выбора ( SYS01.LIB )
drverr       equ ¤28a4+FUP Слово для выдачи сообщения                                 об ошибке устройства
findinbuf    equ ¤28ba+FUP ??
sysmem       equ ¤2919+FUP Адрес структуры-описателя памяти
execfile     equ ¤298b+FUP Исполнить программу из памяти                              по адресу
makemyerr    equ ¤29e1+FUP

                          

[an error occurred while processing this directive]