Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
425 victor 1
$Revision: 425 $
1 ha 2
align 4
106 john 3
dtext:  ; Text String Output (rw by Johnny_B[john@kolibrios.org])
1 ha 4
        ; eax x & y
139 diamond 5
        ; ebx style ( 0xX0000000 ) & color ( 0x00RRGGBB )
6
        ; X = ABnnb:
7
        ; nn = font
8
        ; A = 0 <=> output edx characters; otherwise output ASCIIZ string
9
        ; B = 1 <=> fill background with color esi
1 ha 10
        ; ecx start of text
11
        ; edi 1 force
12
 
13
        pushad
139 diamond 14
        call    [disable_mouse]
1 ha 15
 
139 diamond 16
        mov     ebp, ecx        ; ebp=pointer to text
17
        mov     ecx, ebx        ; ecx=color
18
        movsx   ebx, ax         ; ebx=y
19
        sar     eax, 16         ; eax=x
20
        cmp     edx, 255
21
        jb      .loop
22
        mov     edx, 255
23
.loop:
24
        test    ecx, ecx
25
        js      .test_asciiz
26
        dec     edx
27
        js      .end
28
        jmp     @f
29
.test_asciiz:
30
        cmp     byte [ebp], 0
31
        jz      .end
32
@@:
33
        push    edx
34
        movzx   edx, byte [ebp]
35
        inc     ebp
36
        test    ecx, 0x10000000
37
        jnz     .font2
38
        pushad
39
        mov     esi, 9
381 serge 40
        lea     ebp, [FONT_I+8*edx+edx]
139 diamond 41
.symloop1:
42
        mov     dl, byte [ebp]
43
        or      dl, 1 shl 6
44
.pixloop1:
45
        shr     dl, 1
46
        jz      .pixloop1end
47
        jnc     .nopix
48
        call    [putpixel]
49
        jmp     .pixloop1cont
12 halyavin 50
.nopix:
139 diamond 51
        test    ecx, 0x40000000
52
        jz      .pixloop1cont
53
        push    ecx
54
        mov     ecx, [esp+4+4]
55
        call    [putpixel]
56
        pop     ecx
57
.pixloop1cont:
58
        inc     eax
59
        jmp     .pixloop1
60
.pixloop1end:
61
        sub     eax, 6
62
        inc     ebx
63
        inc     ebp
64
        dec     esi
65
        jnz     .symloop1
106 john 66
        popad
139 diamond 67
        add     eax, 6
68
        pop     edx
69
        jmp     .loop
70
.font2:
71
        pushad
72
        add     edx, edx
381 serge 73
        lea     ebp, [FONT_II+4*edx+edx+1]
139 diamond 74
        push    9
75
        movzx   esi, byte [ebp-1]
76
.symloop2:
77
        mov     dl, byte [ebp]
78
        push    esi
79
.pixloop2:
80
        shr     dl, 1
81
        jnc     .nopix2
82
        call    [putpixel]
83
        jmp     .pixloop2cont
84
.nopix2:
85
        test    ecx, 0x40000000
86
        jz      .pixloop2cont
87
        push    ecx
88
        mov     ecx, [esp+12+4]
89
        call    [putpixel]
90
        pop     ecx
91
.pixloop2cont:
92
        inc     eax
93
        dec     esi
94
        jnz     .pixloop2
95
        pop     esi
96
        sub     eax, esi
97
        inc     ebx
98
        inc     ebp
99
        dec     dword [esp]
100
        jnz     .symloop2
101
        pop     eax
102
        add     dword [esp+28], esi
103
        popad
104
        pop     edx
105
        jmp     .loop
106
.end:
107
        popad
108
        ret