[an error occurred while processing this directive]


; Структура памяти FORTH системы:


; 0   - FFF   Системная область 
; 1000- 1FFF  Область текстовых страниц( 2 страницы )
; 2000- 9FFF  Область программ и библиотечных модулей
; A000- BFFF  Область для подключения ДОП памяти 
;
; D000- DFFF  Верхний FORTH ( основное состояние )
;*D000- DFFF  Область стеков графики и текста( ДОП сост. )
; E000- FFFF  Продолжение FORTH
;
;   Структура системной области

; 0  - FF     Системная область процессора( 0 страница )
; 100- 1FF    Аппаратный стек
; 200- 2FF    Рабочая область менеджера памяти
; 300- 3FF    Буфер ввода( TIB )+ буфер клавиатуры
; 400- 4FF    Параметры обработчика слоты 1
; 500- 5FF             -                  2
; 600- 6FF             -                  3
; 700- 7FF             -                  4
; 800- 8FF             -                  5
; 900- 9FF             -                  6
; A00- AFF    Стек FORTH
; B00- BFF    Стек возвратов
; C00- CFF    - SYSBUF( 1K )
; D00- DFF   !  Область для буферов обработчиков
; E00- EFF   !  ( сеть, принтер, дисковод и т.д. )
; F00- FFF    -


; Определение стековых сегментов---------------------
MStack    equ ¤200   Стек для памяти
AStack    equ ¤a00   Адрес стека данных ( арифметического)
RuStack   equ ¤100   Адрес стека возвратов( ВЕРХ )  
TIB       equ ¤300   TIB
SysBuf    equ ¤c00   Начало области буферов для слотов
FUP       equ ¤D000  Адрес начала форта
ProgBuf   equ ¤a000  Адрес для буферов программ
ProgAdr   equ ¤2000

; Ячейки системной области для FORTH------------------
StreamPtr    equ ¤80 Ячейка для хранения адреса очереди
RetPtr       equ ¤82 Ячейка для адреса стека возвратов
MemAdr       equ ¤84 Временная для адреса 
MemAdr1      equ ¤86 То же
SecTick      equ ¤88 Ячейка для подсчета тиков таймера
Seconds      equ ¤89 Ячейка для подсчета секунд
Minuts       equ ¤8a                     минут 
Hours        equ ¤8b                     часов
DayChange    equ ¤8c Сигнал, что день изменился
Vrem         equ ¤90 Просто временные ячейки
Signum       equ ¤a4 Знак для математики
CurrSymbol   equ ¤a6 Символ под курсором
CursorWait   equ ¤aa 
IntFlag      equ ¤ab
IntVars      equ ¤ae Область данных для прерываний

; Ячейки для экранных процедур
ScreenParms  equ ¤c8
EndPos       equ ¤c8 
BegPos       equ ¤ca
CurrPos      equ ¤cc
WinX         equ ¤ce
WinY         equ ¤d0
WinWidth     equ ¤d2
WinDepth     equ ¤d4
PosX         equ ¤d6
PosY         equ ¤d8
Atribute     equ ¤da
Mode         equ ¤dc
Page         equ ¤de
ScreenOn     equ ¤e0
XCoor        equ ¤e2
YCoor        equ ¤e4
Block5On     equ ¤e6

; Ячейки для убыстрения графики
Width1       equ ¤e8  Ширина окна в байтах
StrLen       equ ¤ea  Длина строки в байтах
Mask         equ ¤ec  Маска для перехода по банкам
HowSPut      equ ¤ee  Признак- как класть символы
OffsFont     equ ¤f0  Смещение в SYSMEM где блок фонтов

                   
; Переменные для связи системы с библиотеками------------
;
;  WORKSLT-  0 Переменная для указания адреса рабочей
;              области слоты( 400, 500 и тд )
;  SW     -  0 Переменная для временных операций слотов

WorkSlt      equ ¤50 Адрес рабочей области текущего устр.
SW           equ ¤52 Область для врем. параметров слоты
ID           equ ¤60 Идентификатор текущей программы
MemBlock     equ ¤61 Номер блока памяти для текущ. прогр.
NmiAdr       equ ¤62 Временная ячейка для цепочки NMI    
IrqAdr       equ ¤64 Временная ячейка для цепочки IRQ
DevNext      equ ¤66 Временная ячейка для цеп. устройств
TxtStack     equ ¤68 Указ. на текущий адрес текст. стека
GrhStack     equ ¤6a -----------------------графич. стека
                                
; Определение констант программы------------------------
TRUE         equ ¤ff
FALSE        equ ¤0
LATA         equ ¤a0
LATZ         equ ¤df
KAVICHKI     equ ¤a2
MINUS        equ ¤ad
               
