        .LION EQU 0
        .FLEX EQU 1
        .IBMK EQU 1
	.PROJ1 EQU 0
	.PROJ2 EQU 0
	.PROJ3 EQU 1
	.PROJ4 EQU 1
	.PAL   EQU 1


;ELCOM256	EQU 1	; режим ELCOM-256

;IF ELCOM256 EQ 1

D_TBON		EQU 3	; данные для включения TURBO
D_TBOFF		EQU 2	; данные для включения TURBO
D_ROM16ON	EQU 1
D_ROM16OFF	EQU 0
CNF_0		EQU 04h
CNF_1		EQU 0Ch
CNF_2		EQU 14h
CNF_3		EQU 1Ch
CNF_512		EQU 80h	; включение Pentagon 128

CBL_DIR		EQU 78	; порт управления COVOX-Blaster
			; bit 7 - 1 включить CBL

;ELSE
;D_TBON		EQU 03h ; данные для включения TURBO
;D_TBOFF		EQU 02h ; данные для включения TURBO
;D_ROM16ON	EQU 40h
;D_ROM16OFF	EQU 00h
;CNF_0		EQU 04h
;CNF_1		EQU 0Ch
;CNF_2		EQU 14h
;CNF_3		EQU 1Ch
;ENDIF

SPRINTER	EQU 4	; ВЕРСИЯ !!!
ISD_WARM        EQU 3
ISD_COLD        EQU 0
IS_KEY          EQU 40h ; ДАННЫЕ ДЛЯ ВЫВОДА В ПОРТ ПРИ ВКЛЮЧЕНИИ IS-DOS
IS_RAM_ADR      EQU 5BC0h ; АДРЕС ЗАГРУЗКИ ПРОГРАММЫ ПЕРЕХОДА В IS-DOS
TB_WAITES	EQU 00H	; WAITы для TURBO-MODE
NTB_WAITES	EQU 00H	; WAITы для neTURBO-MODE
IS_WAITES	EQU 00H ; WAITы для IS-DOS
;****************************************
;SYS_PORT_ON	EQU 07DH
;SYS_PORT_OFF	EQU 03DH
SYS_PORT_ON	EQU 07CH
SYS_PORT_OFF	EQU 03CH

PAL_V_PAGE 	EQU 09EH
PAL_SCP		EQU 01EH

CNF_PAGE	EQU 040H
SYS_PAGE	EQU 0FEH
MODE_PAGE	EQU 0FCH
;SCR_PAGE	EQU 0FDH
;PAL_PAGE	EQU 0FDH

KBD_COM		EQU 1Bh
KBD_DAT		EQU 1Ah

COM_B		EQU 1Bh
DAT_B		EQU 1Ah
COM_A		EQU 19h
DAT_A		EQU 18h

LPT1_D		EQU 1CH
LPT1_C		EQU 1DH
LPT2_D		EQU 1EH
LPT2_C		EQU 1FH

STC0_C		EQU 10H
STC1_C		EQU 11H
STC2_C		EQU 12H
STC3_C		EQU 13H

RAMD_LET	EQU ('R'-'A')

P_KBD_OUT	EQU 0F8H
P_KBD_IN	EQU 0FEH
;***************************************
;HD_HEADS EQU 5
HD_CS	EQU 0A0H

;HD_S_P_T EQU 17
;HD_S_X_H EQU (HD_S_P_T * HD_HEADS)	; ??? число секторое на цилиндре

P_DATS	EQU 050H	; READ/WRITE INIR/OTIR

P_ERR	EQU 051H	; READ
P_PREC	EQU 151H	; WRITE

P_S_CNT	EQU 152H	;
P_S_NUM	EQU 153H
P_C_LOW EQU 154H
P_C_HIG EQU 155H        ;<-\
P_HD_CS	EQU 4152H        ;<-/

P_HDST	EQU 4053H	; READ
P_CMD	EQU 4153H	; WRITE

