Subversion Repositories Kolibri OS

Rev

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

Rev 109 Rev 485
1
include "macros.inc"
1
include "..\..\..\macros.inc"
2
 
2
 
3
initipc:
3
initipc:
4
 mov eax,9
4
 mov eax,9
5
 mov ebx,prc
5
 mov ebx,prc
6
 mov ecx,-1
6
 or ecx,-1
7
 int 0x40
7
 mcall
8
 
8
 
9
 mov ecx,eax
9
 mov ecx,eax
10
loop1:
10
loop1:
11
 push ecx
11
 push ecx
12
 
12
 
13
 mov eax,9
13
 mov eax,9
14
 mov ebx,prc
14
 mov ebx,prc
15
 int 0x40
15
 mcall
16
 
16
 
17
 cmp word [prc+10],'CM'
17
 cmp word [prc+10],'CM'
18
 jne no_cmd
18
 jne no_cmd
19
 cmp byte [prc+12],'D'
19
 cmp byte [prc+12],'D'
20
 jne no_cmd
20
 jne no_cmd
21
 
21
 
22
 mov ebx,[prc+30]
22
 mov ebx,[prc+30]
23
 mov dword [cmdpid],ebx
23
 mov dword [cmdpid],ebx
24
 
24
 
25
 mov dword [cmdnumb],ecx
25
 mov dword [cmdnumb],ecx
26
 
26
 
27
no_cmd:
27
no_cmd:
28
 pop ecx
28
 pop ecx
29
 loop loop1
29
 loop loop1
30
 
30
 
31
 cmp dword [cmdpid],0
31
 cmp dword [cmdpid],0
32
 jne no_exit
32
 jne no_exit
33
 
33
 
34
 jmp exit
34
 jmp exit
35
 
35
 
36
no_exit:
36
no_exit:
37
 mov eax,60
37
 mov eax,60
38
 mov ebx,2
38
 mov ebx,2
39
 mov ecx,dword [cmdpid]
39
 mov ecx,dword [cmdpid]
40
 mov edx,printf
40
 mov edx,printf
41
 mov esi,4
41
 mov esi,4
42
 int 0x40
42
 mcall
43
 
43
 
44
 call initcmd
44
 call initcmd
45
 
45
 
46
waitcmdinit:
46
waitcmdinit:
47
 mov eax,40
47
 mov eax,40
48
 mov ebx,01000000b
48
 mov ebx,01000000b
49
 int 0x40
49
 mcall
50
 
50
 
51
 mov eax,23
51
 mov eax,23
52
 mov ebx,100
52
 mov ebx,100
53
 int 0x40
53
 mcall
54
 
54
 
55
 cmp eax,7
55
 cmp eax,7
56
 je cmd_ok
56
 je cmd_ok
57
 
57
 
58
 jmp exit
58
 jmp exit
59
 
59
 
60
cmd_ok:
60
cmd_ok:
61
 cmp byte [ipcb+16],'.'
61
 cmp byte [ipcb+16],'.'
62
 jne exit
62
 jne exit
63
 
63
 
64
 mov eax,18
64
 mov eax,18
65
 mov ebx,3
65
 mov ebx,3
66
 mov ecx,dword [cmdnumb]
66
 mov ecx,dword [cmdnumb]
67
 int 0x40
67
 mcall
68
 
68
 
69
 ret
69
 ret
70
 
70
 
71
pause1:
71
pause1:
72
 mov eax,5
72
 mov eax,5
73
 mov ebx,1
73
 mov ebx,1
74
 int 0x40
74
 mcall
75
 ret
75
 ret
76
 
76
 
77
exit:
77
exit:
78
 mov eax,-1
78
 or eax,-1
79
 int 0x40
79
 mcall
80
 
80
 
81
cls:
81
cls:
82
 mov eax,60
82
 mov eax,60
83
 mov ebx,2
83
 mov ebx,2
84
 mov ecx,dword [cmdpid]
84
 mov ecx,dword [cmdpid]
85
 mov edx,ipccls
85
 mov edx,ipccls
86
 mov esi,4
86
 mov esi,4
87
 int 0x40
87
 mcall
88
 
88
 
89
 call pause1
89
 call pause1
90
 
90
 
91
 ret
91
 ret
92
 
92
 
93
print:
93
print:
94
 mov ecx,84
94
 mov ecx,84
95
loopprt:
95
loopprt:
96
 mov edi,stripc
96
 mov edi,stripc
97
 add edi,ecx
97
 add edi,ecx
98
 mov esi,fill_symbol
98
 mov esi,fill_symbol
99
 movsb
99
 movsb
100
 
100
 
101
 loop loopprt
101
 loop loopprt
102
 
102
 
103
 cld
103
 cld
104
 mov ecx,4
104
 mov ecx,4
105
 mov edi,stripc
105
 mov edi,stripc
106
 mov esi,printf
106
 mov esi,printf
107
 rep movsb
107
 rep movsb
108
 
108
 
109
 cld
109
 cld
