Subversion Repositories Kolibri OS

Rev

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

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