Subversion Repositories Kolibri OS

Rev

Rev 908 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
846 serge 1
 
2
WORD  equ word
3
BYTE  equ byte
4
5
 
6
7
 
1066 serge 8
9
 
10
11
 
12
@@:
13
        mov edx, 0x3FD
14
        in al, dx
15
        test al, 96
16
        je  @B
17
18
 
19
        mov eax, ecx
20
        out dx, al
21
        ret
22
23
 
24
 
25
_putc:
846 serge 26
        mov ecx, DWORD PTR [esp+4]
908 serge 27
.L13:
846 serge 28
        mov edx, 0x3FD
908 serge 29
        in al, dx
30
        test al, 96
31
        je  .L13
32
        mov dl, -8
33
        mov eax, ecx
34
        out dx, al
35
        cmp ecx, 10
36
        jne .L7
37
        mov cl, 13
38
        jmp     .L13
846 serge 39
.L7:
40
        ret
41
42
 
43
	push	ebp
44
	push	edi
45
	push	esi
46
	push	ebx
47
	sub	esp, 40
48
	lea	eax, [esp+64]
49
	mov	DWORD PTR [esp+4], eax
50
.L50:
51
	mov	ecx, DWORD PTR [esp+60]
52
	movzx	edx, BYTE PTR [ecx]
53
	test	dl, dl
54
        je      .L51
55
.L17:
56
	lea	eax, [ecx+1]
57
	cmp	dl, 37
58
	mov	DWORD PTR [esp+60], eax
59
        je      .L18
60
	movsx	eax, dl
61
	mov	DWORD PTR [esp], eax
62
	call	_putc
63
	mov	ecx, DWORD PTR [esp+60]
64
	movzx	edx, BYTE PTR [ecx]
65
	test	dl, dl
66
        jne     .L17
67
.L51:
68
	add	esp, 40
69
	pop	ebx
70
	pop	esi
71
	pop	edi
72
	pop	ebp
73
	ret
74
.L18:
75
	movzx	edx, BYTE PTR [ecx+1]
76
	lea	eax, [ecx+2]
77
	mov	DWORD PTR [esp+60], eax
78
	cmp	dl, 115
79
        je      .L22
80
        jg      .L23
81
	cmp	dl, 100
82
        je      .L21
83
.L20:
84
	mov	edx, DWORD PTR [esp+4]
85
	mov	eax, DWORD PTR [edx]
86
	add	edx, 4
87
	mov	DWORD PTR [esp+4], edx
88
	mov	DWORD PTR [esp], eax
89
	call	_putc
90
        jmp     .L50
91
.L23:
92
	cmp	dl, 117
93
        je      .L21
94
	cmp	dl, 120
95
        jne     .L20
96
.L21:
97
	mov	ecx, DWORD PTR [esp+4]
98
	mov	eax, DWORD PTR [ecx]
99
	add	ecx, 4
100
	cmp	dl, 100
101
	mov	DWORD PTR [esp+4], ecx
102
	mov	ecx, eax
103
        je      .L52
104
.L24:
105
	cmp	dl, 120
106
        je      .L53
107
	lea	ebp, [esp+20]
108
	mov	esi, 10
109
	mov	ebx, ebp
110
	mov	edi, ebp
111
.L43:
112
	xor	edx, edx
113
	mov	eax, ecx
114
	div	esi
115
	cmp	edx, 9
116
	lea	eax, [edx+48]
117
        jle     .L31
118
	lea	eax, [edx+87]
119
.L31:
120
	mov	BYTE PTR [edi], al
121
	xor	edx, edx
122
	mov	eax, ecx
123
	div	esi
124
	add	edi, 1
125
	test	eax, eax
126
	mov	ecx, eax
127
        jne     .L43
128
	lea	eax, [edi-1]
129
	cmp	eax, ebx
130
	mov	BYTE PTR [edi], 0
131
        jbe     .L33
132
	lea	ecx, [edi-2]
133
.L35:
134
	movzx	eax, BYTE PTR [ebx]
135
	movzx	edx, BYTE PTR [ecx+1]
136
	mov	BYTE PTR [ebx], dl
137
	add	ebx, 1
138
	mov	BYTE PTR [ecx+1], al
139
	mov	eax, ecx
140
	sub	ecx, 1
141
	cmp	ebx, eax
142
        jb      .L35
143
.L33:
144
	mov	edx, ebp
145
.L36:
146
	movzx	eax, BYTE PTR [edx]
147
	test	al, al
148
        je      .L50
149
	mov	ebx, edx
150
.L39:
151
	movsx	eax, al
152
	mov	DWORD PTR [esp], eax
153
	call	_putc
154
	movzx	eax, BYTE PTR [ebx+1]
155
	add	ebx, 1
156
	test	al, al
157
        jne     .L39
158
        jmp     .L50
159
.L22:
160
	mov	eax, DWORD PTR [esp+4]
161
	mov	edx, DWORD PTR [eax]
162
	add	eax, 4
163
	mov	DWORD PTR [esp+4], eax
164
	test	edx, edx
165
        jne     .L36
166
        mov     edx, .LC0
167
        jmp     .L36
168
.L52:
169
	test	eax, eax
170
        jns     .L24
171
	lea	ebx, [esp+21]
172
	neg	ecx
173
	mov	edi, ebx
174
	mov	esi, 10
175
	lea	ebp, [esp+20]
176
	mov	BYTE PTR [esp+20], 45
177
        jmp     .L43
178
.L53:
179
	lea	ebp, [esp+20]
180
	mov	esi, 16
181
	mov	ebx, ebp
182
	mov	edi, ebp
183
        jmp     .L43
184
185
 
186
187
 
188
restore WORD
189
restore BYTE
190
191
 
192