; INIT PROCEDURES FOR BGE
; Одноразовые процедуры затираемые модулями после использования


InitBGE         ; собственно инициация BGE

               EXPORT  InitBGE

               ld hl,Main
               push hl
               ld (SPP),sp
          ;     ld a,GUIPage+#10
          ;     ld (GUI_PAGE),a
          ;     ld a,SuxPage|#10
          ;     ld (STORE_PAGE),a
               ld a,#10
               ld (S_PAGE),a
            ;   ld hl,Resident
            ;   ld (ResAdr),hl
               ld a,(#5D19)
               ld (Sys_Disk),a
               ld (Curr_Disk),a

               call GuiRam

               ld c,0
               ld a,#FE       ; CAPS SHIFT pressed varify
               in a,(#FE)
               rra
              jr nc,1F
               ld a,#7F       ; SIMBOL SHIFT pressed varify
               in a,(#FE)
               rra
               rra
              jr c,2F
               inc c
1              inc c
2              ld a,c        ; 0 - ничего , 1 - CS , 2 - SS
               push af
               ld hl,IniSetUp_chk
               cp 2
              jr nz,1F
               ld hl,ZeroSetUp   ; снимаем память, мышь и джойстик
1              ld (AddIniSetUp_),hl
               ld a,LOAD_CAT   ; загружаем каталог
               call GUI
               call LdConfig    ; грузим настройки
               pop af

  ;             push af
  ;             cp 2
  ;             call nz,ch_kemps    ; определяем наличие мыши/джойстика
  ;             pop af
        ;       or a
        ;      jr z,2F
        ;       dec a
        ;      jr z,1F
        ;        ; SS - Обнуление мыши и джойстика + память на 128 K
        ;        xor a
        ;        ld (KJOY),a
        ;        ld (ExtMem_),a
        ;        call ch_kemps.nms
                or a
1              call nz,SetUpOVRL

2              ld a,(v_rgbdef)
               ld (REALRGB),a

               call startCONF    ; определяем тип памяти

               call MemBrFill     ; Закидываем в свободные остатки памяти данные кистей
               call KeybLa.loadkbd  ; Загружаем раскладку по умолчанию

        ;       ld hl,RUN.b        ; Закидываем адреса выполнения программ на ретурнах
        ;      push hl
               ld hl,Fldadd
              push hl
               ld hl,SV_UNDO
              push hl
               ld hl,SAVESCR2
              push hl
               ld hl,SAVESCR
              push hl
               ld hl,CLS
              push hl
               ld hl,Fldlst
              push hl
               ld hl,TESTRD_
              push hl
               ld hl,PMask.initT
              push hl

               xor a             ; загрузка оверлеев и настройка флагов расширенной памяти
               ld d,a
               ld e,a
               ld c,a
               ld a,(ExtMem)
               or a
              jr z,.Eflgput

               ld a,AddPage
               call RAM

               ld hl,#A500       ; сохраняемся
               ld de,#C000
               ld bc,6912
               ldir

               ld hl,AddOVRL
               ld de,TxBUFF
               ld bc,lAddOVRL
               ldir
               call ADDOVRL

               ld c,OVRLnumPG   ; проверяем хватает ли памяти на слоты и прочие фичи
               ld a,(ExtPage)
               ld d,a
               ld e,0
               sub OVRLnumPG+6
               ld b,a
               ld a,c
              jr z,3F
               ld a,e
              jr c,2F
               ld a,b
               ld e,ovADDnumPG
               cp e
              jr nc,1F
               ld e,b
1              ld a,c
               add a,e
2              ld c,a       ; to (OVRLpages)
3              ld a,256-6   ; -6
               add a,d      ; [ExtPage]-6
               sub c
               ld d,a
            ;  jr c,1F
              ; cp list_pages
              ; ld d,#FF
              jr nc,.Eflgput
1              ld d,0
.Eflgput       ld a,c
               ld (OVRLpages),a
               ld a,e
               ld (ovADDpages),a
               xor a
               ld (ExtPgns),a

               call iniSLOTSscrs       ; первичная настройка слотов

                                 ; загрузка скина
               ld hl,Init_Add
               ld de,TxBUFF
               ld bc,lInit_Add
               ldir

               ld a,GUIPage
               call RAM

               ld hl,FnGfx
               call FromName
               ld c,#0A
               call DOS_FUNC_
              ret c

               ld de,FILE_PARAM
               ld bc,#10
               ldir
               ld a,(SEC_LEN)
               cp #1B    ; 27
              ret nz
                ld hl,#A500
                ld de,(START_SEC)
                ld bc,#1B05

               jp INIT_ADD

; -------

AddOVRL        DISP TxBUFF

ADDOVRL        ld bc,OVRLnums*256+0
1
               ld a,"0"
               add a,c
               ld (OvrName.N),a
               push bc
2              call Ld_OVR
              jr nc,3F
               call NoData_
              jr 2B
3              pop bc
               push bc
               ld de,#C000
               ld a,c
               or a
               rra
              jr nc,4F
               ld d,#DB
4              add a,6        ; page
               call ONPAGE
               ld hl,#A500
               ld bc,6912
               ldir
               ld a,AddPage
               call EX_RAM
               pop bc
               inc c
              djnz 1B

               ld de,#A500     ; восстанавливаемся
               ld hl,#C000
               ld bc,6912
               ldir
              ret
.e
               ENT
lAddOVRL     EQU $-AddOVRL

           ASSERT  ADDOVRL.e < #A500
           DISPLAY "   $iOV free :",/a, #A500-ADDOVRL.e


; -------

Init_Add       DISP TxBUFF

INIT_ADD       call DOS_FUNC_
              ret c
               ld a,(#A500+6144)   ; set menu-color
;               ld hl,BUTTONS+4  ; color
;               ld de,8
;               ld b,BUTTONS.num
;1              ld (hl),a
;               add hl,de
;              djnz 1B
               ld (BUTTONS.col1),a    ; set menu-color
               ld (BUTTONS.col2),a
               ld (BUTTONS.col3),a
               ld (BUTTONS.col4),a

               ld hl,#A500+#1000   ; set font
               ld de,#C000
               ld bc,2048
              push bc
               ldir
               ld a,RamPage
               call RAM
               ld hl,#A500+2047
               ld de,#A800+2047
              pop bc
               lddr
               ld a,#A8
               ld (rasch+1),a
               ld ix,cutix
               ld de,#DB00  ; de=#DB00

              ld b,4
dz2          push bc
              dec b
             jr nz,1F
              inc (ix+0)
              inc (ix+0)
              inc (ix+0)
             push de
              ld de,sprSPACES
              dec (ix+2)
              call SaveWS
              inc (ix+2)
             pop de
              inc (ix+0)
              ld b,bgeSPRTnum-48
             jr dz1
1             ld b,16
dz1          push bc
              call SaveWS
              inc (ix+0)
              inc (ix+0)
             pop bc
            djnz dz1
            pop bc
             xor a
             ld (ix+0),a
             inc (ix+1)
             inc (ix+1)
            djnz dz2
             ld ix,cutix2
             ld de,#A500
             push de
             call SaveWS
             pop hl
             ld de,ARWSPR
             ld bc,10*2
             ldir
             ld a,#40
             ld (rasch+1),a
          ;   call GUI_E
         ;    xor a
         ;  jp PMask.initT
           ret
INIT_ADD.e
             ENT
lInit_Add  EQU $-Init_Add

           ASSERT  INIT_ADD.e < #A500
           DISPLAY "   $iPL free :",/a, #A500-INIT_ADD.e

; -------

        INCLUDE "autoconf.asm"       ; конфигурация

FnGfx   DB "bgegfx  scr"


; re move to SetUp : ch_kemps  ; проверка наличия kempston joistick и mouse если установлены галочки.

ZeroSetUp      ; SS - Обнуление мыши и джойстика + память на 128 K
                xor a
                ld (v_joy),a
                ld (v_ext),a
                ld (v_mouse),a
               jp (hl)

MemBrFill    ret
              ld hl,.ToName
              call FromName
           ;   ld c,#0A
           ;   call DOS_FUNC_
              ld a,SEARCHFILE11
              call GUI
             ret c
            ;  ld de,FILE_PARAM
            ;  ld bc,#10
            ;  ldir
              ld a,(SEC_LEN)
              cp #04
             ret nz
              ld b,a

         ;      EXLOAD #8000,Brs_sv_s,START_SEC,PgnPage2
         ;     jp RAM_GUI
         ;  ret

.ToName      DB "bgebrs  brs",0
;.brs_boof

; начальные значения кистей BGE перенесены в файл BRS_data.asm /DA



             ASSERT  $ < #BE80 ; for depacker and stack
             DISPLAY "Length Init     :",/a, $-InitBGE
             DISPLAY " Limit $ :",/a, #BE80-$
