
CS      EQU #E3
SS      EQU #0E

; Буфер, адрес, сектор/дорожка, страница (buffer, addr, sector/track, page)
; B = кол-во секторов (number of sectors)

        MACRO EXLOAD p1,p2,p3,p4
        LD HL,p1
        LD DE,p2
        LD IX,(p3)
        LD C,#05
        LD A,p4
        EX AF,AF'
        LD A,SL_BANK
        CALL GUI
        ENDM 

; Буфер, адрес, длина в байтах, страница (buffer, addr, byte length, page)
; B = кол-во секторов (number of sectors)
; Запись файла (save file)

        MACRO EXSAVEF p1,p2,p3,p4
        LD HL,p1
        LD DE,p2
        LD IX,p3
        LD C,11
        LD A,p4
        EX AF,AF'
        LD A,SL_BANK
        CALL GUI
        ENDM 

        MACRO RestSpp
        DI 
        LD SP,(Spp)
        EI 
        ENDM 

        MACRO HLFHL
        LD A,(HL)
        INC HL
        LD H,(HL)
        LD L,A
        ENDM 

        MACRO DEFHL ;macro for LD DE,(HL)
        LD E,(HL)
        INC HL
        LD D,(HL)
        ENDM 

        MACRO DEFHL1 ;LD DE,(HL):INC HL
        LD E,(HL)
        INC HL
        LD D,(HL)
        INC HL
        ENDM 

        MACRO Amul8
        ADD A,A
        ADD A,A
        ADD A,A
        ENDM 

        MACRO CPHL0
        LD A,H
        OR L
        ENDM 

        MACRO DHL_
        INC H
        LD A,H
        AND #07
        JR NZ,$+12
        LD A,L
        SUB #E0
        LD L,A
        JR NC,$+6
        LD A,H
        SUB #08
        LD H,A
        ENDM 

        MACRO HL0
        AND A
        SBC HL,HL
        ENDM 

; Constants of GUI

RadioOn  EQU 1              ; радио-кнопка вкл. (radio-button on)
RadioOff EQU 2              ; радио-кнопка вык. (radio-button off)
SwchOn   EQU 3              ; флажок вкл. (flag on)
SwchOff  EQU 4              ; флажок вык. (flag off)
Nil      EQU 0              ; отсутстивие значения (ноль) (no value)
NEWCAT   EQU #FFFF-#0800    ; полный каталог (full directory)
CAT      EQU NEWCAT-#0900   ; сортированный список каталога (sorted file list)

; Main variable of GUI

Numb    DEFB 0    ; Номер выбранной подсветки (number of selected highlighting)
But     DEFB 0    ; Номер выбранной кнопки (number of selected button)
DIRECT  DEFB 0
MDIRECT DEFB 0
ARW_X   DEFB 127  ;нач. (starting cordinates...)
ARW_Y   DEFB 95   ;  коорд. стр. (...of the cursor)
ARW_XC  DEFB 0    ;а здеся в знакомствах (in characters here)
ARW_YC  DEFB 0    ;
ARWXMN  DEFB 0    ;x min
ARWXMX  DEFB 255  ;x max
ARWYMN  DEFB 0    ;y min
ARWYMX  DEFB 191  ;y max
XPLACE  DEFW 22528
ARW_ADR DEFW ARWSPR
STEP    DEFB 6
LEVEL   DEFB 10
SPEED   DEFB 1
ARWSPR  DB 63,0,15,64,131,48,129,44
        DB 193,16,193,20,224,2,252,0
        DB 255,0,255,0
KJOY    DB 0 ; KEMPSTON JOY

; Main variable of ListBox

SpAdr    DW 0    ; адрес начала списка (start addr of the list)
SpAdrT   DW 0    ; адрес начала видиммого списка (start addr of visible list)
SpLen    DW 0    ; длина полного заголовка списка (length of full title of the list)
SpLenW   DW 0    ; длина заголовка визуального списка (length of title of visual list)
SpLenD   DW 0    ; длина заголовка вместе с доп. текстом (length of title with extra text)
SpDop    DW 0    ; адрес процедуры дополнения списка (addr of procedure "add to list")
SpBar    DB 0    ; длина подсветки (length of highlighting)
SpFiler  DB 0    ; это файлер? (is this a file selector?)
SpXY     DW 0    ; X,Y списка в окне (X,Y of the list in the window)
SelSp    DB 0    ; номер элемента из списка (item number in the list)
SpDop2   DW 0    ; дополнение текста уже после списка (add text after the list)
TAB_SORT DW 0    ; таблица сортировки (sorting table)


; Main Constants of TRDOS

LAST_KEY   EQU 23560
FILE_PARAM EQU #5CDD
FILE_NAME  EQU #5CDD
FILE_TYPE  EQU #5CE5
START_ADR  EQU #5CE6
BYTES_LEN  EQU #5CE8
SEC_LEN    EQU #5CEA
START_SEC  EQU #5CEB
START_TRK  EQU #5CEC
TEK_SEC    EQU #5CF4
TEK_TRK    EQU #5CF5

; Main variable of FDOS

Spp       DW 0         ; адрес стека, для выхода при ошибке (stack address for error handling)
MODE      DB #00       ; Флаг турбо драйвера (turbo driver flag)
RECAT     DB 0         ; Перечитывать ли каталог после записи (re-read directory after save)
RAMDR     DB 2         ; Диск для #3D13 (drive with #3D13)
OVERF     DB 0
ResAdr    DW 0         ; адрес резидента (resident addr)
END_DISK  DW 0         ; последние трек/сектор диска (last track/sector of the disk)

; Disk constants

All_File EQU 228
Free_Sec EQU 229
End_Disk EQU 225

; ReadKey variable

KEYS
KEY1    DB 0
KEY2    DB 0

; Mouse variable
FIRE    DB 0
CANCEL  DB 0

SPACE   DEFS 50;51
CROSSON	db 0;#ff ;прицел (crosshair)

BRK     DB 0          ; %001 - огонь (fire)
                      ; %010 - отмена (cancel)
                      ; %100 - мыша (mouse)
                      ; %000 - halt

FREE_SEC        DW 0  ; свободно секторов на диске (number of free sectors on the disk)
ALL_FILE        DW 0  ; всего файлов на диске (number of files on the disk)

; Эти переменные настраиваются после вызова LOAD_CAT, который,
; в свою очередь, вызывают дисковые функции GUI (файлер,
; запись файла, четение файла с чтением заголоквка...)
;(the following variables are set after calling LOAD_CAT, it is called
;by GUI disk functions (file selector, save file, load file with reading the header...))
; END_DISK      последний трек/сектор диска (last track/sector of the disk)
; FREE_SEC      свободно секторов на диске (number of free sectors on the disk)
; ALL_FILE      всего файлов на диске (number of files on the disk)

MICE            DB 0;#ff      ; мыша (mouse flag)
MB              DB 0      ; реверс (reverse buttons flag)

	display	"mice:", MICE