P_HD3F6	EQU 4154H	; WRITE 3F6
P_HD3F7 EQU 4055H	; READ 3F7

;***************************************
CMOS_DRD equ	0FFBDh
CMOS_DWR equ	0BFBDh
CMOS_AWR equ	0DFBDh
ISA_PORT equ	09FBDh

;***************************************
SEC_SIZE	EQU 11
CLAST_SIZE	EQU 13
RESERV_SECS	EQU 14
FATS_NUM	EQU 16
FLS_NUM		EQU 17
S_P_D		EQU 19
FORM_CODE	EQU 21
S_P_F		EQU 22
S_P_T		EQU 24
H_P_S		EQU 26
SPECIAL_SECS	EQU 28
FAT_ID		EQU 36H
;***************************************

SYSTEM_ID	EQU 0C020H

SYS_SP		EQU 0C0FEH	; ДОПОЛНИТЕЛЬНЫЙ СТЕК
DISK_TYPE	EQU 0C100H	; переадресация дисков
COPY_PAGE0	EQU 0C104H	; копии значений портов страниц
COPY_PAGE1	EQU 0C105H
COPY_PAGE2	EQU 0C106H
COPY_PAGE3	EQU 0C107H
RAMD_VARS	EQU 0C108H	; переменные RAM-дисков
A_RAMD_VARS	EQU 0C118H	; текущий RAM-Disk
SP_SAVE		EQU 0C11AH	; место для сохранения адреса стека
ERR_SAVE	EQU 0C11CH
COPY_RGADR	EQU 0C11DH
RAM_MSD		EQU 0C11EH	; страница для работы в MS-DOS
MSD_SECS	EQU 0C11FH	; Число секторов в MS-DOS
MSD_NAME	EQU 0C120H	; Адрес имени найденного файла
;MSD_FAT_SEC	EQU 0C122H	; начальный сектор FAT
INT_ADRESS  	EQU 0C124H	; начальный сектор CAT
INT_PAGE    	EQU 0C126H	; начальный сектор DAT
DS_1440		EQU 0C128H	; флаги переключения 720/1440
F_P_S		EQU 0C129H	; число файловых записей в секторе
S_P_C		EQU 0C12AH	; число секторов каталога
COUNT_FL	EQU 0C12BH	; счетчик файлов в секторе
COUNT_SEC	EQU 0C12CH	; счетчик секторов в каталоге
C_P_B		EQU 0C12DH	; число кластеров на блок ОЗУ
;CLASTER_LEN	EQU 0C12EH	; длина кластера в байтах
FAT_FLAG	EQU 0C130H	; FAT флаг + FAT sector
MSD_CONT_SEC	EQU 0C132H	; текущий сектор для MS-DOS
MSD_CONT_SEC2	EQU 0C134H
S_X_H		EQU 0C136H	; количество секторов на цилиндре
CONFIG_ALL	EQU 0C138H	; описатель конфигурации
CONFIG_DE	EQU 0C13AH	; описатель конфигурации
CONFIG_BYTE	EQU 0C13EH	; байт конфигурации

WIN_MAP_SC	EQU 0C140H
WIN_TAB_SC	EQU 0C142H
WIN_SAV_HL	EQU 0C144H
WIN_SAV_DE	EQU 0C146H
WIN_SAV_BC	EQU 0C148H
WIN_ZG		EQU 0C14AH
WIN_PLACE_WIN	EQU 0C14CH
WIN_GR_MAP	EQU 0C14EH

SYS_WORK1	EQU 0C150H
SYS_WORK2	EQU 0C152H
SYS_WORK3	EQU 0C154H
SYS_WORK4	EQU 0C156H

WIN_MAP_LAB1	EQU 0C158H
WIN_MODE_SH	EQU 0C15CH
WIN_MODE_SC	EQU 0C15EH

