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 |