


ProstoFignia   ret
                     ld de,#0820
                     call RealWin
                     ld l,d
                     ld h,e
                     ld (Prosto_ix),hl
                     push ix
                     ld ix,Prosto_ix
                     
                     call BoxPix
                     pop ix
                    ret




                     
Prosto_ix       DB 0,0,50,80



; Процедуры прорисовки штриховой рамочки и бегущих штрихов
; in: DE - D=y , E=x in pixels , BC - B=sy , C=sx

;Вывод рамки под всеми текущими окнами

; Буфер оконной системы
BufWinBox  
           DS 24*4     ; 1-bit for 1 sell 8x8 pixels => 32x24 sells (96 bytes)
           DB 0
           
FlBufWinBox   ; Заполнение буфера
               ld hl,BufWinBox
               ld de,BufWinBox+1
               ld (hl),0
               ld bc,24*4-1
               ldir                 ; очистка

               ld hl,STACK
               ld de,(STACK_P)
               push hl
               or a
               sbc hl,de
               pop hl
              jr z,            ; окна закончились
            
               ; есть окно
               
               ld c,(hl)
               inc hl
               ld b,(hl)
               inc hl
               push bc
               pop ix          ; адрес данных окна

               push hl,de
               ld c,(ix+0)     ; x
               ld a,c
               and 7
               inc a
               ld b,a
               ld a,c
               rrca : rrca : rrca
               and #03
               ld l,a
               ld h,0
               ld a,(ix+1)   ; y
               add a,a
               add a,a
               add a,l 
               ld de,BufWinBox
               add hl,de       ; hl - addres in bufer
               ld a,1
1              rrca
              djnz 1B
               ld c,a          ; c - bit
               
               ld a,(ix+3)     ; sy
1              ex af,af'
               ld b,(ix+2)     ; sx
               ld e,l
               ld d,h 
2              ld a,c
               or (hl)
               ld (hl),a
               rrc c
              jr nc,3F
               inc hl              
3             djnz 2B
               ld hl,#0004    ; новая строка
               add hl,de
               ex af,af'
               dec a
              jr nz,1B                                    
               pop de,hl






FrameRun
;-------------------------------------------------------------------
; Процедуры прорисовки штриховой рамочки и бегущих штрихов
; in: DE - D=y , E=x in pixels , BC - B=sy , C=sx , A - point
; A = 0 - left-up , 1 - right-up , 2 - left - down , 3 - right down











; бегущая горизонтальная штриховка, вершина слева
; in DE -  D=y , E=x in pixels , C - sx
; out HL - start adr , BC - B=sx , DE - E=first pixel bit , D=second pixel bit
.rlineset    
               ld b,c
               call PixHL
               push hl
               call XbitE_
               push bc
               ld c,a
               ld e,a
               add a,a
               add a,a
               add a,a
               add a,a
               ld d,a
            
1              ld a,b
               and 4
              jr nz,3F
               ld a,(hl)      ; делаем штрих
               xor c
               ld (hl),a
               rrc c
              jr nc,2F
               inc l
               ld a,l
               and #1F
              jr z,5F            ;  exit вышли за экран
2             djnz 1B
              jr 5F
              
3              rrc c          ; пропускаем штрих
              jr nc,4F
               inc l
               ld a,l
               and #1F
              jr z,5F            ;  exit вышли за экран
4             djnz 1B

5              pop bc,hl          
              ret
              
; На прерывании - создание движения штрихов              
; in HL - start adr , BC - B=sx >0 , DE - E=first pixel bit , D=second pixel bit
; out DE - E= next first pixel bit , D=next second pixel bit             
            
.rlineani    
             ld a,b
             dec a
             ex af,af'
             ld bc,#0F1F
             
1            ex af,af'
             ld a,e
             xor (hl)
             ld (hl),a
             ld a,e
             and b
            jr z,2F
             inc l
             ld a,l
             and c
            jr z,      ; exit
2            ex af,af'
             sub 4
            jr c,      ; exit
             ex af,af'
             ld a,d
             xor (hl)
             ld (hl),a
             ld a,d
             and b
            jr z,3F
             inc l
             ld a,l
             and c
            jr z,      ; exit
3            ex af,af'
             sub 4
            jr nc,1B     ; loop
             
4            rlc d
             rlc e
            ret

              

;-------------------------------------------------------------------
XbitE_        ld a,e
XbitA_        and 7
              inc a
              ld b,a
              ld a,1
1             rrca
             djnz 1B
             ret