MScreenPgn   ; screen menu for bge (added for v 3.12) /DA
        DISP PgnAdr

MScreen  ld hl,main_
         ld (exitMGN.adr),hl
         ld ix,.Wscr
         ld (ix+6),%1111
.n_w_    call SlotOUTtxt
         call Win_
         cp 3          ; if Slots_ option
        jp z,.SLOTS_
         call CLOSE_
         cp #FF
        ret z
         ld e,a
         ld bc,.TBLscr
         call TAB_JP
        jp LOADSCR


.Wscr  DB 15,2,13,22,7*8,7,%00001111
; Bit 0 - окно с заголовком/без
; Bit 1 - "перерисовать" окно да/нет
; Bit 2 - тискать окно по экрану да/нет
; Bit 3 - выход из окна-ткнуть только лишь за пределами (CANCEL)
        DB 7*8+3
        DW .Tscr       ; объект-текст
        DW .Sscr       ; объект-подсветка (выборка)
        DW #FFFF

.Sscr    DB 1,6,11,128+3,%11      ; Поместить, Извлечь, Обменять
.Sslots_ DB 1,10,11,1,%111         ; Слоты
         DB 1,11,11,128+10,%11

.Sslts ;  DB 1,3,2,1,%11           ; slot 1    MScreen.Sslts
       ;  DB 3,3,2,1,%11           ; slot 2
       ;  DB 5,3,2,1,%11           ; slot 3
       ;  DB 7,3,2,1,%11           ; slot 4
       ;  DB 9,3,2,1,%11           ; slot 5
         DB #FA : DW WSltSelect.Sel_5       ; сноска
        DB #FF

.Tscr
        MSG_ExSCR_title : DB 13
        DB #0A : DW WSltSelect.Tslots : DB 15,13,13

        MSG_ExSCR_Put : DB 13
        MSG_ExSCR_Take : DB 13
        MSG_ExSCR_Exch : DB 13,13

        MSG_ScrSlots : DB 13
        MSG_Multiscr : DB 13
        MSG_Delete : DB 13
        MSG_ClearPx : DB 13
        MSG_BOX_CurrCol : DB 13
        MSG_BOX_Inv   : DB 13
        MSG_BOX_InvCol : DB 13
        MSG_GridOn  : DB 13
        MSG_GridOff : DB 13
        MSG_BrgOff : DB 13
        MSG_PxAddr
        DB 0

.TscrSlots_      MSG_ScrSlots : DB #FF

.TBLscr  DW saveRAM   ; 0 поместить
         DW loadRAM   ; 1 извлечь
         DW .swp_     ; 2 обменять
         DW Ret       ; 3 работа со слотами
         DW mscr      ; 4 мультискрин
         DW CLS_su    ; 5 удалить
         DW CLSscr_   ; 6 стереть экран (выбранным цветом)
         DW CLSATR    ; 7 текущий цвет
         DW .inv      ; 8 инвертировать
         DW .invCol   ; 9 инвертировать цвет
         DW .gridon   ; 10 включить сетку
         DW .gridoff  ; 11 выключить сетку
         DW groff_u   ; 12 выключить яркость
         DW .addrs    ; 13 адресация
         DW .setSlot_e ; 14 слот 1
         DW .setSlot_e ; 15 слот 2
         DW .setSlot_e ; 16 слот 3
         DW .setSlot_e ; 17 слот 4
         DW .setSlot_e ; 18 слот 5



.swp_     pop af        ; delete return adress
         jp SCram

.ld_     call LOADSCR
        jp SV_UNDO
.inv     call .ld_
         ld hl,#4000
         ld bc,#0018
1        ld a,(hl)
         cpl
         ld (hl),a
         inc hl
        djnz 1B
         dec c
        jr nz,1B
      ;  jp SAVESCR MScreen.invCol
        jr .svscr_

.invCol  call .ld_
         ld hl,#5800
         ld bc,#0003