MSD_FAT_SEC	EQU 0C160H	; начальный сектор FAT
MSD_FAT_SEC2	EQU 0C162H	; начальный сектор FAT
MSD_CAT_SEC	EQU 0C164H	; начальный сектор CAT
MSD_CAT_SEC2	EQU 0C166H	; начальный сектор CAT
MSD_DAT_SEC	EQU 0C168H	; начальный сектор DAT
MSD_DAT_SEC2	EQU 0C16AH	; начальный сектор DAT
CLASTER_LEN	EQU 0C16CH	; длина кластера в байтах
CLASTER_LEN2	EQU 0C16EH	; длина кластера в байтах

;CMOS_FLAG_1	EQU 0C170H

GR_BIT_END	EQU 7

S_BIT_END       EQU 7
S_BIT_LIN       EQU 6
S_BIT_MOD       EQU 5

BIT_1440	EQU 1
BIT_MASK_1440	EQU 00000010B

RAMD_KEYS	EQU 0C180H	; ключи RAM-Disks
RAMD_KEY_NUM	EQU 16

LIB_TABLE	EQU 0C1A0H      ; таблицы librares 32 байта
				; +0 библиотека DOS

HDD_INI_TABLE	EQU 0C1C0H	; таблицы для ide устройств 32 байта
				; 0 - копия DRV_HEAD
				; 1 - секторов на дорожке
				; 2 - число головок
				; 3 - количество цилиндров мл.
				; 4 - количество цилиндров старший.
				; 5 - секторов на цилиндр мл.
				; 6 - секторов на цилиндр старш.
				; 7 - reserv - type

FDD_INI_TABLE	EQU 0C1E0H	; таблицы для FDD устройств 32 байта

RAMD_FAT	EQU 0C200H	; расположение блоков RAM-Disk-ов

MS_BPB		EQU 0C400H	; буфер BPB
MS_DIR		EQU 0C800H	; буфер DIR sector
MS_FAT		EQU 0CC00H	; буфер FAT sector
MS_BUF		EQU 0D000H	; буфер DAT sector
HD_IDF_ADR	EQU 0C600H


WIN_MAP_IX	EQU 0E000H	; данные карт окон

TASK_DATA	EQU 0EC00H	; данные для задач

; ***** - Оконные переменные - *****

WIN_SIZE_H	EQU 0		; горизонтальный размер в знакоместах
WIN_SIZE_V	EQU 1		; вертикальный размер в знакоместах
WIN_PLACE_H	EQU 2		; положение по горизонрали, в знакоместах
WIN_PLACE_V	EQU 3		; положение по вертикали в знакоместах
WIN_MODE	EQU 4		; режим знакоместа
WIN_MODE_S	EQU 5		; дополнительный режим
				; бит 0 - Sp-SCR,
WIN_GR_X	EQU 6		; положение по X в поле графики (по знакомест)
WIN_GR_Y	EQU 7		; положение по Y в поле графики (по знакомест)

WIN_HL		EQU 8		; сохранение HL
WIN_BC		EQU 10		; сохранение BC
WIN_DE		EQU 12		; сохранение DE
WIN_V_BEG	EQU 14		; начало окна по вертикали
WIN_V_END	EQU 15		; конец окна по вертикали
WIN_H_BEG	EQU 16		; начало окна по горизонтали
WIN_H_END	EQU 17		; конец окна по горизонтали
WIN_SIZE_REL	EQU 18		; реальный размер в символах
WIN_MODE_E	EQU 19		; дополнительный режим экрана
WIN_WORK_1	EQU 20		; рабочая переменная 1
WIN_WORK_2	EQU 21		; рабочая переменная 2
WIN_GRAF_X	EQU 24		; начальная координата по X
WIN_GRAF_Y	EQU 26		; начальная координата по Y

USER_VARS	EQU 0F000h	; переменные пользователей

;SW_ROM	EQU 3CF9H

;	IF .PROJ4
;RGADR   EQU 0D0H
;RGSCR   EQU 0D1H
;RGMOD   EQU 0D2H
;RGACC   EQU 0D3H
;PGACC   EQU 0FCH

