Subversion Repositories Kolibri OS

Rev

Rev 1505 | Rev 1899 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
431 serge 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
983 diamond 3
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
431 serge 4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
593 mikedld 8
$Revision: 1710 $
9
 
803 alver 10
; // Alver 22.06.2008 // {
11
align 4
12
dtext_asciiz_esi:                          ; for skins title out
13
    push eax
14
    xor eax, eax
15
    inc eax
16
    jmp    dtext.1
17
; } \\ Alver \\
593 mikedld 18
 
1 ha 19
align 4
106 john 20
dtext:  ; Text String Output (rw by Johnny_B[john@kolibrios.org])
684 diamond 21
        ; ebx x & y
22
        ; ecx style ( 0xX0000000 ) & color ( 0x00RRGGBB )
139 diamond 23
        ; X = ABnnb:
24
        ; nn = font
684 diamond 25
        ; A = 0 <=> output esi characters; otherwise output ASCIIZ string
26
        ; B = 1 <=> fill background with color eax
27
        ; edx start of text
1 ha 28
        ; edi 1 force
29
 
803 alver 30
; // Alver 22.06.2008 // {
31
       push eax
32
        xor     eax, eax
33
.1:
34
; } \\ Alver \\
1 ha 35
        pushad
1300 serge 36
        call    [_display.disable_mouse]
1 ha 37
 
684 diamond 38
        movsx   eax, bx         ; eax=y
39
        sar     ebx, 16         ; ebx=x
40
        xchg    eax, ebx        ; eax=x, ebx=y
41
        cmp     esi, 255
139 diamond 42
        jb      .loop
684 diamond 43
        mov     esi, 255
139 diamond 44
.loop:
45
        test    ecx, ecx
46
        js      .test_asciiz
684 diamond 47
        dec     esi
139 diamond 48
        js      .end
49
        jmp     @f
50
.test_asciiz:
684 diamond 51
        cmp     byte [edx], 0
139 diamond 52
        jz      .end
803 alver 53
; // Alver 22.06.2008 // {
54
        cmp byte [esp+28], 1
55
        jne   @f
56
        dec     esi
57
        js        .end
58
; } \\ Alver \\
139 diamond 59
@@:
684 diamond 60
        inc     edx
61
        pushad
62
        movzx   edx, byte [edx-1]
139 diamond 63
        test    ecx, 0x10000000
64
        jnz     .font2
65
        mov     esi, 9
381 serge 66
        lea     ebp, [FONT_I+8*edx+edx]
139 diamond 67
.symloop1:
68
        mov     dl, byte [ebp]
69
        or      dl, 1 shl 6
70
.pixloop1:
71
        shr     dl, 1
72
        jz      .pixloop1end
73
        jnc     .nopix
74
        call    [putpixel]
75
        jmp     .pixloop1cont
12 halyavin 76
.nopix:
139 diamond 77
        test    ecx, 0x40000000
78
        jz      .pixloop1cont
79
        push    ecx
831 diamond 80
        mov     ecx, [esp+4+20h+20h]
139 diamond 81
        call    [putpixel]
82
        pop     ecx
83
.pixloop1cont:
84
        inc     eax
85
        jmp     .pixloop1
86
.pixloop1end:
87
        sub     eax, 6
88
        inc     ebx
89
        inc     ebp
90
        dec     esi
91
        jnz     .symloop1
106 john 92
        popad
139 diamond 93
        add     eax, 6
94
        jmp     .loop
95
.font2:
96
        add     edx, edx
381 serge 97
        lea     ebp, [FONT_II+4*edx+edx+1]
139 diamond 98
        push    9
99
        movzx   esi, byte [ebp-1]
100
.symloop2:
101
        mov     dl, byte [ebp]
102
        push    esi
103
.pixloop2:
104
        shr     dl, 1
105
        jnc     .nopix2
106
        call    [putpixel]
107
        jmp     .pixloop2cont
108
.nopix2:
109
        test    ecx, 0x40000000
110
        jz      .pixloop2cont
111
        push    ecx
831 diamond 112
        mov     ecx, [esp+12+20h+20h]
139 diamond 113
        call    [putpixel]
114
        pop     ecx
115
.pixloop2cont:
116
        inc     eax
117
        dec     esi
118
        jnz     .pixloop2
119
        pop     esi
120
        sub     eax, esi
121
        inc     ebx
122
        inc     ebp
123
        dec     dword [esp]
124
        jnz     .symloop2
125
        pop     eax
126
        add     dword [esp+28], esi
127
        popad
128
        jmp     .loop
129
.end:
130
        popad
803 alver 131
        pop  eax                ; << // Alver 22.06.2008 // <<
139 diamond 132
        ret
1710 art_zh 133
diff16 "font  code end ",0,$
134
diff16 "font  code size",dtext,$