110
 mov edx,79
110
 mov edx,79
111
 sub edx,eax
111
 sub edx,eax
112
 mov ecx,79
112
 mov ecx,79
113
 sub ecx,edx
113
 sub ecx,edx
114
 mov edi,stripc+4
114
 mov edi,stripc+4
115
 mov esi,ebx
115
 mov esi,ebx
116
 rep movsb
116
 rep movsb
117
 
117
 
118
 mov eax,60
118
 mov eax,60
119
 mov ebx,2
119
 mov ebx,2
120
 mov ecx,dword [cmdpid]
120
 mov ecx,dword [cmdpid]
121
 mov edx,stripc
121
 mov edx,stripc
122
 mov esi,84
122
 mov esi,84
123
 int 0x40
123
 mcall
124
 
124
 
125
 call pause1
125
 call pause1
126
 
126
 
127
 ret
127
 ret
128
 
128
 
129
eol:
129
eol:
130
 mov eax,60
130
 mov eax,60
131
 mov ebx,2
131
 mov ebx,2
132
 mov ecx,dword [cmdpid]
132
 mov ecx,dword [cmdpid]
133
 mov edx,ipceol
133
 mov edx,ipceol
134
 mov esi,4
134
 mov esi,4
135
 int 0x40
135
 mcall
136
 
136
 
137
 call pause1
137
 call pause1
138
 
138
 
139
 ret
139
 ret
140
 
140
 
141
initcmd:
141
initcmd:
142
 mov eax,60
142
 mov eax,60
143
 mov ebx,2
143
 mov ebx,2
144
 mov ecx,dword [cmdpid]
144
 mov ecx,dword [cmdpid]
145
 mov edx,ipckey
145
 mov edx,ipckey
146
 mov esi,4
146
 mov esi,4
147
 int 0x40
147
 mcall
148
 
148
 
149
 mov eax,60
149
 mov eax,60
150
 mov ebx,1
150
 mov ebx,1
151
 mov ecx,ipcb
151
 mov ecx,ipcb
152
 mov edx,28
152
 mov edx,28
153
 int 0x40
153
 mcall
154
 
154
 
155
 cld
155
 cld
156
 mov ecx,28
156
 mov ecx,28
157
 mov edi,ipcb
157
 mov edi,ipcb
158
 mov esi,ipcc
158
 mov esi,ipcc
159
 rep movsb
159
 rep movsb
160
 
160
 
161
 ret
161
 ret
162
 
162
 
163
getkey:
163
getkey:
164
 call initcmd
164
 call initcmd
165
 
165
 
166
waitagain:
166
waitagain:
167
 mov eax,40
167
 mov eax,40
168
 mov ebx,01000000b
168
 mov ebx,01000000b
169
 int 0x40
169
 mcall
170
 
170
 
171
 mov eax,10
171
 mov eax,10
172
 int 0x40
172
 mcall
173
 
173
 
174
 cmp eax,7
174
 cmp eax,7
175
 jne waitagain
175
 jne waitagain
176
 
176
 
177
 mov edi,key
177
 mov edi,key
178
 mov esi,ipcb+16
178
 mov esi,ipcb+16
179
 movsb
179
 movsb
180
 
180
 
181
 ret
181
 ret
182
 
182
 
183
endipc:
183
endipc:
184
 mov eax,60
184
 mov eax,60
185
 mov ebx,2
185
 mov ebx,2
186
 mov ecx,dword [cmdpid]
186
 mov ecx,dword [cmdpid]
187
 mov edx,ipcend
187
 mov edx,ipcend
188
 mov esi,4
188
 mov esi,4
189
 int 0x40
189
 mcall
190
 
190
 
191
 jmp exit
191
 jmp exit
192
 
192
 
193
cmdpid dd 0
193
cmdpid dd 0
194
cmdnumb dd 0
194
cmdnumb dd 0
195
 
195
 
196
printf db '~ppp'
196
printf db '~ppp'
197
ipceol db '~lll'
197
ipceol db '~lll'
198
ipcend db '~eee'
198
ipcend db '~eee'
199
ipccls db '~ccc'
199
ipccls db '~ccc'
200
ipckey db '~kkk'
200
ipckey db '~kkk'
201
 
201
 
202
key db 0
202
key db 0
203
 
203
 
204
ipcb:
204
ipcb:
205
 db 0
205
 db 0
206
 db 0,0,0
206
 db 0,0,0
207
 dd 8
207
 dd 8
208
times 20 db 0
208
times 20 db 0
209
 
209
 
210
ipcc:
210
ipcc:
211
 db 0
211
 db 0
212
 db 0,0,0
212
 db 0,0,0
213
 dd 8
213
 dd 8
214
times 20 db 0
214
times 20 db 0
215
 
215
 
216
stripc: times 84 db 0
216
stripc: times 84 db 0
217
 
217
 
218
fill_symbol db 0
218
fill_symbol db 0
219
 
219
 
220
prc: times 52 db 0
220
prc: times 52 db 0