Subversion Repositories Kolibri OS

Rev

Rev 9941 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9941 Rev 9948
Line 15... Line 15...
15
;;                                                              ;;
15
;;                                                              ;;
16
;;  See file COPYING for details                                ;;
16
;;  See file COPYING for details                                ;;
17
;;                                                              ;;
17
;;                                                              ;;
18
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
18
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 19... Line 19...
19
 
19
 
Line 20... Line 20...
20
$Revision: 9941 $
20
$Revision: 9948 $
21
 
21
 
22
uglobal
22
uglobal
23
align 4
23
align 4
Line 1599... Line 1599...
1599
vesa20_drawbackground_tiled:
1599
vesa20_drawbackground_tiled:
Line 1600... Line 1600...
1600
 
1600
 
1601
        pushad
1601
        pushad
1602
; External loop for all y from start to end
1602
; External loop for all y from start to end
1603
        mov     ebx, [background_window + WDATA.draw_data.top]    ; y start
1603
        mov     ebx, [background_window + WDATA.draw_data.top]    ; y start
1604
  dp2:
1604
  .dp2:
1605
        mov     ebp, [background_window + WDATA.draw_data.left]   ; x start
1605
        mov     ebp, [background_window + WDATA.draw_data.left]   ; x start
1606
; 1) Calculate pointers in WinMapAddress (does pixel belong to OS thread?) [ebp]
1606
; 1) Calculate pointers in WinMapAddress (does pixel belong to OS thread?) [ebp]
1607
;    and LFB data (output for our function) [edi]
1607
;    and LFB data (output for our function) [edi]
1608
;        mov     eax, [BytesPerScanLine]
1608
;        mov     eax, [BytesPerScanLine]
Line 1649... Line 1649...
1649
; eax = x, ebx = y (screen coordinates)
1649
; eax = x, ebx = y (screen coordinates)
1650
; ecx = deltax - number of pixels left in current tile block
1650
; ecx = deltax - number of pixels left in current tile block
1651
; edx = 1
1651
; edx = 1
1652
; esi -> bgr memory, edi -> output
1652
; esi -> bgr memory, edi -> output
1653
; ebp = offset in WinMapAddress
1653
; ebp = offset in WinMapAddress
1654
  dp3:
1654
  .dp3:
1655
        cmp     [ebp], dl
1655
        cmp     [ebp], dl
1656
        jnz     .next_pix
1656
        jnz     .next_pix
Line 1657... Line 1657...
1657
 
1657
 
1658
        push    eax ecx
1658
        push    eax ecx
Line 1697... Line 1697...
1697
        add     edi, [_display.bytes_per_pixel]
1697
        add     edi, [_display.bytes_per_pixel]
Line 1698... Line 1698...
1698
 
1698
 
1699
        add     ebp, edx
1699
        add     ebp, edx
1700
        add     eax, edx
1700
        add     eax, edx
1701
        cmp     eax, [background_window + WDATA.draw_data.right]
1701
        cmp     eax, [background_window + WDATA.draw_data.right]
1702
        ja      dp4
1702
        ja      .dp4
1703
        sub     ecx, edx
1703
        sub     ecx, edx
Line 1704... Line 1704...
1704
        jnz     dp3
1704
        jnz     .dp3
1705
 
1705
 
1706
; next tile block on x-axis
1706
; next tile block on x-axis
1707
        mov     ecx, [BgrDataWidth]
1707
        mov     ecx, [BgrDataWidth]
1708
        sub     esi, ecx
1708
        sub     esi, ecx
1709
        sub     esi, ecx
1709
        sub     esi, ecx
Line 1710... Line 1710...
1710
        sub     esi, ecx
1710
        sub     esi, ecx
1711
        jmp     dp3
1711
        jmp     .dp3
1712
 
1712
 
1713
  dp4:
1713
  .dp4:
1714
; next scan line
1714
; next scan line
1715
        inc     ebx
1715
        inc     ebx
1716
        cmp     ebx, [background_window + WDATA.draw_data.bottom]
1716
        cmp     ebx, [background_window + WDATA.draw_data.bottom]
1717
        jbe     dp2
1717
        jbe     .dp2
1718
        popad
1718
        popad
1719
        mov     [EGA_counter], 1
1719
        mov     [EGA_counter], 1