; Ошибки системы----------------------------------------
ONZERO       equ ¤0  Деление на 0
ERRMEM       equ ¤1  Нехватка памяти!!!
SYNTERR      equ ¤2  Синтаксическая ошибка
NOTCOMP      equ ¤5  Не при компилировании
NOTPAIR      equ ¤3  Не парны операторы
STACKNOTEQ   equ ¤4  Стек не очищен после компилирования
COMPONLY     equ ¤6  Данный оператор только при комп.
NOTFOUND     equ ¤7  Слово не найдено
CANTFORGET   equ ¤8  Не могу забыть данное слово
ERRNULL      equ ¤9  Неправильное применение :
ERRID        equ ¤a  Неправильный идентификатор программы
NOTAVAIL     equ ¤b  Оператор недоступен
NOFUNC       equ ¤12 Нет такой функции у устройства
FATERR       equ ¤13 Фатальная ошибка
NOACTIVEDEV  equ ¤14 Нет активных устройств
NOFILE       equ ¤15 Нет такого файла
ERRFILE      equ ¤16 Ошибка в файле( в TS )
CANTLOAD     equ ¤17 Не можем создать цепочку загрузки
NODSKMEM     equ ¤18 Нет памяти на устройстве

; Приоритеты устройств----------------------------------
TEACID       equ ¤1
SHUGID       equ ¤2
NETID        equ ¤3
MEMID        equ ¤4
PRNID        equ ¤5
MODID        equ ¤6

; Дополнительные константы процедур консоли-------------
TEXT64       equ ¤0
TEXT32       equ ¤1
MONOGRLO     equ ¤2
MONOGRHI     equ ¤3
COLORGRHI    equ ¤4

RIGHTKEY     equ ¤95
DOWNKEY      equ ¤9a
LEFTKEY      equ ¤88
UPKEY        equ ¤99
ENTERKEY     equ ¤8d
BELL         equ ¤87
ESCAPE       equ ¤9b
BLANK        equ ¤a0
DOT          equ ¤ae

; Дополнительные аппаратные константы--------------------
KeyCore      equ ¤c000
RusLatCore   equ ¤c063
ResetKey     equ ¤c010

SysSlot      equ ¤c00    Адрес для промежуточного чтения
           
; Дополнительные константы для сопряжения с BEST
SLOT         EQU ¤1F  Paзъeм
DRIV         EQU ¤20  Дpaйвep
TRACK        EQU ¤21  Tpeк
SECT         EQU ¤22  Ceктop
BUFR         EQU ¤23  Буфep
INBUF        EQU ¤B00
POLSTR       EQU ¤1E
DOSCOM       EQU ¤26E

;-------------------------------------------------------
;
; Описание заголовков слотовых описаний( обработчика
;                                        слоты- ¤400 )
;
;-------------------------------------------------------

;  Смещение   Значение 
   
; ( Обязательная часть )

;               SlotHeader

;     0      Код устройства на слоте
;     1      Номер слоты *10h
;    2,3     Адрес обработчика слоты

; *Данная часть представляет собой заголовок
;  данных для обработчика( если на слоте > 1 
;  подустройства, то данных заголовков должно быть
;  ровно столько же )
         
;               DeviceHeader

;    0( 4 )  Код логического устройства( 0- нет )
;    1( 5 )  Смещение до следующего устройства( 0- нет )
;    2( 6 )  Занятость устройства( id захватчика, 0- нет )
           
; Все, что находится ниже на усмотрение разработчика
; и называется
;               DeviceParms


;---------------Общие константы для ---------------------
;
;             TTTTT EEEEE  AAA   CCC 
;               T   E     A   A C   C
;               T   EEE   A   A C      
;               T   E     AA AA C    
;               T   EEEEE A A A  CCC  
;
;--------------------------------------------------------

; Описание DeviceParms для TEAC

;    0( 7 )   Команда выбора привода
;  1,2( 8,9 ) Физический адрес обращения
;    3( 10 )  Номер дорожки на устройстве
;    4( 11 )  Число шагов до нужной дорожки

; Описание области SW для TEAC( устанавливается SETLOGDEV)
;
;    0        Трек для обращения
;    1        Сектор для обращения
;    2        Смещение в описании слоты
;    3        Номер слоты *10
;    4        Длина блока данных
;    5,6      Адрес куда или откуда блок( в памяти )

; Константы для TEAC
TeacState    equ ¤c081
TeacRK       equ ¤c082
TeacCtrlReg  equ ¤c083
TeacReadReg  equ ¤c084
TeacWritReg  equ ¤c085
TeacSyncReg  equ ¤c086
TeacReset    equ ¤c087
TeacWriteSyn equ ¤c088
TeacStep     equ ¤c089
TeacClrSync  equ ¤c08a

Attempts     equ ¤40     Число попыток для чтения









[an error occurred while processing this directive]