1        ld a,(hl)
         ld e,a
         rrca
         rrca
         rrca
         ld d,a
         rrca
         rrca
         xor d
         and #38
         xor d
         xor e
         and #3F
         xor e
         ld (hl),a
         inc hl
        djnz 1B
         dec c
        jr nz,1B
.svscr_
        jp SAVESCR

.gridoff  ld a,(GRID_sw.fl)
          or a
         ret z
         jr 1F
.gridon   ld a,(GRID_sw.fl)
          or a
         ret nz
1         ld hl,GRID_SW
         jr .exMGNto_

.addrs     ld hl,ECOORD
.exMGNto_  ld (exitMGN.adr),hl
          ret
.setSlot_e  ld a,e
            sub 14    ; получили номер слота
            ld hl,SetSLOT_N_.NA_
            ld (hl),a
            dec hl   ; hl= SetSLOT_N_
           jr .exMGNto_

;.brgoff   call SV_UNDO
;         jp groff



.SLOTS_            ;   Slots_ option
            ld ix,.Wslots
            call POPUP
            ld (ix+6),%1111
            call Win_
            inc a     ; cp #FF
           jr nz,1F
.SLOTS_e    call CLOSE
            ld ix,.Wscr
            ld (ix+6),%1101
           jp .n_w_
1
             ld hl,WSltSelect.Tcopy
             ld de,SVSCR_SLOT
             dec a   ; or a
            jr z,1F
             ld hl,WSltSelect.Textract
             ld de,LDscr_SLOT
             dec a
            jr z,1F
             ld hl,WSltSelect.Tswap
             ld de,SWAP_SLOT
1            ld (.TSselADR),hl
             ld (SlotOPERAT.jp),de
         ;    ld hl,WSltSelect.Sel
         ;    ld de,.SSel
         ;    ld bc,25
         ;    ldir
             ld ix,.WSsel
             call POPUP
             call SlotOUTtxt
             ld a,%1111
1            ld (ix+6),a
             call Win_
             call check_curr_slot
            jr z,1B
             call CLOSE_
             cp #FF
            jr z,.SLOTS_e
             ld (SlotOPERAT.slot),a
             call LOADSCR
             ld hl,SlotOPERAT
            jp .exMGNto_


.Wslots  DB 15,2,13,7,7*8,7,%111
; Bit 0 - окно с заголовком/без
; Bit 1 - "перерисовать" окно да/нет
; Bit 2 - тискать окно по экрану да/нет
; Bit 3 - выход из окна-ткнуть только лишь за пределами (CANCEL)
         DB 0
         DW .TSlots       ; объект-текст
         DW .SSlots       ; объект-подсветка (выборка)
         DW #FFFF

.TSlots    DB #0A : DW .TscrSlots_   : DB 13
           DB #0A : DW WSltSelect.Tcopy  : DB 13
           DB #0A : DW WSltSelect.Textract : DB 13
           DB #0A : DW WSltSelect.Tswap  : DB 0

.SSlots    DB 1,3,11,128+3,%11
          DB #FF

.WSsel   DB 15,2,13,5,7*8,7,%1111
; Bit 0 - окно с заголовком/без
; Bit 1 - "перерисовать" окно да/нет
; Bit 2 - тискать окно по экрану да/нет
; Bit 3 - выход из окна-ткнуть только лишь за пределами (CANCEL)
           DB 0
           DW .TSsel       ; объект-текст
           DW .Sslts       ; объект-подсветка (выборка)
           DW #FFFF

.TSsel     DB #0A
.TSselADR  DW WSltSelect.Tcopy : DB 13,#0A
           DW WSltSelect.Tslots
          DB 0

;.SSel      DB 1,3,2,1,%11        ; 0 - 1 slot
;           DB 3,3,2,1,%11        ; 1 - 2 slot
;           DB 5,3,2,1,%11        ; 2 - 3 slot
;           DB 7,3,2,1,%11        ; 3 - 4 slot
;           DB 9,3,2,1,%11        ; 4 - 5 slot
;          DB #FF

;----------------------------
LMScreen=$-MScreen
        ASSERT  LMScreen < 6144
        DISPLAY "MScreen len   :",/a,LMScreen
        ENT
