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