;PAGE0   EQU 0C0H
;PAGE1   EQU 0C5H
;PAGE2   EQU 0C2H
;PAGE3   EQU 0C0H

;	ELSE

;	ENDIF

PAGE0   EQU 082H
PAGE1   EQU 0A2H
PAGE2   EQU 0C2H
PAGE3   EQU 0E2H

;RGADR   EQU 089H
;RGSCR   EQU 0A9H
;RGMOD   EQU 099H
;RGACC   EQU 0B9H
PORT_Y	EQU 089H
RGADR   EQU 089H
RGSCR   EQU 0E9H
RGMOD   EQU 0C9H
;RGACC   EQU 0A9H
;PGACC   EQU 0FCH
CNF_PORT EQU 7Ch

ALTERA  EQU 1400H

WG_COM          EQU     00FH
WG_TRK          EQU     03FH
WG_SEC          EQU     05FH
WG_DATA         EQU     07FH
P_DOS_FF        EQU     0FFH

BUFER_RD        EQU     5D25H

PR_BUFER	EQU	05B00H
AUTO_5B08	EQU	05B08H
AUTO_5B5C	EQU	05B5CH
COPY_P128	EQU	05B5CH
AUTO_5BFF	EQU	05BFFH
K_STATE		EQU	05C00H
KEY_TIME	EQU	05C09H
REP_K_TYME	EQU	05C10H
ZG		EQU	05C36H
ERR_BEEP	EQU	05C38H
KEY_BEEP	EQU	05C39H
ERR_NR		EQU	05C3AH
FLAGS		EQU	05C3BH
TV_FLAG		EQU	05C3CH
ERR_SP		EQU	05C3DH
LIST_SP		EQU	05C3FH
MODE		EQU	05C41H
NEW_PPC		EQU	05C42H
NEW_S_PPC	EQU	05C44H
PPC		EQU	05C45H
SUB_PPC		EQU	05C47H
BORDER		EQU	05C48H
EDIT_PPC	EQU	05C49H
BAS_VARS	EQU	05C4BH
WORK_VAR	EQU	05C4DH
CHANS		EQU	05C4FH
CUR_CHL		EQU	05C51H
BAS_PROG	EQU	05C53H
NEXT_LINE	EQU	05C55H
DATA_ADR	EQU	05C57H
E_LINE		EQU	05C59H
K_CUR		EQU	05C5BH
CH_ADR		EQU	05C5DH
SINT_ER_AD	EQU	05C5FH
WORK_SP		EQU	05C61H
STK_BOT		EQU	05C63H
STK_END		EQU	05C65H
B_REG		EQU	05C67H
MEM_CALC	EQU	05C68H
FLAGS_2		EQU	05C6AH
L_SCR_SIZE	EQU	05C6BH
AUTO_LST_L	EQU	05C6CH
OLD_PPC		EQU	05C6EH
OLD_S_PPC	EQU	05C70H
FLG_INPUT	EQU	05C71H
S_VAR_LEN	EQU	05C72H
SINT_TB_ADR	EQU	05C74H
RAND_SEED	EQU	05C76H
FRAMES		EQU	05C78H
UDG		EQU	05C7BH
X_Y_COORD	EQU	05C7DH
PRN_POS		EQU	05C7FH
ADR_PR_BUF	EQU	05C80H
ECHO_E		EQU	05C82H
SCR_PL_M	EQU	05C84H
SCR_PL_L	EQU	05C86H
SCR_POS_M	EQU	05C88H
SCR_POS_L	EQU	05C8AH
SCROLL_ST	EQU	05C8CH
ATTR_P		EQU	05C8DH
MASK_P		EQU	05C8EH
ATTR_T		EQU	05C8FH
MASK_E		EQU	05C90H
FLAGS_ATR	EQU	05C91H
MEM_BOT		EQU	05C92H
AUTO_5C9A	EQU	05C9AH
NMI_ADR		EQU	05CB0H
TOP_CLEAR	EQU	05CB2H
P_RAMTOP	EQU	05CB4H
BEG_ADRESS	EQU	05CB6H
RET_INS		EQU	05CC2H
AUTO_5CC3	EQU	05CC3H
DISK_A		EQU	05CC8H
DISK_B		EQU	05CC9H
DISK_C		EQU	05CCAH
DISK_D		EQU	05CCBH
CAT_SEC		EQU	05CCCH
DRV_READY	EQU	05CCDH
RD_WR_COM	EQU	05CCEH
VAR_1		EQU	05CCFH
AUTO_5CD1	EQU	05CD1H
AUTO_5CD2	EQU	05CD2H
AUTO_5CD3	EQU	05CD3H
AUTO_5CD5	EQU	05CD5H
DOS_ERROR	EQU	05CD6H
MED_START	EQU	05CD7H
DOS_CH_ADR	EQU	05CD9H
MED_LEN		EQU	05CDBH
FL_NAME		EQU	05CDDH
FL_N_2		EQU	05CDFH
FL_N_4		EQU	05CE1H
FL_N_6		EQU	05CE3H
FL_N_7		EQU	05CE4H
FL_TYPE		EQU	05CE5H
FL_START	EQU	05CE6H

