; system overlays for BGE


OvrName     DB "bge_ovr"
.N          DB "0Cod",0

Ld_OVR      ;  call SetSYSTEMDISK
            ;  call .ld
            ; jp RetCURRENTDISK
;.ld           xor a
               call CallSYSTEMDISK
               xor a
              ld (FLAGOBJ),a
              ld hl,OvrName
              call FromName
              ld a,SEARCHFILE11
              call GUI
             ret c
              ld a,(SEC_LEN)
              ld b,a
              cp 28
              ccf
             ret c
              ld hl,#A500
              ld de,(START_SEC)
              ld c,5
              call DOS_FUNC_
             ret

StartOVR_sp pop hl
           jr StartOVR.hl
StartOVR    ld hl,#A500
.hl         ld (.addr_OVR),hl
            ld a,0    ; in a - overlay number
.num   EQU $-1
            ld c,a
            add a,"0"
            ld (OvrName.N),a
            ld a,(OVRLpages)         ; (ExtMem)
            or a
           jr z,.ld_OVR   ; загрузка оверлея

            ld hl,#C000
            ld a,c
            or a
            rra
           jr nc,1F
            ld h,#DB
1           ld (.HLov_),hl
            add a,6
            ld (.Aov_),a
            call .swpOVRL
            call .JA_OVR
;            call .swpOVRL
;.e         ret

.swpOVRL    ld a,0
.Aov_   EQU $-1
            call ONPAGE
            ld hl,#C000
.HLov_  EQU $-2
            ld de,#A500
            call  LD_UNDO.K_s1
            xor a
           jp ONPAGE

.ld_OVR    call Ld_OVR
          jp c,NoData
.JA_OVR   jp #A500
.addr_OVR  EQU $-2   ; адрес запуска в оверлее



;-------------------------------------------------------------------------------------
; Карта памяти дополнительных страниц для оверлеев и данных
;-------------------------------------------------------------------------------------

OVRLnums    EQU  8 ;10         ; количество оверлеев
OVRLnumPG   EQU  6    ; количество страниц минимально занимаемых оверлеями и данными

;-------------------------------------------------------------------------------------

; NUM  : ONPAGE :

; 6       0     #C000 = SetUp
        ; 1     #DB00 = Aerosol
ovFNTpg    EQU 6    ; страница хранения данных шрифта fnt и сигнатура для чанков и FNT
        ;       #F600 = font .fnt

; 7       2     #C000 = Brushes
        ; 3     #DB00 = Sprites
ovCHNKpg   EQU ovFNTpg+1    ; страница первой части хранения чанков
        ;       #F600 = .chnk

; 8       4     #C000 = FNT + CHR
        ; 5     #DB00 = Plugin List menu      ;Sprite export
ovCHNKpg2  EQU ovCHNKpg+1 ; вторая часть хранения данных чанков
        ;       #F600 = .chnk2

; 9       6     #C000 = Disk Service
        ; 7     #DB00 = Sprite Hacker & Chanks & About

ovCHRpg    EQU  10
; 10      8     #C000 = CHR data segment

ovSPRTpg   EQU   11       ; ovCHRpg+1
; 11            #C000 = Sprites data segment


;-------------------------------------------------------------------------------------
; Additional pages useds for overlays (if memory present)
; Дополнительные страницы используемые оверлеями (если хватает памяти)
;-------------------------------------------------------------------------------------
ovADDnumPG  EQU 6        ; max. количество дополнительных страниц нужных для доп сервисов оверлеев


;-------------------------------------------------------------------------------------

; NUM  : ONPAGE :

ovAddVARpg  EQU  ovSPRTpg+1
; 12    ;       Page for varios addition operation

ovAnumsVARpgs  EQU 1       ; количество страниц требуемых до начала слотов


ovScrSLOTSpg  EQU  ovAddVARpg+ovAnumsVARpgs     ; Номер страницы с которой начинаются слоты экранов.

;               #C000 = scr 1    ; Segments for screens slots...
        ;       #DB00 = undo 1

;               #C000 = scr 2
        ;       #DB00 = undo 2

;               #C000 = scr 3
        ;       #DB00 = undo 3

;               #C000 = scr 4
        ;       #DB00 = undo 4

;               #C000 = scr 5
        ;       #DB00 = undo 5


;----------------------------------------------------------------------------------------
; Переменные определяющие страницы оверлеев и данных
;----------------------------------------------------------------------------------------

OVRLpages    DB 6          ; количество страниц занимаемых оверлеями и данными

ovADDpages   DB 0          ; реальное количество предоставленных доп. страниц

SlotsInDisk  DB 0         ; флаг использования недостающих слотов на системном диске BGE

SlotsOnDISK  DB 0         ; количество слотов используемых на диске

SlotsOnRAM   DB 0         ; количество слотов используемых в памяти

SlotsNUMS    DB 0         ; общее количество используемых слотов

;----------------------------------------------------------------------------------------
