Subversion Repositories Kolibri OS

Rev

Rev 2430 | Rev 2453 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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