FL_LEN		EQU	05CE8H
START_CLASTER	EQU	FL_LEN

FL_SIZE		EQU	05CEAH
FL_PLACE	EQU	05CEBH
VAR_2		EQU	05CEDH
INTERF_I	EQU	05CEFH
VAR_2_0		EQU	05CF1H
VAR_2_1		EQU	05CF2H
CONT_SEC	EQU	05CF4H
CONT_TRK	EQU	05CF5H
OPER_DISK	EQU	05CF6H
DOS_FLAG	EQU	05CF7H
DISK_1_FLG	EQU	05CF8H
DISK_2_FLG	EQU	05CF9H
TIME_A		EQU	05CFAH
TIME_B		EQU	05CFBH
TIME_C		EQU	05CFCH
TIME_D		EQU	05CFDH
COMAND_WG	EQU	05CFEH
SEC_NUM		EQU	05CFFH
CONT_BUF_ADR	EQU	05D00H
WORK_2		EQU	05D02H
WORK_4		EQU	05D04H
S_NAME_NUM	EQU	05D06H
N_DEL_FLS	EQU	05D07H
FST_SYM_NAME	EQU	05D08H
VAR_3		EQU	05D09H
BUF_FLAG        EQU     05D0CH
BAS_DOS_FLG	EQU	05D0EH
DOS_ERR_2	EQU	05D0FH
ERR_3D00	EQU	05D10H
ADR_DOS_COM	EQU	05D11H
ERR_SP_COPY	EQU	05D13H
MSG_FLAG	EQU	05D15H
PDOS_COPY	EQU	05D16H
FLAG_BOOT	EQU	05D17H
INT_1_VAR	EQU	05D18H
CONT_DISK	EQU	05D19H
ADR_RET		EQU	05D1AH
DOS_SP		EQU	05D1CH
FL_NUMBER	EQU	05D1EH
COM_LN_COPY	EQU	05D20H
L_5D23		EQU	05D23H
BUFER		EQU	05D25H
AUTO_5D33	EQU	05D33H
CLEAR_SEC	EQU	05E06H
CLEAR_TRK	EQU	05E07H
TYPE_DISK	EQU	05E08H
N_FILES		EQU	05E09H
FREE_SEC	EQU	05E0AH
CODE_10H	EQU	05E0CH
DISK_MRK_1	EQU	05E0FH
DISK_ALT_NM	EQU	05E10H
N_DEL_FL	EQU	05E19H
DISK_NAME	EQU	05E1AH


;RET_PAGE0 MACRO
;	LD A,0
;	OUT (PAGE0),A
;	ENDM
;RET_PAGE1 MACRO
;	LD A,5
;	OUT (PAGE1),A
;	ENDM
;RET_PAGE2 MACRO
;	LD A,2
;	OUT (PAGE2),A
;	ENDM
;RET_PAGE3 MACRO
;	LD A,0
;	OUT (PAGE3),A
;	ENDM

DSS MACRO adr,dt
IF ADR GE $
REPT (adr-$)/16
DB dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt
ENDM
REPT adr-$
DB dt
ENDM
ELSE
.PRINTX "Error memory relocation."
ENDIF
ENDM

CALL_48 MACRO adr
        LOCAL ADR_R

        PUSH HL
        LD HL,ADR_R
        PUSH HL
        LD HL,SW_ROM
        PUSH HL
        LD HL,adr
        JP JP_HL_48
ADR_R:  POP HL

        ENDM

CALL_48X MACRO adr
        LOCAL ADR_R

        PUSH HL
        LD HL,ADR_R
        EX (SP),HL

        PUSH HL
        LD HL,SW_ROM
        EX (SP),HL

        PUSH HL
        LD HL,adr
        EX (SP),HL

        JP SW_ROM
ADR_R:
        ENDM

RAMD_KEY MACRO
	SUB 4
	DI
	LD B,SYS_PAGE
	LD C,PAGE3
	OUT (C),B
	LD HL,RAMD_KEYS
	ADD A,L
	LD L,A
	DEC L
	LD (A_RAMD_VARS),HL
	INC L
	LD L,(HL)
	RET_PAGE3
	EI
	LD A,L
	ENDM




;    Поpты Sprinter. (байты PORT_X)<<
;    0  - port FF<<
;    1  - port keyboard<<
;    2  - port BORDER<<
;    3  - port 1FFDh<<
;    4  - port 7FFDh<<
;    5  - port 3FFDh<<
;    6  - port Start-ROM<<
;    7  - port Start-ROM-ALT<<
;    8  - port ROM-BASIC48<<
;    9  - port ROM-BASIC128<<
;    10 - port ROM-TR-DOS<<
;    11 - port ROM-EXPANSION<<
;    12 - port ROM-BASIC48-ALT<<
;    13 - port ROM-BASIC128-ALT<<
;    14 - port ROM-TR-DOS-ALT<<
;    15 - port ROM-EXPANSION-ALT<<
;    16 ─┐<<
;    .. ─┤<<
;    31 ─┴─ports RAM-PAGES - поpты указывающие, какая стpаница ОЗУ<<
;подключена в качестве стpаницы 0..F в конфигуpации Scorpion.<<
;    33 - port RAM-0 стpаница ОЗУ подключаемая в нулевое окно пpоцессоpа<<
;    34 - port RAM-5 стpаница ОЗУ подключаемая в пеpвое окно пpоцессоpа<<
;    35 - port RAM-2 стpаница ОЗУ подключаемая во втоpое окно пpоцессоpа<<
;    36 - port CONFIG<<
;    37 - port COVOX-1<<
;    38 - port COVOX-2<<
;    39 - port AY-3-8910-adr<<
;    40 - port AY-3-8910-dat<<
;    41 - port KEMPSTON<<
;    42 - port ISA-interface<<
;    43 ─┐reserv<<
;    .. ─┤<<
;    47 ─┘<<
;    48 - 51 поpты ВГ93<<
;    52 - поpт DOS-1<<
;    53 - поpт DOS-2<<
;    54 ─┐ служебные поpты<<
;    .. ─┤<<
;    63 ─┘<<
;    64 ─┐ поpты IDE interface<<
;    .. ─┤<<
;    79 ─┘<<
;    80..127 - pезеpв.<<
;    128..143 - поpты идентификатоpа машины ( только для чтения.)<<
;    144..254 - pезеpв<<
;    255 - нуль-поpт - отключенное состояние.<<
;

