]> pd.if.org Git - mmurtl/blob - ossource/rs232.asm
autocommit for file dated 2003-12-29 17:36:54
[mmurtl] / ossource / rs232.asm
1 \r
2 .DATA\r
3 EXTRN _AllocExch FWORD\r
4 EXTRN _InitDevDr FWORD\r
5 EXTRN _AllocOSPage FWORD\r
6 EXTRN _DeAllocPage FWORD\r
7 EXTRN _UnMaskIRQ FWORD\r
8 EXTRN _MaskIRQ FWORD\r
9 EXTRN _SetIRQVector FWORD\r
10 EXTRN _EndOfIRQ FWORD\r
11 EXTRN _SendMsg FWORD\r
12 EXTRN _ISendMsg FWORD\r
13 EXTRN _WaitMsg FWORD\r
14 EXTRN _CheckMsg FWORD\r
15 EXTRN _GetTimerTick FWORD\r
16 EXTRN _Alarm FWORD\r
17 EXTRN _KillAlarm FWORD\r
18 EXTRN _Sleep FWORD\r
19 EXTRN _MicroDelay FWORD\r
20 EXTRN _OutByte FWORD\r
21 EXTRN _InByte FWORD\r
22 EXTRN _CopyData FWORD\r
23 EXTRN _GetJobNum FWORD\r
24 _recv_timeout DD 1,0,0\r
25 _xmit_timeout DD 10,0,0\r
26 _control_byte DB 0,0,0\r
27 _f16550 DB 2 DUP(0)\r
28 _stat_byte DB 2 DUP(0)\r
29 _mstat_byte DB 2 DUP(0)\r
30 _int_id DB 2 DUP(0)\r
31 _fExpectInt DB 2 DUP(0)\r
32 _recv_error DD 2 DUP(0)\r
33 _pSendBuf DD 2 DUP(0)\r
34 _head_send DD 2 DUP(0)\r
35 _tail_send DD 2 DUP(0)\r
36 _cSendBuf DD 2 DUP(0)\r
37 _sSendBuf DD 2 DUP(0)\r
38 _pRecvBuf DD 2 DUP(0)\r
39 _head_recv DD 2 DUP(0)\r
40 _tail_recv DD 2 DUP(0)\r
41 _cRecvBuf DD 2 DUP(0)\r
42 _sRecvBuf DD 2 DUP(0)\r
43 _THR DW 2 DUP(0)\r
44 _IER DW 2 DUP(0)\r
45 _IIR DW 2 DUP(0)\r
46 _FCR DW 2 DUP(0)\r
47 _LCR DW 2 DUP(0)\r
48 _MCR DW 2 DUP(0)\r
49 _LSR DW 2 DUP(0)\r
50 _MSR DW 2 DUP(0)\r
51 _DLAB_LO DW 2 DUP(0)\r
52 _DLAB_HI DW 2 DUP(0)\r
53 _comstat DB 128 DUP(0)\r
54 _pCS DD 0h\r
55 _comdcb DB 128 DUP(0)\r
56 \r
57 \r
58 .CODE\r
59 PUBLIC _coms_setup:\r
60         PUSH EBP\r
61         MOV EBP,ESP\r
62         SUB ESP,4\r
63         MOV ESI,OFFSET _comdcb\r
64         MOV EAX,67\r
65         MOV BYTE PTR [ESI], AL\r
66         MOV ESI,OFFSET _comdcb\r
67         MOV EAX,1\r
68         ADD ESI,EAX\r
69         MOV EAX,79\r
70         MOV BYTE PTR [ESI], AL\r
71         MOV ESI,OFFSET _comdcb\r
72         MOV EAX,2\r
73         ADD ESI,EAX\r
74         MOV EAX,77\r
75         MOV BYTE PTR [ESI], AL\r
76         MOV ESI,OFFSET _comdcb\r
77         MOV EAX,3\r
78         ADD ESI,EAX\r
79         MOV EAX,49\r
80         MOV BYTE PTR [ESI], AL\r
81         MOV ESI,OFFSET _comdcb\r
82         MOV EAX,4\r
83         MOV BYTE PTR [ESI+12], AL\r
84         MOV ESI,OFFSET _comdcb\r
85         MOV EAX,2\r
86         MOV BYTE PTR [ESI+13], AL\r
87         MOV ESI,OFFSET _comdcb\r
88         MOV EAX,1\r
89         MOV WORD PTR [ESI+14], AX\r
90         MOV ESI,OFFSET _comdcb\r
91         XOR EAX,EAX\r
92         MOV DWORD PTR [ESI+20], EAX\r
93         MOV ESI,OFFSET _comdcb\r
94         MOV EAX,OFFSET _comdev_op\r
95         MOV DWORD PTR [ESI+24], EAX\r
96         MOV ESI,OFFSET _comdcb\r
97         MOV EAX,OFFSET _comdev_init\r
98         MOV DWORD PTR [ESI+28], EAX\r
99         MOV ESI,OFFSET _comdcb\r
100         MOV EAX,OFFSET _comdev_stat\r
101         MOV DWORD PTR [ESI+32], EAX\r
102         MOV EAX,64\r
103         MOV ESI,OFFSET _comdcb\r
104         ADD ESI,EAX\r
105         MOV EAX,67\r
106         MOV BYTE PTR [ESI], AL\r
107         MOV EAX,64\r
108         MOV ESI,OFFSET _comdcb\r
109         ADD ESI,EAX\r
110         MOV EAX,1\r
111         ADD ESI,EAX\r
112         MOV EAX,79\r
113         MOV BYTE PTR [ESI], AL\r
114         MOV EAX,64\r
115         MOV ESI,OFFSET _comdcb\r
116         ADD ESI,EAX\r
117         MOV EAX,2\r
118         ADD ESI,EAX\r
119         MOV EAX,77\r
120         MOV BYTE PTR [ESI], AL\r
121         MOV EAX,64\r
122         MOV ESI,OFFSET _comdcb\r
123         ADD ESI,EAX\r
124         MOV EAX,3\r
125         ADD ESI,EAX\r
126         MOV EAX,50\r
127         MOV BYTE PTR [ESI], AL\r
128         MOV EAX,64\r
129         MOV ESI,OFFSET _comdcb\r
130         ADD ESI,EAX\r
131         MOV EAX,4\r
132         MOV BYTE PTR [ESI+12], AL\r
133         MOV EAX,64\r
134         MOV ESI,OFFSET _comdcb\r
135         ADD ESI,EAX\r
136         MOV EAX,2\r
137         MOV BYTE PTR [ESI+13], AL\r
138         MOV EAX,64\r
139         MOV ESI,OFFSET _comdcb\r
140         ADD ESI,EAX\r
141         MOV EAX,1\r
142         MOV WORD PTR [ESI+14], AX\r
143         MOV EAX,64\r
144         MOV ESI,OFFSET _comdcb\r
145         ADD ESI,EAX\r
146         XOR EAX,EAX\r
147         MOV DWORD PTR [ESI+20], EAX\r
148         MOV EAX,64\r
149         MOV ESI,OFFSET _comdcb\r
150         ADD ESI,EAX\r
151         MOV EAX,OFFSET _comdev_op\r
152         MOV DWORD PTR [ESI+24], EAX\r
153         MOV EAX,64\r
154         MOV ESI,OFFSET _comdcb\r
155         ADD ESI,EAX\r
156         MOV EAX,OFFSET _comdev_init\r
157         MOV DWORD PTR [ESI+28], EAX\r
158         MOV EAX,64\r
159         MOV ESI,OFFSET _comdcb\r
160         ADD ESI,EAX\r
161         MOV EAX,OFFSET _comdev_stat\r
162         MOV DWORD PTR [ESI+32], EAX\r
163         MOV ESI,OFFSET _comstat\r
164         MOV EAX,9600\r
165         MOV DWORD PTR [ESI+12], EAX\r
166         MOV ESI,OFFSET _comstat\r
167         XOR EAX,EAX\r
168         MOV BYTE PTR [ESI+16], AL\r
169         MOV ESI,OFFSET _comstat\r
170         MOV EAX,8\r
171         MOV BYTE PTR [ESI+17], AL\r
172         MOV ESI,OFFSET _comstat\r
173         MOV EAX,1\r
174         MOV BYTE PTR [ESI+18], AL\r
175         MOV ESI,OFFSET _comstat\r
176         MOV EAX,100\r
177         MOV DWORD PTR [ESI+32], EAX\r
178         MOV ESI,OFFSET _comstat\r
179         MOV EAX,2\r
180         MOV DWORD PTR [ESI+36], EAX\r
181         MOV ESI,OFFSET _comstat\r
182         MOV EAX,1016\r
183         MOV DWORD PTR [ESI+20], EAX\r
184         MOV ESI,OFFSET _comstat\r
185         MOV EAX,4\r
186         MOV BYTE PTR [ESI+19], AL\r
187         MOV ESI,OFFSET _comstat\r
188         MOV EAX,4096\r
189         MOV DWORD PTR [ESI+24], EAX\r
190         MOV ESI,OFFSET _comstat\r
191         MOV EAX,4096\r
192         MOV DWORD PTR [ESI+28], EAX\r
193         MOV ESI,OFFSET _sSendBuf\r
194         MOV EAX,4096\r
195         MOV DWORD PTR [ESI], EAX\r
196         MOV ESI,OFFSET _sRecvBuf\r
197         MOV EAX,4096\r
198         MOV DWORD PTR [ESI], EAX\r
199         MOV EAX,64\r
200         MOV ESI,OFFSET _comstat\r
201         ADD ESI,EAX\r
202         MOV EAX,9600\r
203         MOV DWORD PTR [ESI+12], EAX\r
204         MOV EAX,64\r
205         MOV ESI,OFFSET _comstat\r
206         ADD ESI,EAX\r
207         XOR EAX,EAX\r
208         MOV BYTE PTR [ESI+16], AL\r
209         MOV EAX,64\r
210         MOV ESI,OFFSET _comstat\r
211         ADD ESI,EAX\r
212         MOV EAX,8\r
213         MOV BYTE PTR [ESI+17], AL\r
214         MOV EAX,64\r
215         MOV ESI,OFFSET _comstat\r
216         ADD ESI,EAX\r
217         MOV EAX,1\r
218         MOV BYTE PTR [ESI+18], AL\r
219         MOV EAX,64\r
220         MOV ESI,OFFSET _comstat\r
221         ADD ESI,EAX\r
222         MOV EAX,100\r
223         MOV DWORD PTR [ESI+32], EAX\r
224         MOV EAX,64\r
225         MOV ESI,OFFSET _comstat\r
226         ADD ESI,EAX\r
227         MOV EAX,2\r
228         MOV DWORD PTR [ESI+36], EAX\r
229         MOV EAX,64\r
230         MOV ESI,OFFSET _comstat\r
231         ADD ESI,EAX\r
232         MOV EAX,760\r
233         MOV DWORD PTR [ESI+20], EAX\r
234         MOV EAX,64\r
235         MOV ESI,OFFSET _comstat\r
236         ADD ESI,EAX\r
237         MOV EAX,3\r
238         MOV BYTE PTR [ESI+19], AL\r
239         MOV EAX,64\r
240         MOV ESI,OFFSET _comstat\r
241         ADD ESI,EAX\r
242         MOV EAX,4096\r
243         MOV DWORD PTR [ESI+24], EAX\r
244         MOV EAX,64\r
245         MOV ESI,OFFSET _comstat\r
246         ADD ESI,EAX\r
247         MOV EAX,4096\r
248         MOV DWORD PTR [ESI+28], EAX\r
249         MOV EAX,4\r
250         MOV ESI,OFFSET _sSendBuf\r
251         ADD ESI,EAX\r
252         MOV EAX,4096\r
253         MOV DWORD PTR [ESI], EAX\r
254         MOV EAX,4\r
255         MOV ESI,OFFSET _sRecvBuf\r
256         ADD ESI,EAX\r
257         MOV EAX,4096\r
258         MOV DWORD PTR [ESI], EAX\r
259         PUSH 4\r
260         CALL FWORD PTR _MaskIRQ\r
261         PUSH 3\r
262         CALL FWORD PTR _MaskIRQ\r
263         PUSH 4\r
264         PUSH OFFSET _comISR0\r
265         CALL FWORD PTR _SetIRQVector\r
266         PUSH 3\r
267         PUSH OFFSET _comISR1\r
268         CALL FWORD PTR _SetIRQVector\r
269         PUSH 5\r
270         PUSH OFFSET _comdcb\r
271         PUSH 2\r
272         PUSH 1\r
273         CALL FWORD PTR _InitDevDr\r
274         MOV DWORD PTR [EBP-4], EAX\r
275         MOV ESP,EBP\r
276         POP EBP\r
277         RETN\r
278 _handleISR:\r
279         PUSH EBP\r
280         MOV EBP,ESP\r
281         SUB ESP,8\r
282         MOV EAX,DWORD PTR [EBP+8]\r
283         SHL EAX,2\r
284         MOV ESI,OFFSET _pRecvBuf\r
285         ADD ESI,EAX\r
286         MOV EAX,DWORD PTR [ESI]\r
287         MOV DWORD PTR [EBP-4], EAX\r
288         MOV EAX,DWORD PTR [EBP+8]\r
289         SHL EAX,2\r
290         MOV ESI,OFFSET _pSendBuf\r
291         ADD ESI,EAX\r
292         MOV EAX,DWORD PTR [ESI]\r
293         MOV DWORD PTR [EBP-8], EAX\r
294 L_2:\r
295         MOV EAX,1\r
296         AND EAX,EAX\r
297         JZ L_3\r
298         MOV EAX,DWORD PTR [EBP+8]\r
299         MOV ESI,OFFSET _int_id\r
300         ADD ESI,EAX\r
301         MOV EBX,ESI\r
302         PUSH EBX\r
303         MOV EAX,DWORD PTR [EBP+8]\r
304         SHL EAX,1\r
305         MOV ESI,OFFSET _IIR\r
306         ADD ESI,EAX\r
307         MOVZX EAX,WORD PTR [ESI]\r
308         PUSH EAX\r
309         CALL FWORD PTR _InByte\r
310         POP EDX\r
311         MOV BYTE PTR [EDX], AL\r
312         MOV EAX,DWORD PTR [EBP+8]\r
313         MOV ESI,OFFSET _int_id\r
314         ADD ESI,EAX\r
315         XOR EAX,EAX\r
316         MOV AL,BYTE PTR [ESI]\r
317         JMP L_5\r
318 L_6:\r
319         MOV EAX,DWORD PTR [EBP+8]\r
320         MOV ESI,OFFSET _stat_byte\r
321         ADD ESI,EAX\r
322         MOV EBX,ESI\r
323         PUSH EBX\r
324         MOV EAX,DWORD PTR [EBP+8]\r
325         SHL EAX,1\r
326         MOV ESI,OFFSET _LSR\r
327         ADD ESI,EAX\r
328         MOVZX EAX,WORD PTR [ESI]\r
329         PUSH EAX\r
330         CALL FWORD PTR _InByte\r
331         POP EDX\r
332         MOV BYTE PTR [EDX], AL\r
333         JMP L_4\r
334 L_7:\r
335         MOV EAX,DWORD PTR [EBP+8]\r
336         SHL EAX,2\r
337         MOV ESI,OFFSET _cRecvBuf\r
338         ADD ESI,EAX\r
339         MOV EAX,DWORD PTR [EBP+8]\r
340         SHL EAX,2\r
341         MOV EBX,ESI\r
342         MOV ESI,OFFSET _sRecvBuf\r
343         ADD ESI,EAX\r
344         MOV EAX,DWORD PTR [EBX]\r
345         CMP EAX,DWORD PTR [ESI]\r
346         SETE AL\r
347         AND AL,AL\r
348         JZ L_8\r
349         MOV EAX,DWORD PTR [EBP+8]\r
350         SHL EAX,2\r
351         MOV ESI,OFFSET _recv_error\r
352         ADD ESI,EAX\r
353         MOV EAX,805\r
354         MOV DWORD PTR [ESI], EAX\r
355         MOV EAX,DWORD PTR [EBP+8]\r
356         SHL EAX,1\r
357         MOV ESI,OFFSET _THR\r
358         ADD ESI,EAX\r
359         MOVZX EAX,WORD PTR [ESI]\r
360         PUSH EAX\r
361         CALL FWORD PTR _InByte\r
362         JMP L_9\r
363 L_8:\r
364         CLI\r
365         MOV EAX,DWORD PTR [EBP+8]\r
366         SHL EAX,2\r
367         MOV ESI,OFFSET _head_recv\r
368         ADD ESI,EAX\r
369         MOV EAX,DWORD PTR [ESI]\r
370         MOV ESI,DWORD PTR [EBP-4]\r
371         ADD ESI,EAX\r
372         MOV EBX,ESI\r
373         PUSH EBX\r
374         MOV EAX,DWORD PTR [EBP+8]\r
375         SHL EAX,1\r
376         MOV ESI,OFFSET _THR\r
377         ADD ESI,EAX\r
378         MOVZX EAX,WORD PTR [ESI]\r
379         PUSH EAX\r
380         CALL FWORD PTR _InByte\r
381         POP EDX\r
382         MOV BYTE PTR [EDX], AL\r
383         MOV EAX,DWORD PTR [EBP+8]\r
384         SHL EAX,2\r
385         MOV ESI,OFFSET _cRecvBuf\r
386         ADD ESI,EAX\r
387         INC DWORD PTR [ESI]\r
388         MOV EAX,DWORD PTR [EBP+8]\r
389         SHL EAX,2\r
390         MOV ESI,OFFSET _head_recv\r
391         ADD ESI,EAX\r
392         INC DWORD PTR [ESI]\r
393         MOV EAX,DWORD PTR [ESI]\r
394         CMP EAX,4096\r
395         SETE AL\r
396         AND AL,AL\r
397         JZ L_10\r
398         MOV EAX,DWORD PTR [EBP+8]\r
399         SHL EAX,2\r
400         MOV ESI,OFFSET _head_recv\r
401         ADD ESI,EAX\r
402         XOR EAX,EAX\r
403         MOV DWORD PTR [ESI], EAX\r
404         STI\r
405 L_10:\r
406         MOV EAX,DWORD PTR [EBP+8]\r
407         SHL EAX,2\r
408         MOV ESI,OFFSET _recv_error\r
409         ADD ESI,EAX\r
410         XOR EAX,EAX\r
411         MOV DWORD PTR [ESI], EAX\r
412 L_9:\r
413         JMP L_4\r
414 L_11:\r
415         CLI\r
416         MOV EAX,DWORD PTR [EBP+8]\r
417         SHL EAX,2\r
418         MOV ESI,OFFSET _cSendBuf\r
419         ADD ESI,EAX\r
420         MOV EAX,DWORD PTR [ESI]\r
421         AND EAX,EAX\r
422         JZ L_12\r
423         MOV EAX,DWORD PTR [EBP+8]\r
424         SHL EAX,2\r
425         MOV ESI,OFFSET _tail_send\r
426         ADD ESI,EAX\r
427         MOV EAX,DWORD PTR [ESI]\r
428         MOV ESI,DWORD PTR [EBP-8]\r
429         ADD ESI,EAX\r
430         XOR EAX,EAX\r
431         MOV AL,BYTE PTR [ESI]\r
432         PUSH EAX\r
433         MOV EAX,DWORD PTR [EBP+8]\r
434         SHL EAX,1\r
435         MOV ESI,OFFSET _THR\r
436         ADD ESI,EAX\r
437         MOVZX EAX,WORD PTR [ESI]\r
438         PUSH EAX\r
439         CALL FWORD PTR _OutByte\r
440         MOV EAX,DWORD PTR [EBP+8]\r
441         SHL EAX,2\r
442         MOV ESI,OFFSET _tail_send\r
443         ADD ESI,EAX\r
444         INC DWORD PTR [ESI]\r
445         MOV EAX,DWORD PTR [EBP+8]\r
446         SHL EAX,2\r
447         MOV EBX,ESI\r
448         MOV ESI,OFFSET _sSendBuf\r
449         ADD ESI,EAX\r
450         MOV EAX,DWORD PTR [EBX]\r
451         CMP EAX,DWORD PTR [ESI]\r
452         SETE AL\r
453         AND AL,AL\r
454         JZ L_13\r
455         MOV EAX,DWORD PTR [EBP+8]\r
456         SHL EAX,2\r
457         MOV ESI,OFFSET _tail_send\r
458         ADD ESI,EAX\r
459         XOR EAX,EAX\r
460         MOV DWORD PTR [ESI], EAX\r
461 L_13:\r
462         MOV EAX,DWORD PTR [EBP+8]\r
463         SHL EAX,2\r
464         MOV ESI,OFFSET _cSendBuf\r
465         ADD ESI,EAX\r
466         DEC DWORD PTR [ESI]\r
467         MOV EAX,DWORD PTR [EBP+8]\r
468         MOV ESI,OFFSET _fExpectInt\r
469         ADD ESI,EAX\r
470         MOV EAX,1\r
471         MOV BYTE PTR [ESI], AL\r
472         JMP L_14\r
473 L_12:\r
474         MOV EAX,DWORD PTR [EBP+8]\r
475         MOV ESI,OFFSET _fExpectInt\r
476         ADD ESI,EAX\r
477         XOR EAX,EAX\r
478         MOV BYTE PTR [ESI], AL\r
479 L_14:\r
480         STI\r
481         JMP L_4\r
482 L_15:\r
483         MOV EAX,DWORD PTR [EBP+8]\r
484         MOV ESI,OFFSET _mstat_byte\r
485         ADD ESI,EAX\r
486         MOV EBX,ESI\r
487         PUSH EBX\r
488         MOV EAX,DWORD PTR [EBP+8]\r
489         SHL EAX,1\r
490         MOV ESI,OFFSET _MSR\r
491         ADD ESI,EAX\r
492         MOVZX EAX,WORD PTR [ESI]\r
493         PUSH EAX\r
494         CALL FWORD PTR _InByte\r
495         POP EDX\r
496         MOV BYTE PTR [EDX], AL\r
497         JMP L_4\r
498 L_16:\r
499         MOV EAX,DWORD PTR [EBP+8]\r
500         MOV ESI,OFFSET _stat_byte\r
501         ADD ESI,EAX\r
502         MOV EBX,ESI\r
503         PUSH EBX\r
504         MOV EAX,DWORD PTR [EBP+8]\r
505         SHL EAX,1\r
506         MOV ESI,OFFSET _LSR\r
507         ADD ESI,EAX\r
508         MOVZX EAX,WORD PTR [ESI]\r
509         PUSH EAX\r
510         CALL FWORD PTR _InByte\r
511         POP EDX\r
512         MOV BYTE PTR [EDX], AL\r
513 L_17:\r
514         JMP L_18\r
515 L_5:\r
516         CMP EAX,1\r
517         JE L_16\r
518         CMP EAX,0\r
519         JE L_15\r
520         CMP EAX,2\r
521         JE L_11\r
522         CMP EAX,4\r
523         JE L_7\r
524         CMP EAX,6\r
525         JE L_6\r
526         JMP L_17\r
527 L_4:\r
528         JMP L_2\r
529 L_3:\r
530 L_18:\r
531         MOV ESP,EBP\r
532         POP EBP\r
533         RETN 4\r
534 _comISR0:\r
535         PUSHAD\r
536         STI\r
537         XOR EAX,EAX\r
538         PUSH EAX\r
539         CALL _handleISR\r
540         PUSH 4\r
541         CALL FWORD PTR _EndOfIRQ\r
542         POPAD\r
543         IRETD\r
544 _comISR1:\r
545         PUSHAD\r
546         STI\r
547         PUSH 1\r
548         CALL _handleISR\r
549         PUSH 3\r
550         CALL FWORD PTR _EndOfIRQ\r
551         POPAD\r
552         IRETD\r
553 _ReadByteC:\r
554         PUSH EBP\r
555         MOV EBP,ESP\r
556         SUB ESP,8\r
557         MOV EAX,DWORD PTR [EBP+12]\r
558         SHL EAX,2\r
559         MOV ESI,OFFSET _pRecvBuf\r
560         ADD ESI,EAX\r
561         MOV EAX,DWORD PTR [ESI]\r
562         MOV DWORD PTR [EBP-8], EAX\r
563         MOV EAX,DWORD PTR [EBP+12]\r
564         SHL EAX,2\r
565         MOV ESI,OFFSET _recv_error\r
566         ADD ESI,EAX\r
567         MOV EAX,DWORD PTR [ESI]\r
568         AND EAX,EAX\r
569         JZ L_21\r
570         MOV EAX,DWORD PTR [EBP+12]\r
571         SHL EAX,2\r
572         MOV ESI,OFFSET _recv_error\r
573         ADD ESI,EAX\r
574         MOV EAX,DWORD PTR [ESI]\r
575         JMP L_22\r
576 L_21:\r
577         MOV EAX,DWORD PTR [EBP+12]\r
578         SHL EAX,2\r
579         MOV ESI,OFFSET _cRecvBuf\r
580         ADD ESI,EAX\r
581         MOV EAX,DWORD PTR [ESI]\r
582         AND EAX,EAX\r
583         JZ L_23\r
584         MOV ESI,DWORD PTR [EBP+8]\r
585         MOV EAX,DWORD PTR [EBP+12]\r
586         SHL EAX,2\r
587         MOV EBX,ESI\r
588         MOV ESI,OFFSET _tail_recv\r
589         ADD ESI,EAX\r
590         MOV EAX,DWORD PTR [ESI]\r
591         MOV ESI,DWORD PTR [EBP-8]\r
592         ADD ESI,EAX\r
593         XOR EAX,EAX\r
594         MOV AL,BYTE PTR [ESI]\r
595         MOV BYTE PTR [EBX], AL\r
596         MOV EAX,DWORD PTR [EBP+12]\r
597         SHL EAX,2\r
598         MOV ESI,OFFSET _tail_recv\r
599         ADD ESI,EAX\r
600         INC DWORD PTR [ESI]\r
601         MOV EAX,DWORD PTR [EBP+12]\r
602         SHL EAX,2\r
603         MOV EBX,ESI\r
604         MOV ESI,OFFSET _sRecvBuf\r
605         ADD ESI,EAX\r
606         MOV EAX,DWORD PTR [EBX]\r
607         CMP EAX,DWORD PTR [ESI]\r
608         SETE AL\r
609         AND AL,AL\r
610         JZ L_24\r
611         MOV EAX,DWORD PTR [EBP+12]\r
612         SHL EAX,2\r
613         MOV ESI,OFFSET _tail_recv\r
614         ADD ESI,EAX\r
615         XOR EAX,EAX\r
616         MOV DWORD PTR [ESI], EAX\r
617 L_24:\r
618         MOV EAX,DWORD PTR [EBP+12]\r
619         SHL EAX,2\r
620         MOV ESI,OFFSET _cRecvBuf\r
621         ADD ESI,EAX\r
622         DEC DWORD PTR [ESI]\r
623         MOV EAX,DWORD PTR [ESI]\r
624         XOR EAX,EAX\r
625         JMP L_22\r
626 L_23:\r
627         MOV EAX,DWORD PTR [EBP+12]\r
628         MOV ECX,64\r
629         MUL ECX\r
630         MOV ESI,OFFSET _comstat\r
631         ADD ESI,EAX\r
632         MOV EAX,DWORD PTR [ESI+36]\r
633         MOV DWORD PTR [EBP-4], EAX\r
634 L_25:\r
635         MOV EAX,DWORD PTR [EBP-4]\r
636         DEC DWORD PTR [EBP-4]\r
637         AND EAX,EAX\r
638         JZ L_26\r
639         PUSH 1\r
640         CALL FWORD PTR _Sleep\r
641         MOV EAX,DWORD PTR [EBP+12]\r
642         SHL EAX,2\r
643         MOV ESI,OFFSET _cRecvBuf\r
644         ADD ESI,EAX\r
645         MOV EAX,DWORD PTR [ESI]\r
646         AND EAX,EAX\r
647         JZ L_27\r
648         MOV ESI,DWORD PTR [EBP+8]\r
649         MOV EAX,DWORD PTR [EBP+12]\r
650         SHL EAX,2\r
651         MOV EBX,ESI\r
652         MOV ESI,OFFSET _tail_recv\r
653         ADD ESI,EAX\r
654         MOV EAX,DWORD PTR [ESI]\r
655         MOV ESI,DWORD PTR [EBP-8]\r
656         ADD ESI,EAX\r
657         XOR EAX,EAX\r
658         MOV AL,BYTE PTR [ESI]\r
659         MOV BYTE PTR [EBX], AL\r
660         MOV EAX,DWORD PTR [EBP+12]\r
661         SHL EAX,2\r
662         MOV ESI,OFFSET _tail_recv\r
663         ADD ESI,EAX\r
664         INC DWORD PTR [ESI]\r
665         MOV EAX,DWORD PTR [EBP+12]\r
666         SHL EAX,2\r
667         MOV EBX,ESI\r
668         MOV ESI,OFFSET _sRecvBuf\r
669         ADD ESI,EAX\r
670         MOV EAX,DWORD PTR [EBX]\r
671         CMP EAX,DWORD PTR [ESI]\r
672         SETE AL\r
673         AND AL,AL\r
674         JZ L_28\r
675         MOV EAX,DWORD PTR [EBP+12]\r
676         SHL EAX,2\r
677         MOV ESI,OFFSET _tail_recv\r
678         ADD ESI,EAX\r
679         XOR EAX,EAX\r
680         MOV DWORD PTR [ESI], EAX\r
681 L_28:\r
682         MOV EAX,DWORD PTR [EBP+12]\r
683         SHL EAX,2\r
684         MOV ESI,OFFSET _cRecvBuf\r
685         ADD ESI,EAX\r
686         DEC DWORD PTR [ESI]\r
687         MOV EAX,DWORD PTR [ESI]\r
688         XOR EAX,EAX\r
689         JMP L_22\r
690 L_27:\r
691         JMP L_25\r
692 L_26:\r
693         MOV EAX,800\r
694 L_22:\r
695         MOV ESP,EBP\r
696         POP EBP\r
697         RETN 8\r
698 _ReadRecordC:\r
699         PUSH EBP\r
700         MOV EBP,ESP\r
701         SUB ESP,4\r
702         XOR EAX,EAX\r
703         MOV WORD PTR [EBP-2], AX\r
704         XOR EAX,EAX\r
705         MOV WORD PTR [EBP-4], AX\r
706 L_29:\r
707         MOVSX EAX,WORD PTR [EBP-4]\r
708         MOVZX ECX,WORD PTR [EBP+12]\r
709         CMP EAX,ECX\r
710         SETB AL\r
711         AND AL,AL\r
712         JZ L_31\r
713         MOVSX EAX,WORD PTR [EBP-2]\r
714         AND EAX,EAX\r
715         SETZ AL\r
716         AND AL,AL\r
717 L_31:\r
718         JZ L_30\r
719         PUSH DWORD PTR [EBP+20]\r
720         MOV ESI,DWORD PTR [EBP+16]\r
721         INC DWORD PTR [EBP+16]\r
722         PUSH DWORD PTR [ESI]\r
723         CALL _ReadByteC\r
724         MOV WORD PTR [EBP-2], AX\r
725         MOVSX EAX,WORD PTR [EBP-2]\r
726         AND EAX,EAX\r
727         JNZ L_32\r
728         INC WORD PTR [EBP-4]\r
729         MOVSX EAX,WORD PTR [EBP-4]\r
730 L_32:\r
731         JMP L_29\r
732 L_30:\r
733         MOV ESI,DWORD PTR [EBP+8]\r
734         MOVSX EAX,WORD PTR [EBP-4]\r
735         MOV WORD PTR [ESI], AX\r
736         MOVSX EAX,WORD PTR [EBP-2]\r
737         MOV ESP,EBP\r
738         POP EBP\r
739         RETN 16\r
740 _WriteByteC:\r
741         PUSH EBP\r
742         MOV EBP,ESP\r
743         SUB ESP,12\r
744         XOR EAX,EAX\r
745         MOV DWORD PTR [EBP-4], EAX\r
746         MOV EAX,DWORD PTR [EBP+12]\r
747         SHL EAX,2\r
748         MOV ESI,OFFSET _pSendBuf\r
749         ADD ESI,EAX\r
750         MOV EAX,DWORD PTR [ESI]\r
751         MOV DWORD PTR [EBP-12], EAX\r
752         MOV EAX,DWORD PTR [EBP+12]\r
753         MOV ECX,64\r
754         MUL ECX\r
755         MOV ESI,OFFSET _comstat\r
756         ADD ESI,EAX\r
757         MOV EAX,DWORD PTR [ESI+32]\r
758         MOV DWORD PTR [EBP-8], EAX\r
759 L_34:\r
760         MOV EAX,DWORD PTR [EBP+12]\r
761         SHL EAX,2\r
762         MOV ESI,OFFSET _cSendBuf\r
763         ADD ESI,EAX\r
764         MOV EAX,DWORD PTR [EBP+12]\r
765         SHL EAX,2\r
766         MOV EBX,ESI\r
767         MOV ESI,OFFSET _sSendBuf\r
768         ADD ESI,EAX\r
769         MOV EAX,DWORD PTR [EBX]\r
770         CMP EAX,DWORD PTR [ESI]\r
771         SETE AL\r
772         AND AL,AL\r
773         JZ L_35\r
774         PUSH 1\r
775         CALL FWORD PTR _Sleep\r
776         MOV EAX,DWORD PTR [EBP-8]\r
777         DEC DWORD PTR [EBP-8]\r
778         MOV EAX,DWORD PTR [EBP-8]\r
779         AND EAX,EAX\r
780         JNZ L_36\r
781         MOV EAX,801\r
782         JMP L_37\r
783 L_36:\r
784         JMP L_34\r
785 L_35:\r
786         CLI\r
787         MOV EAX,DWORD PTR [EBP+12]\r
788         MOV ESI,OFFSET _fExpectInt\r
789         ADD ESI,EAX\r
790         XOR EAX,EAX\r
791         MOV AL,BYTE PTR [ESI]\r
792         AND EAX,EAX\r
793         JNZ L_38\r
794         XOR EAX,EAX\r
795         MOV AL,BYTE PTR [EBP+8]\r
796         PUSH EAX\r
797         MOV EAX,DWORD PTR [EBP+12]\r
798         SHL EAX,1\r
799         MOV ESI,OFFSET _THR\r
800         ADD ESI,EAX\r
801         MOVZX EAX,WORD PTR [ESI]\r
802         PUSH EAX\r
803         CALL FWORD PTR _OutByte\r
804         MOV EAX,DWORD PTR [EBP+12]\r
805         MOV ESI,OFFSET _fExpectInt\r
806         ADD ESI,EAX\r
807         MOV EAX,1\r
808         MOV BYTE PTR [ESI], AL\r
809         JMP L_39\r
810 L_38:\r
811         MOV EAX,DWORD PTR [EBP+12]\r
812         SHL EAX,2\r
813         MOV ESI,OFFSET _head_send\r
814         ADD ESI,EAX\r
815         MOV EAX,DWORD PTR [ESI]\r
816         MOV ESI,DWORD PTR [EBP-12]\r
817         ADD ESI,EAX\r
818         XOR EAX,EAX\r
819         MOV AL,BYTE PTR [EBP+8]\r
820         MOV BYTE PTR [ESI], AL\r
821         MOV EAX,DWORD PTR [EBP+12]\r
822         SHL EAX,2\r
823         MOV ESI,OFFSET _head_send\r
824         ADD ESI,EAX\r
825         INC DWORD PTR [ESI]\r
826         MOV EAX,DWORD PTR [EBP+12]\r
827         SHL EAX,2\r
828         MOV EBX,ESI\r
829         MOV ESI,OFFSET _sSendBuf\r
830         ADD ESI,EAX\r
831         MOV EAX,DWORD PTR [EBX]\r
832         CMP EAX,DWORD PTR [ESI]\r
833         SETE AL\r
834         AND AL,AL\r
835         JZ L_40\r
836         MOV EAX,DWORD PTR [EBP+12]\r
837         SHL EAX,2\r
838         MOV ESI,OFFSET _head_send\r
839         ADD ESI,EAX\r
840         XOR EAX,EAX\r
841         MOV DWORD PTR [ESI], EAX\r
842 L_40:\r
843         MOV EAX,DWORD PTR [EBP+12]\r
844         SHL EAX,2\r
845         MOV ESI,OFFSET _cSendBuf\r
846         ADD ESI,EAX\r
847         INC DWORD PTR [ESI]\r
848         MOV EAX,DWORD PTR [ESI]\r
849 L_39:\r
850         STI\r
851         MOV EAX,DWORD PTR [EBP-4]\r
852 L_37:\r
853         MOV ESP,EBP\r
854         POP EBP\r
855         RETN 8\r
856 _WriteRecordC:\r
857         PUSH EBP\r
858         MOV EBP,ESP\r
859         SUB ESP,2\r
860         XOR EAX,EAX\r
861         MOV WORD PTR [EBP-2], AX\r
862 L_41:\r
863         MOVZX EAX,WORD PTR [EBP+8]\r
864         AND EAX,EAX\r
865         JZ L_43\r
866         MOVSX EAX,WORD PTR [EBP-2]\r
867         AND EAX,EAX\r
868         SETZ AL\r
869         AND AL,AL\r
870 L_43:\r
871         JZ L_42\r
872         PUSH DWORD PTR [EBP+16]\r
873         MOV ESI,DWORD PTR [EBP+12]\r
874         INC DWORD PTR [EBP+12]\r
875         XOR EAX,EAX\r
876         MOV AL,BYTE PTR [ESI]\r
877         PUSH EAX\r
878         CALL _WriteByteC\r
879         MOV WORD PTR [EBP-2], AX\r
880         DEC WORD PTR [EBP+8]\r
881         MOVZX EAX,WORD PTR [EBP+8]\r
882         JMP L_41\r
883 L_42:\r
884         MOVSX EAX,WORD PTR [EBP-2]\r
885         MOV ESP,EBP\r
886         POP EBP\r
887         RETN 12\r
888 _DiscardRecvC:\r
889         PUSH EBP\r
890         MOV EBP,ESP\r
891         SUB ESP,9\r
892         MOV EAX,DWORD PTR [EBP+8]\r
893         MOV ECX,64\r
894         MUL ECX\r
895         MOV ESI,OFFSET _comstat\r
896         ADD ESI,EAX\r
897         MOV EAX,DWORD PTR [ESI+36]\r
898         MOV DWORD PTR [EBP-4], EAX\r
899         MOV EAX,DWORD PTR [EBP+8]\r
900         MOV ECX,64\r
901         MUL ECX\r
902         MOV ESI,OFFSET _comstat\r
903         ADD ESI,EAX\r
904         MOV EAX,1\r
905         MOV DWORD PTR [ESI+36], EAX\r
906         XOR EAX,EAX\r
907         MOV DWORD PTR [EBP-8], EAX\r
908 L_45:\r
909         MOV EAX,DWORD PTR [EBP-8]\r
910         AND EAX,EAX\r
911         JNZ L_46\r
912         PUSH DWORD PTR [EBP+8]\r
913         LEA EAX,BYTE PTR [EBP-9]\r
914         PUSH EAX\r
915         CALL _ReadByteC\r
916         MOV DWORD PTR [EBP-8], EAX\r
917         JMP L_45\r
918 L_46:\r
919         MOV EAX,DWORD PTR [EBP+8]\r
920         MOV ECX,64\r
921         MUL ECX\r
922         MOV ESI,OFFSET _comstat\r
923         ADD ESI,EAX\r
924         MOV EAX,DWORD PTR [EBP-4]\r
925         MOV DWORD PTR [ESI+36], EAX\r
926         XOR EAX,EAX\r
927         MOV ESP,EBP\r
928         POP EBP\r
929         RETN 4\r
930 _SetParams:\r
931         PUSH EBP\r
932         MOV EBP,ESP\r
933         SUB ESP,13\r
934         MOV EAX,DWORD PTR [EBP+8]\r
935         MOV ECX,64\r
936         MUL ECX\r
937         MOV ESI,OFFSET _comstat\r
938         ADD ESI,EAX\r
939         XOR EAX,EAX\r
940         MOV AL,BYTE PTR [ESI+16]\r
941         MOV BYTE PTR [EBP-10], AL\r
942         MOV EAX,DWORD PTR [EBP+8]\r
943         MOV ECX,64\r
944         MUL ECX\r
945         MOV ESI,OFFSET _comstat\r
946         ADD ESI,EAX\r
947         XOR EAX,EAX\r
948         MOV AL,BYTE PTR [ESI+17]\r
949         MOV BYTE PTR [EBP-11], AL\r
950         MOV EAX,DWORD PTR [EBP+8]\r
951         MOV ECX,64\r
952         MUL ECX\r
953         MOV ESI,OFFSET _comstat\r
954         ADD ESI,EAX\r
955         XOR EAX,EAX\r
956         MOV AL,BYTE PTR [ESI+18]\r
957         MOV BYTE PTR [EBP-12], AL\r
958         MOV EAX,DWORD PTR [EBP+8]\r
959         MOV ECX,64\r
960         MUL ECX\r
961         MOV ESI,OFFSET _comstat\r
962         ADD ESI,EAX\r
963         MOV EAX,DWORD PTR [ESI+12]\r
964         MOV DWORD PTR [EBP-8], EAX\r
965         MOV EAX,115200\r
966         MOV ECX,DWORD PTR [EBP-8]\r
967         XOR EDX,EDX\r
968         DIV ECX\r
969         MOV DWORD PTR [EBP-4], EAX\r
970         CLI\r
971         MOV EAX,DWORD PTR [EBP+8]\r
972         SHL EAX,1\r
973         MOV ESI,OFFSET _LCR\r
974         ADD ESI,EAX\r
975         MOVZX EAX,WORD PTR [ESI]\r
976         PUSH EAX\r
977         CALL FWORD PTR _InByte\r
978         MOV BYTE PTR [EBP-9], AL\r
979         XOR EAX,EAX\r
980         MOV AL,BYTE PTR [EBP-9]\r
981         MOV ECX,128\r
982         OR EAX,ECX\r
983         PUSH EAX\r
984         MOV EAX,DWORD PTR [EBP+8]\r
985         SHL EAX,1\r
986         MOV ESI,OFFSET _LCR\r
987         ADD ESI,EAX\r
988         MOVZX EAX,WORD PTR [ESI]\r
989         PUSH EAX\r
990         CALL FWORD PTR _OutByte\r
991         MOV EAX,DWORD PTR [EBP-4]\r
992         AND EAX,255\r
993         PUSH EAX\r
994         MOV EAX,DWORD PTR [EBP+8]\r
995         SHL EAX,1\r
996         MOV ESI,OFFSET _DLAB_LO\r
997         ADD ESI,EAX\r
998         MOVZX EAX,WORD PTR [ESI]\r
999         PUSH EAX\r
1000         CALL FWORD PTR _OutByte\r
1001         MOV EAX,DWORD PTR [EBP-4]\r
1002         MOV ECX,8\r
1003         SHR EAX,CL\r
1004         AND EAX,255\r
1005         PUSH EAX\r
1006         MOV EAX,DWORD PTR [EBP+8]\r
1007         SHL EAX,1\r
1008         MOV ESI,OFFSET _DLAB_HI\r
1009         ADD ESI,EAX\r
1010         MOVZX EAX,WORD PTR [ESI]\r
1011         PUSH EAX\r
1012         CALL FWORD PTR _OutByte\r
1013         XOR EAX,EAX\r
1014         MOV AL,BYTE PTR [EBP-9]\r
1015         PUSH EAX\r
1016         MOV EAX,DWORD PTR [EBP+8]\r
1017         SHL EAX,1\r
1018         MOV ESI,OFFSET _LCR\r
1019         ADD ESI,EAX\r
1020         MOVZX EAX,WORD PTR [ESI]\r
1021         PUSH EAX\r
1022         CALL FWORD PTR _OutByte\r
1023         STI\r
1024         XOR EAX,EAX\r
1025         MOV AL,BYTE PTR [EBP-11]\r
1026         MOV ECX,5\r
1027         SUB EAX,ECX\r
1028         MOV BYTE PTR [EBP-13], AL\r
1029         XOR EAX,EAX\r
1030         MOV AL,BYTE PTR [EBP-12]\r
1031         CMP EAX,1\r
1032         SETE AL\r
1033         AND AL,AL\r
1034         JZ SHORT L_49\r
1035         XOR EAX,EAX\r
1036         JMP SHORT L_48\r
1037 L_49:\r
1038         MOV EAX,4\r
1039 L_48:\r
1040         XOR ECX,ECX\r
1041         MOV CL,BYTE PTR [EBP-13]\r
1042         OR EAX,ECX\r
1043         MOV BYTE PTR [EBP-13], AL\r
1044         XOR EAX,EAX\r
1045         MOV AL,BYTE PTR [EBP-10]\r
1046         JMP L_51\r
1047 L_52:\r
1048         XOR EAX,EAX\r
1049         MOV AL,BYTE PTR [EBP-13]\r
1050         XOR ECX,ECX\r
1051         OR EAX,ECX\r
1052         MOV BYTE PTR [EBP-13], AL\r
1053         JMP L_50\r
1054 L_53:\r
1055         XOR EAX,EAX\r
1056         MOV AL,BYTE PTR [EBP-13]\r
1057         MOV ECX,8\r
1058         OR EAX,ECX\r
1059         MOV BYTE PTR [EBP-13], AL\r
1060         JMP L_50\r
1061 L_54:\r
1062         XOR EAX,EAX\r
1063         MOV AL,BYTE PTR [EBP-13]\r
1064         MOV ECX,24\r
1065         OR EAX,ECX\r
1066         MOV BYTE PTR [EBP-13], AL\r
1067         JMP L_50\r
1068 L_51:\r
1069         CMP EAX,1\r
1070         JE L_54\r
1071         CMP EAX,2\r
1072         JE L_53\r
1073         CMP EAX,0\r
1074         JE L_52\r
1075 L_50:\r
1076         CLI\r
1077         XOR EAX,EAX\r
1078         MOV AL,BYTE PTR [EBP-13]\r
1079         PUSH EAX\r
1080         MOV EAX,DWORD PTR [EBP+8]\r
1081         SHL EAX,1\r
1082         MOV ESI,OFFSET _LCR\r
1083         ADD ESI,EAX\r
1084         MOVZX EAX,WORD PTR [ESI]\r
1085         PUSH EAX\r
1086         CALL FWORD PTR _OutByte\r
1087         STI\r
1088         XOR EAX,EAX\r
1089 L_55:\r
1090         MOV ESP,EBP\r
1091         POP EBP\r
1092         RETN 4\r
1093 _OpenCommC:\r
1094         PUSH EBP\r
1095         MOV EBP,ESP\r
1096         SUB ESP,7\r
1097         MOV EAX,DWORD PTR [EBP+8]\r
1098         MOV ECX,64\r
1099         MUL ECX\r
1100         MOV ESI,OFFSET _comstat\r
1101         ADD ESI,EAX\r
1102         MOV EAX,DWORD PTR [ESI]\r
1103         AND EAX,EAX\r
1104         JZ L_56\r
1105         MOV EAX,809\r
1106         JMP L_57\r
1107 L_56:\r
1108         MOV EAX,DWORD PTR [EBP+8]\r
1109         MOV ECX,64\r
1110         MUL ECX\r
1111         MOV ESI,OFFSET _comstat\r
1112         ADD ESI,EAX\r
1113         PUSH ESI\r
1114         CALL FWORD PTR _GetJobNum\r
1115         MOV EAX,DWORD PTR [EBP+8]\r
1116         MOV ECX,64\r
1117         MUL ECX\r
1118         MOV ESI,OFFSET _comstat\r
1119         ADD ESI,EAX\r
1120         MOV EAX,DWORD PTR [ESI+24]\r
1121         MOV ECX,4096\r
1122         XOR EDX,EDX\r
1123         DIV ECX\r
1124         PUSH EAX\r
1125         MOV EAX,DWORD PTR [EBP+8]\r
1126         SHL EAX,2\r
1127         MOV ESI,OFFSET _pSendBuf\r
1128         ADD ESI,EAX\r
1129         PUSH ESI\r
1130         CALL FWORD PTR _AllocOSPage\r
1131         MOV DWORD PTR [EBP-4], EAX\r
1132         MOV EAX,DWORD PTR [EBP-4]\r
1133         AND EAX,EAX\r
1134         JNZ L_58\r
1135         MOV EAX,DWORD PTR [EBP+8]\r
1136         MOV ECX,64\r
1137         MUL ECX\r
1138         MOV ESI,OFFSET _comstat\r
1139         ADD ESI,EAX\r
1140         MOV EAX,DWORD PTR [ESI+28]\r
1141         MOV ECX,4096\r
1142         XOR EDX,EDX\r
1143         DIV ECX\r
1144         PUSH EAX\r
1145         MOV EAX,DWORD PTR [EBP+8]\r
1146         SHL EAX,2\r
1147         MOV ESI,OFFSET _pRecvBuf\r
1148         ADD ESI,EAX\r
1149         PUSH ESI\r
1150         CALL FWORD PTR _AllocOSPage\r
1151         MOV DWORD PTR [EBP-4], EAX\r
1152         MOV EAX,DWORD PTR [EBP-4]\r
1153         AND EAX,EAX\r
1154         JZ L_59\r
1155         MOV EAX,DWORD PTR [EBP+8]\r
1156         SHL EAX,2\r
1157         MOV ESI,OFFSET _pSendBuf\r
1158         ADD ESI,EAX\r
1159         PUSH DWORD PTR [ESI]\r
1160         MOV EAX,DWORD PTR [EBP+8]\r
1161         MOV ECX,64\r
1162         MUL ECX\r
1163         MOV ESI,OFFSET _comstat\r
1164         ADD ESI,EAX\r
1165         MOV EAX,DWORD PTR [ESI+24]\r
1166         MOV ECX,4096\r
1167         XOR EDX,EDX\r
1168         DIV ECX\r
1169         PUSH EAX\r
1170         CALL FWORD PTR _DeAllocPage\r
1171 L_59:\r
1172 L_58:\r
1173         MOV EAX,DWORD PTR [EBP-4]\r
1174         AND EAX,EAX\r
1175         JZ L_60\r
1176         MOV EAX,DWORD PTR [EBP+8]\r
1177         MOV ECX,64\r
1178         MUL ECX\r
1179         MOV ESI,OFFSET _comstat\r
1180         ADD ESI,EAX\r
1181         XOR EAX,EAX\r
1182         MOV DWORD PTR [ESI], EAX\r
1183         MOV EAX,DWORD PTR [EBP-4]\r
1184         JMP L_57\r
1185 L_60:\r
1186         MOV EAX,DWORD PTR [EBP+8]\r
1187         MOV ECX,64\r
1188         MUL ECX\r
1189         MOV ESI,OFFSET _comstat\r
1190         ADD ESI,EAX\r
1191         MOV EAX,DWORD PTR [ESI+20]\r
1192         MOV WORD PTR [EBP-6], AX\r
1193         MOV EAX,DWORD PTR [EBP+8]\r
1194         SHL EAX,2\r
1195         MOV ESI,OFFSET _cSendBuf\r
1196         ADD ESI,EAX\r
1197         XOR EAX,EAX\r
1198         MOV DWORD PTR [ESI], EAX\r
1199         MOV EAX,DWORD PTR [EBP+8]\r
1200         SHL EAX,2\r
1201         MOV ESI,OFFSET _head_send\r
1202         ADD ESI,EAX\r
1203         XOR EAX,EAX\r
1204         MOV DWORD PTR [ESI], EAX\r
1205         MOV EAX,DWORD PTR [EBP+8]\r
1206         SHL EAX,2\r
1207         MOV ESI,OFFSET _tail_send\r
1208         ADD ESI,EAX\r
1209         XOR EAX,EAX\r
1210         MOV DWORD PTR [ESI], EAX\r
1211         MOV EAX,DWORD PTR [EBP+8]\r
1212         SHL EAX,2\r
1213         MOV ESI,OFFSET _cRecvBuf\r
1214         ADD ESI,EAX\r
1215         XOR EAX,EAX\r
1216         MOV DWORD PTR [ESI], EAX\r
1217         MOV EAX,DWORD PTR [EBP+8]\r
1218         SHL EAX,2\r
1219         MOV ESI,OFFSET _head_recv\r
1220         ADD ESI,EAX\r
1221         XOR EAX,EAX\r
1222         MOV DWORD PTR [ESI], EAX\r
1223         MOV EAX,DWORD PTR [EBP+8]\r
1224         SHL EAX,2\r
1225         MOV ESI,OFFSET _tail_recv\r
1226         ADD ESI,EAX\r
1227         XOR EAX,EAX\r
1228         MOV DWORD PTR [ESI], EAX\r
1229         MOV EAX,DWORD PTR [EBP+8]\r
1230         SHL EAX,2\r
1231         MOV ESI,OFFSET _recv_error\r
1232         ADD ESI,EAX\r
1233         XOR EAX,EAX\r
1234         MOV DWORD PTR [ESI], EAX\r
1235         MOV EAX,DWORD PTR [EBP+8]\r
1236         SHL EAX,1\r
1237         MOV ESI,OFFSET _THR\r
1238         ADD ESI,EAX\r
1239         MOVZX EAX,WORD PTR [EBP-6]\r
1240         MOV WORD PTR [ESI], AX\r
1241         MOV EAX,DWORD PTR [EBP+8]\r
1242         SHL EAX,1\r
1243         MOV ESI,OFFSET _IER\r
1244         ADD ESI,EAX\r
1245         MOVZX EAX,WORD PTR [EBP-6]\r
1246         MOV ECX,1\r
1247         ADD EAX,ECX\r
1248         MOV WORD PTR [ESI], AX\r
1249         MOV EAX,DWORD PTR [EBP+8]\r
1250         SHL EAX,1\r
1251         MOV ESI,OFFSET _IIR\r
1252         ADD ESI,EAX\r
1253         MOVZX EAX,WORD PTR [EBP-6]\r
1254         MOV ECX,2\r
1255         ADD EAX,ECX\r
1256         MOV WORD PTR [ESI], AX\r
1257         MOV EAX,DWORD PTR [EBP+8]\r
1258         SHL EAX,1\r
1259         MOV ESI,OFFSET _FCR\r
1260         ADD ESI,EAX\r
1261         MOVZX EAX,WORD PTR [EBP-6]\r
1262         MOV ECX,2\r
1263         ADD EAX,ECX\r
1264         MOV WORD PTR [ESI], AX\r
1265         MOV EAX,DWORD PTR [EBP+8]\r
1266         SHL EAX,1\r
1267         MOV ESI,OFFSET _LCR\r
1268         ADD ESI,EAX\r
1269         MOVZX EAX,WORD PTR [EBP-6]\r
1270         MOV ECX,3\r
1271         ADD EAX,ECX\r
1272         MOV WORD PTR [ESI], AX\r
1273         MOV EAX,DWORD PTR [EBP+8]\r
1274         SHL EAX,1\r
1275         MOV ESI,OFFSET _MCR\r
1276         ADD ESI,EAX\r
1277         MOVZX EAX,WORD PTR [EBP-6]\r
1278         MOV ECX,4\r
1279         ADD EAX,ECX\r
1280         MOV WORD PTR [ESI], AX\r
1281         MOV EAX,DWORD PTR [EBP+8]\r
1282         SHL EAX,1\r
1283         MOV ESI,OFFSET _LSR\r
1284         ADD ESI,EAX\r
1285         MOVZX EAX,WORD PTR [EBP-6]\r
1286         MOV ECX,5\r
1287         ADD EAX,ECX\r
1288         MOV WORD PTR [ESI], AX\r
1289         MOV EAX,DWORD PTR [EBP+8]\r
1290         SHL EAX,1\r
1291         MOV ESI,OFFSET _MSR\r
1292         ADD ESI,EAX\r
1293         MOVZX EAX,WORD PTR [EBP-6]\r
1294         MOV ECX,6\r
1295         ADD EAX,ECX\r
1296         MOV WORD PTR [ESI], AX\r
1297         MOV EAX,DWORD PTR [EBP+8]\r
1298         SHL EAX,1\r
1299         MOV ESI,OFFSET _DLAB_HI\r
1300         ADD ESI,EAX\r
1301         MOVZX EAX,WORD PTR [EBP-6]\r
1302         MOV ECX,1\r
1303         ADD EAX,ECX\r
1304         MOV WORD PTR [ESI], AX\r
1305         MOV EAX,DWORD PTR [EBP+8]\r
1306         SHL EAX,1\r
1307         MOV ESI,OFFSET _DLAB_LO\r
1308         ADD ESI,EAX\r
1309         MOVZX EAX,WORD PTR [EBP-6]\r
1310         MOV WORD PTR [ESI], AX\r
1311         MOV EAX,DWORD PTR [EBP+8]\r
1312         SHL EAX,1\r
1313         MOV ESI,OFFSET _THR\r
1314         ADD ESI,EAX\r
1315         MOVZX EAX,WORD PTR [ESI]\r
1316         PUSH EAX\r
1317         CALL FWORD PTR _InByte\r
1318         MOV EAX,DWORD PTR [EBP+8]\r
1319         SHL EAX,1\r
1320         MOV ESI,OFFSET _LSR\r
1321         ADD ESI,EAX\r
1322         MOVZX EAX,WORD PTR [ESI]\r
1323         PUSH EAX\r
1324         CALL FWORD PTR _InByte\r
1325         CLI\r
1326         MOV EAX,DWORD PTR [EBP+8]\r
1327         MOV ESI,OFFSET _control_byte\r
1328         ADD ESI,EAX\r
1329         MOV EAX,11\r
1330         MOV BYTE PTR [ESI], AL\r
1331         MOV EAX,DWORD PTR [EBP+8]\r
1332         MOV ESI,OFFSET _control_byte\r
1333         ADD ESI,EAX\r
1334         XOR EAX,EAX\r
1335         MOV AL,BYTE PTR [ESI]\r
1336         PUSH EAX\r
1337         MOV EAX,DWORD PTR [EBP+8]\r
1338         SHL EAX,1\r
1339         MOV ESI,OFFSET _MCR\r
1340         ADD ESI,EAX\r
1341         MOVZX EAX,WORD PTR [ESI]\r
1342         PUSH EAX\r
1343         CALL FWORD PTR _OutByte\r
1344         PUSH 15\r
1345         MOV EAX,DWORD PTR [EBP+8]\r
1346         SHL EAX,1\r
1347         MOV ESI,OFFSET _IER\r
1348         ADD ESI,EAX\r
1349         MOVZX EAX,WORD PTR [ESI]\r
1350         PUSH EAX\r
1351         CALL FWORD PTR _OutByte\r
1352         PUSH 3\r
1353         MOV EAX,DWORD PTR [EBP+8]\r
1354         SHL EAX,1\r
1355         MOV ESI,OFFSET _FCR\r
1356         ADD ESI,EAX\r
1357         MOVZX EAX,WORD PTR [ESI]\r
1358         PUSH EAX\r
1359         CALL FWORD PTR _OutByte\r
1360         MOV EAX,DWORD PTR [EBP+8]\r
1361         SHL EAX,1\r
1362         MOV ESI,OFFSET _IIR\r
1363         ADD ESI,EAX\r
1364         MOVZX EAX,WORD PTR [ESI]\r
1365         PUSH EAX\r
1366         CALL FWORD PTR _InByte\r
1367         MOV BYTE PTR [EBP-7], AL\r
1368         XOR EAX,EAX\r
1369         MOV AL,BYTE PTR [EBP-7]\r
1370         MOV ECX,192\r
1371         AND EAX,ECX\r
1372         JZ L_61\r
1373         MOV EAX,DWORD PTR [EBP+8]\r
1374         MOV ESI,OFFSET _f16550\r
1375         ADD ESI,EAX\r
1376         MOV EAX,1\r
1377         MOV BYTE PTR [ESI], AL\r
1378         JMP L_62\r
1379 L_61:\r
1380         MOV EAX,DWORD PTR [EBP+8]\r
1381         MOV ESI,OFFSET _f16550\r
1382         ADD ESI,EAX\r
1383         XOR EAX,EAX\r
1384         MOV BYTE PTR [ESI], AL\r
1385 L_62:\r
1386         STI\r
1387         PUSH DWORD PTR [EBP+8]\r
1388         CALL _SetParams\r
1389         MOV EAX,DWORD PTR [EBP+8]\r
1390         MOV ECX,64\r
1391         MUL ECX\r
1392         MOV ESI,OFFSET _comstat\r
1393         ADD ESI,EAX\r
1394         XOR EAX,EAX\r
1395         MOV AL,BYTE PTR [ESI+19]\r
1396         PUSH EAX\r
1397         CALL FWORD PTR _UnMaskIRQ\r
1398         XOR EAX,EAX\r
1399 L_57:\r
1400         MOV ESP,EBP\r
1401         POP EBP\r
1402         RETN 4\r
1403 _CloseCommC:\r
1404         PUSH EBP\r
1405         MOV EBP,ESP\r
1406         SUB ESP,4\r
1407         MOV EAX,DWORD PTR [EBP+8]\r
1408         MOV ECX,64\r
1409         MUL ECX\r
1410         MOV ESI,OFFSET _comstat\r
1411         ADD ESI,EAX\r
1412         XOR EAX,EAX\r
1413         MOV AL,BYTE PTR [ESI+19]\r
1414         PUSH EAX\r
1415         CALL FWORD PTR _MaskIRQ\r
1416         XOR EAX,EAX\r
1417         PUSH EAX\r
1418         MOV EAX,DWORD PTR [EBP+8]\r
1419         SHL EAX,1\r
1420         MOV ESI,OFFSET _MCR\r
1421         ADD ESI,EAX\r
1422         MOVZX EAX,WORD PTR [ESI]\r
1423         PUSH EAX\r
1424         CALL FWORD PTR _OutByte\r
1425         XOR EAX,EAX\r
1426         PUSH EAX\r
1427         MOV EAX,DWORD PTR [EBP+8]\r
1428         SHL EAX,1\r
1429         MOV ESI,OFFSET _IER\r
1430         ADD ESI,EAX\r
1431         MOVZX EAX,WORD PTR [ESI]\r
1432         PUSH EAX\r
1433         CALL FWORD PTR _OutByte\r
1434         MOV EAX,DWORD PTR [EBP+8]\r
1435         SHL EAX,2\r
1436         MOV ESI,OFFSET _pSendBuf\r
1437         ADD ESI,EAX\r
1438         PUSH DWORD PTR [ESI]\r
1439         MOV EAX,DWORD PTR [EBP+8]\r
1440         MOV ECX,64\r
1441         MUL ECX\r
1442         MOV ESI,OFFSET _comstat\r
1443         ADD ESI,EAX\r
1444         MOV EAX,DWORD PTR [ESI+24]\r
1445         MOV ECX,4096\r
1446         XOR EDX,EDX\r
1447         DIV ECX\r
1448         PUSH EAX\r
1449         CALL FWORD PTR _DeAllocPage\r
1450         MOV DWORD PTR [EBP-4], EAX\r
1451         MOV EAX,DWORD PTR [EBP+8]\r
1452         SHL EAX,2\r
1453         MOV ESI,OFFSET _pRecvBuf\r
1454         ADD ESI,EAX\r
1455         PUSH DWORD PTR [ESI]\r
1456         MOV EAX,DWORD PTR [EBP+8]\r
1457         MOV ECX,64\r
1458         MUL ECX\r
1459         MOV ESI,OFFSET _comstat\r
1460         ADD ESI,EAX\r
1461         MOV EAX,DWORD PTR [ESI+28]\r
1462         MOV ECX,4096\r
1463         XOR EDX,EDX\r
1464         DIV ECX\r
1465         PUSH EAX\r
1466         CALL FWORD PTR _DeAllocPage\r
1467         MOV DWORD PTR [EBP-4], EAX\r
1468         MOV EAX,DWORD PTR [EBP+8]\r
1469         MOV ECX,64\r
1470         MUL ECX\r
1471         MOV ESI,OFFSET _comstat\r
1472         ADD ESI,EAX\r
1473         XOR EAX,EAX\r
1474         MOV DWORD PTR [ESI], EAX\r
1475         MOV EAX,DWORD PTR [EBP-4]\r
1476         MOV ESP,EBP\r
1477         POP EBP\r
1478         RETN 4\r
1479 _comdev_op:\r
1480         PUSH EBP\r
1481         MOV EBP,ESP\r
1482         SUB ESP,13\r
1483         MOV EAX,DWORD PTR [EBP+24]\r
1484         CMP EAX,5\r
1485         SETE AL\r
1486         AND AL,AL\r
1487         JZ L_64\r
1488         XOR EAX,EAX\r
1489         MOV DWORD PTR [EBP-12], EAX\r
1490         JMP L_65\r
1491 L_64:\r
1492         MOV EAX,1\r
1493         MOV DWORD PTR [EBP-12], EAX\r
1494 L_65:\r
1495         LEA EAX,DWORD PTR [EBP-8]\r
1496         PUSH EAX\r
1497         CALL FWORD PTR _GetJobNum\r
1498         MOV EAX,DWORD PTR [EBP-12]\r
1499         MOV ECX,64\r
1500         MUL ECX\r
1501         MOV ESI,OFFSET _comstat\r
1502         ADD ESI,EAX\r
1503         MOV EAX,DWORD PTR [ESI]\r
1504         AND EAX,EAX\r
1505         SETZ AL\r
1506         AND AL,AL\r
1507         JZ L_66\r
1508         MOV EAX,DWORD PTR [EBP+20]\r
1509         CMP EAX,10\r
1510         SETNE AL\r
1511         AND AL,AL\r
1512 L_66:\r
1513         JZ L_67\r
1514         MOV EAX,807\r
1515         JMP L_68\r
1516 L_67:\r
1517         MOV EAX,DWORD PTR [EBP-12]\r
1518         MOV ECX,64\r
1519         MUL ECX\r
1520         MOV ESI,OFFSET _comstat\r
1521         ADD ESI,EAX\r
1522         MOV EAX,DWORD PTR [ESI]\r
1523         AND EAX,EAX\r
1524         JZ L_69\r
1525         MOV EAX,DWORD PTR [EBP-12]\r
1526         MOV ECX,64\r
1527         MUL ECX\r
1528         MOV ESI,OFFSET _comstat\r
1529         ADD ESI,EAX\r
1530         MOV EAX,DWORD PTR [ESI]\r
1531         CMP EAX,DWORD PTR [EBP-8]\r
1532         SETNE AL\r
1533         AND AL,AL\r
1534         JZ L_70\r
1535         MOV EAX,DWORD PTR [EBP-8]\r
1536         CMP EAX,1\r
1537         SETNE AL\r
1538         AND AL,AL\r
1539 L_70:\r
1540         JZ L_71\r
1541         MOV EAX,812\r
1542         JMP L_68\r
1543 L_71:\r
1544 L_69:\r
1545         XOR EAX,EAX\r
1546         MOV DWORD PTR [EBP-4], EAX\r
1547         MOV EAX,DWORD PTR [EBP+20]\r
1548         JMP L_73\r
1549 L_74:\r
1550         JMP L_72\r
1551 L_75:\r
1552         PUSH DWORD PTR [EBP-12]\r
1553         PUSH DWORD PTR [EBP+8]\r
1554         CALL _ReadByteC\r
1555         MOV DWORD PTR [EBP-4], EAX\r
1556         JMP L_72\r
1557 L_76:\r
1558         PUSH DWORD PTR [EBP-12]\r
1559         MOV ESI,DWORD PTR [EBP+8]\r
1560         XOR EAX,EAX\r
1561         MOV AL,BYTE PTR [ESI]\r
1562         PUSH EAX\r
1563         CALL _WriteByteC\r
1564         MOV DWORD PTR [EBP-4], EAX\r
1565         JMP L_72\r
1566 L_77:\r
1567         PUSH DWORD PTR [EBP-12]\r
1568         PUSH DWORD PTR [EBP+8]\r
1569         PUSH DWORD PTR [EBP+12]\r
1570         MOV EAX,DWORD PTR [EBP-12]\r
1571         MOV ECX,64\r
1572         MUL ECX\r
1573         MOV ESI,OFFSET _comstat\r
1574         ADD ESI,EAX\r
1575         MOV EAX,ESI\r
1576         ADD EAX,8\r
1577         PUSH EAX\r
1578         CALL _ReadRecordC\r
1579         MOV DWORD PTR [EBP-4], EAX\r
1580         JMP L_72\r
1581 L_78:\r
1582         PUSH DWORD PTR [EBP-12]\r
1583         PUSH DWORD PTR [EBP+8]\r
1584         PUSH DWORD PTR [EBP+12]\r
1585         CALL _WriteRecordC\r
1586         MOV DWORD PTR [EBP-4], EAX\r
1587         JMP L_72\r
1588 L_79:\r
1589         MOV EAX,DWORD PTR [EBP-12]\r
1590         MOV ECX,64\r
1591         MUL ECX\r
1592         MOV ESI,OFFSET _comstat\r
1593         ADD ESI,EAX\r
1594         MOV EAX,DWORD PTR [EBP+16]\r
1595         MOV DWORD PTR [ESI+36], EAX\r
1596         JMP L_72\r
1597 L_80:\r
1598         MOV EAX,DWORD PTR [EBP-12]\r
1599         MOV ECX,64\r
1600         MUL ECX\r
1601         MOV ESI,OFFSET _comstat\r
1602         ADD ESI,EAX\r
1603         MOV EAX,DWORD PTR [EBP+16]\r
1604         MOV DWORD PTR [ESI+32], EAX\r
1605         JMP L_72\r
1606 L_81:\r
1607         PUSH DWORD PTR [EBP-12]\r
1608         CALL _OpenCommC\r
1609         MOV DWORD PTR [EBP-4], EAX\r
1610         JMP L_72\r
1611 L_82:\r
1612         PUSH DWORD PTR [EBP-12]\r
1613         CALL _CloseCommC\r
1614         MOV DWORD PTR [EBP-4], EAX\r
1615         JMP L_72\r
1616 L_83:\r
1617         PUSH DWORD PTR [EBP-12]\r
1618         CALL _DiscardRecvC\r
1619         MOV DWORD PTR [EBP-4], EAX\r
1620         JMP L_72\r
1621 L_84:\r
1622         MOV EAX,DWORD PTR [EBP-12]\r
1623         MOV ESI,OFFSET _control_byte\r
1624         ADD ESI,EAX\r
1625         XOR EAX,EAX\r
1626         MOV AL,BYTE PTR [ESI]\r
1627         MOV ECX,1\r
1628         OR EAX,ECX\r
1629         MOV BYTE PTR [ESI], AL\r
1630         MOV EAX,DWORD PTR [EBP-12]\r
1631         MOV ESI,OFFSET _control_byte\r
1632         ADD ESI,EAX\r
1633         XOR EAX,EAX\r
1634         MOV AL,BYTE PTR [ESI]\r
1635         PUSH EAX\r
1636         MOV EAX,DWORD PTR [EBP-12]\r
1637         SHL EAX,1\r
1638         MOV ESI,OFFSET _LCR\r
1639         ADD ESI,EAX\r
1640         MOVZX EAX,WORD PTR [ESI]\r
1641         PUSH EAX\r
1642         CALL FWORD PTR _OutByte\r
1643         JMP L_72\r
1644 L_85:\r
1645         MOV EAX,DWORD PTR [EBP-12]\r
1646         MOV ESI,OFFSET _control_byte\r
1647         ADD ESI,EAX\r
1648         XOR EAX,EAX\r
1649         MOV AL,BYTE PTR [ESI]\r
1650         MOV ECX,2\r
1651         OR EAX,ECX\r
1652         MOV BYTE PTR [ESI], AL\r
1653         MOV EAX,DWORD PTR [EBP-12]\r
1654         MOV ESI,OFFSET _control_byte\r
1655         ADD ESI,EAX\r
1656         XOR EAX,EAX\r
1657         MOV AL,BYTE PTR [ESI]\r
1658         PUSH EAX\r
1659         MOV EAX,DWORD PTR [EBP-12]\r
1660         SHL EAX,1\r
1661         MOV ESI,OFFSET _MCR\r
1662         ADD ESI,EAX\r
1663         MOVZX EAX,WORD PTR [ESI]\r
1664         PUSH EAX\r
1665         CALL FWORD PTR _OutByte\r
1666         JMP L_72\r
1667 L_86:\r
1668         MOV EAX,DWORD PTR [EBP-12]\r
1669         MOV ESI,OFFSET _control_byte\r
1670         ADD ESI,EAX\r
1671         XOR EAX,EAX\r
1672         MOV AL,BYTE PTR [ESI]\r
1673         MOV ECX,-2\r
1674         AND EAX,ECX\r
1675         MOV BYTE PTR [ESI], AL\r
1676         MOV EAX,DWORD PTR [EBP-12]\r
1677         MOV ESI,OFFSET _control_byte\r
1678         ADD ESI,EAX\r
1679         XOR EAX,EAX\r
1680         MOV AL,BYTE PTR [ESI]\r
1681         PUSH EAX\r
1682         MOV EAX,DWORD PTR [EBP-12]\r
1683         SHL EAX,1\r
1684         MOV ESI,OFFSET _LCR\r
1685         ADD ESI,EAX\r
1686         MOVZX EAX,WORD PTR [ESI]\r
1687         PUSH EAX\r
1688         CALL FWORD PTR _OutByte\r
1689 L_87:\r
1690         MOV EAX,DWORD PTR [EBP-12]\r
1691         MOV ESI,OFFSET _control_byte\r
1692         ADD ESI,EAX\r
1693         XOR EAX,EAX\r
1694         MOV AL,BYTE PTR [ESI]\r
1695         MOV ECX,-3\r
1696         AND EAX,ECX\r
1697         MOV BYTE PTR [ESI], AL\r
1698         MOV EAX,DWORD PTR [EBP-12]\r
1699         MOV ESI,OFFSET _control_byte\r
1700         ADD ESI,EAX\r
1701         XOR EAX,EAX\r
1702         MOV AL,BYTE PTR [ESI]\r
1703         PUSH EAX\r
1704         MOV EAX,DWORD PTR [EBP-12]\r
1705         SHL EAX,1\r
1706         MOV ESI,OFFSET _MCR\r
1707         ADD ESI,EAX\r
1708         MOVZX EAX,WORD PTR [ESI]\r
1709         PUSH EAX\r
1710         CALL FWORD PTR _OutByte\r
1711         JMP L_72\r
1712 L_88:\r
1713         MOV EAX,DWORD PTR [EBP-12]\r
1714         SHL EAX,1\r
1715         MOV ESI,OFFSET _LCR\r
1716         ADD ESI,EAX\r
1717         MOVZX EAX,WORD PTR [ESI]\r
1718         PUSH EAX\r
1719         CALL FWORD PTR _InByte\r
1720         MOV BYTE PTR [EBP-13], AL\r
1721         XOR EAX,EAX\r
1722         MOV AL,BYTE PTR [EBP-13]\r
1723         MOV ECX,64\r
1724         OR EAX,ECX\r
1725         PUSH EAX\r
1726         MOV EAX,DWORD PTR [EBP-12]\r
1727         SHL EAX,1\r
1728         MOV ESI,OFFSET _LCR\r
1729         ADD ESI,EAX\r
1730         MOVZX EAX,WORD PTR [ESI]\r
1731         PUSH EAX\r
1732         CALL FWORD PTR _OutByte\r
1733         PUSH DWORD PTR [EBP+16]\r
1734         CALL FWORD PTR _Sleep\r
1735         XOR EAX,EAX\r
1736         MOV AL,BYTE PTR [EBP-13]\r
1737         PUSH EAX\r
1738         MOV EAX,DWORD PTR [EBP-12]\r
1739         SHL EAX,1\r
1740         MOV ESI,OFFSET _LCR\r
1741         ADD ESI,EAX\r
1742         MOVZX EAX,WORD PTR [ESI]\r
1743         PUSH EAX\r
1744         CALL FWORD PTR _OutByte\r
1745         JMP L_72\r
1746 L_89:\r
1747         MOV ESI,DWORD PTR [EBP+8]\r
1748         MOV EAX,DWORD PTR [EBP-12]\r
1749         MOV EBX,ESI\r
1750         MOV ESI,OFFSET _mstat_byte\r
1751         ADD ESI,EAX\r
1752         XOR EAX,EAX\r
1753         MOV AL,BYTE PTR [ESI]\r
1754         MOV ECX,128\r
1755         AND EAX,ECX\r
1756         MOV BYTE PTR [EBX], AL\r
1757         JMP L_72\r
1758 L_90:\r
1759         MOV ESI,DWORD PTR [EBP+8]\r
1760         MOV EAX,DWORD PTR [EBP-12]\r
1761         MOV EBX,ESI\r
1762         MOV ESI,OFFSET _mstat_byte\r
1763         ADD ESI,EAX\r
1764         XOR EAX,EAX\r
1765         MOV AL,BYTE PTR [ESI]\r
1766         MOV ECX,32\r
1767         AND EAX,ECX\r
1768         MOV BYTE PTR [EBX], AL\r
1769         JMP L_72\r
1770 L_91:\r
1771         MOV ESI,DWORD PTR [EBP+8]\r
1772         MOV EAX,DWORD PTR [EBP-12]\r
1773         MOV EBX,ESI\r
1774         MOV ESI,OFFSET _mstat_byte\r
1775         ADD ESI,EAX\r
1776         XOR EAX,EAX\r
1777         MOV AL,BYTE PTR [ESI]\r
1778         MOV ECX,16\r
1779         AND EAX,ECX\r
1780         MOV BYTE PTR [EBX], AL\r
1781         JMP L_72\r
1782 L_92:\r
1783         MOV ESI,DWORD PTR [EBP+8]\r
1784         MOV EAX,DWORD PTR [EBP-12]\r
1785         MOV EBX,ESI\r
1786         MOV ESI,OFFSET _mstat_byte\r
1787         ADD ESI,EAX\r
1788         XOR EAX,EAX\r
1789         MOV AL,BYTE PTR [ESI]\r
1790         MOV ECX,64\r
1791         AND EAX,ECX\r
1792         MOV BYTE PTR [EBX], AL\r
1793         JMP L_72\r
1794 L_93:\r
1795         JMP L_72\r
1796 L_73:\r
1797         CMP EAX,23\r
1798         JE L_92\r
1799         CMP EAX,22\r
1800         JE L_91\r
1801         CMP EAX,21\r
1802         JE L_90\r
1803         CMP EAX,20\r
1804         JE L_89\r
1805         CMP EAX,19\r
1806         JE L_88\r
1807         CMP EAX,18\r
1808         JE L_87\r
1809         CMP EAX,17\r
1810         JE L_86\r
1811         CMP EAX,16\r
1812         JE L_85\r
1813         CMP EAX,15\r
1814         JE L_84\r
1815         CMP EAX,12\r
1816         JE L_83\r
1817         CMP EAX,11\r
1818         JE L_82\r
1819         CMP EAX,10\r
1820         JE L_81\r
1821         CMP EAX,14\r
1822         JE L_80\r
1823         CMP EAX,13\r
1824         JE L_79\r
1825         CMP EAX,2\r
1826         JE L_78\r
1827         CMP EAX,1\r
1828         JE L_77\r
1829         CMP EAX,32\r
1830         JE L_76\r
1831         CMP EAX,31\r
1832         JE L_75\r
1833         CMP EAX,0\r
1834         JE L_74\r
1835         JMP L_93\r
1836 L_72:\r
1837         MOV EAX,DWORD PTR [EBP-12]\r
1838         MOV ECX,64\r
1839         MUL ECX\r
1840         MOV ESI,OFFSET _comstat\r
1841         ADD ESI,EAX\r
1842         MOV EAX,DWORD PTR [EBP-4]\r
1843         MOV DWORD PTR [ESI+4], EAX\r
1844         MOV EAX,DWORD PTR [EBP-4]\r
1845 L_68:\r
1846         MOV ESP,EBP\r
1847         POP EBP\r
1848         RETN 20\r
1849 _comdev_stat:\r
1850         PUSH EBP\r
1851         MOV EBP,ESP\r
1852         SUB ESP,8\r
1853         MOV EAX,DWORD PTR [EBP+20]\r
1854         CMP EAX,5\r
1855         SETE AL\r
1856         AND AL,AL\r
1857         JZ L_94\r
1858         XOR EAX,EAX\r
1859         MOV DWORD PTR [EBP-8], EAX\r
1860         JMP L_95\r
1861 L_94:\r
1862         MOV EAX,1\r
1863         MOV DWORD PTR [EBP-8], EAX\r
1864 L_95:\r
1865         MOV EAX,DWORD PTR [EBP+12]\r
1866         CMP EAX,64\r
1867         SETA AL\r
1868         AND AL,AL\r
1869         JZ L_96\r
1870         MOV EAX,64\r
1871         MOV DWORD PTR [EBP-4], EAX\r
1872         JMP L_97\r
1873 L_96:\r
1874         MOV EAX,DWORD PTR [EBP+12]\r
1875         MOV DWORD PTR [EBP-4], EAX\r
1876 L_97:\r
1877         MOV EAX,DWORD PTR [EBP-8]\r
1878         AND EAX,EAX\r
1879         JNZ L_98\r
1880         PUSH OFFSET _comstat\r
1881         PUSH DWORD PTR [EBP+16]\r
1882         PUSH DWORD PTR [EBP-4]\r
1883         CALL FWORD PTR _CopyData\r
1884         JMP L_99\r
1885 L_98:\r
1886         MOV EAX,64\r
1887         MOV ESI,OFFSET _comstat\r
1888         ADD ESI,EAX\r
1889         PUSH ESI\r
1890         PUSH DWORD PTR [EBP+16]\r
1891         PUSH DWORD PTR [EBP-4]\r
1892         CALL FWORD PTR _CopyData\r
1893 L_99:\r
1894         MOV ESI,DWORD PTR [EBP+8]\r
1895         MOV EAX,DWORD PTR [EBP+12]\r
1896         MOV DWORD PTR [ESI], EAX\r
1897         XOR EAX,EAX\r
1898         MOV ESP,EBP\r
1899         POP EBP\r
1900         RETN 16\r
1901 _comdev_init:\r
1902         PUSH EBP\r
1903         MOV EBP,ESP\r
1904         SUB ESP,34\r
1905         MOV EAX,DWORD PTR [EBP+16]\r
1906         CMP EAX,5\r
1907         SETE AL\r
1908         AND AL,AL\r
1909         JZ L_101\r
1910         XOR EAX,EAX\r
1911         MOV DWORD PTR [EBP-16], EAX\r
1912         JMP L_102\r
1913 L_101:\r
1914         MOV EAX,1\r
1915         MOV DWORD PTR [EBP-16], EAX\r
1916 L_102:\r
1917         MOV EAX,DWORD PTR [EBP+8]\r
1918         CMP EAX,40\r
1919         SETB AL\r
1920         AND AL,AL\r
1921         JZ L_103\r
1922         MOV EAX,827\r
1923         JMP L_104\r
1924 L_103:\r
1925         MOV EAX,DWORD PTR [EBP+12]\r
1926         MOV _pCS, EAX\r
1927         MOV ESI,_pCS\r
1928         MOV EAX,DWORD PTR [ESI+12]\r
1929         MOV DWORD PTR [EBP-20], EAX\r
1930         MOV ESI,_pCS\r
1931         XOR EAX,EAX\r
1932         MOV AL,BYTE PTR [ESI+16]\r
1933         MOV BYTE PTR [EBP-31], AL\r
1934         MOV ESI,_pCS\r
1935         XOR EAX,EAX\r
1936         MOV AL,BYTE PTR [ESI+17]\r
1937         MOV BYTE PTR [EBP-32], AL\r
1938         MOV ESI,_pCS\r
1939         XOR EAX,EAX\r
1940         MOV AL,BYTE PTR [ESI+18]\r
1941         MOV BYTE PTR [EBP-33], AL\r
1942         MOV ESI,_pCS\r
1943         MOV EAX,DWORD PTR [ESI+32]\r
1944         MOV DWORD PTR [EBP-24], EAX\r
1945         MOV ESI,_pCS\r
1946         MOV EAX,DWORD PTR [ESI+36]\r
1947         MOV DWORD PTR [EBP-28], EAX\r
1948         MOV ESI,_pCS\r
1949         MOV EAX,DWORD PTR [ESI+20]\r
1950         MOV WORD PTR [EBP-30], AX\r
1951         MOV ESI,_pCS\r
1952         MOV EAX,DWORD PTR [ESI+24]\r
1953         MOV DWORD PTR [EBP-8], EAX\r
1954         MOV ESI,_pCS\r
1955         MOV EAX,DWORD PTR [ESI+28]\r
1956         MOV DWORD PTR [EBP-12], EAX\r
1957         MOV ESI,_pCS\r
1958         XOR EAX,EAX\r
1959         MOV AL,BYTE PTR [ESI+19]\r
1960         MOV BYTE PTR [EBP-34], AL\r
1961         MOV EAX,DWORD PTR [EBP-20]\r
1962         CMP EAX,38400\r
1963         SETA AL\r
1964         AND AL,AL\r
1965         JNZ L_105\r
1966         MOV EAX,DWORD PTR [EBP-20]\r
1967         CMP EAX,150\r
1968         SETB AL\r
1969         AND AL,AL\r
1970 L_105:\r
1971         JZ L_106\r
1972         MOV EAX,820\r
1973         JMP L_104\r
1974 L_106:\r
1975         XOR EAX,EAX\r
1976         MOV AL,BYTE PTR [EBP-31]\r
1977         XOR ECX,ECX\r
1978         CMP EAX,ECX\r
1979         SETB AL\r
1980         AND AL,AL\r
1981         JNZ L_107\r
1982         XOR EAX,EAX\r
1983         MOV AL,BYTE PTR [EBP-31]\r
1984         CMP EAX,2\r
1985         SETA AL\r
1986         AND AL,AL\r
1987 L_107:\r
1988         JZ L_108\r
1989         MOV EAX,821\r
1990         JMP L_104\r
1991 L_108:\r
1992         XOR EAX,EAX\r
1993         MOV AL,BYTE PTR [EBP-32]\r
1994         CMP EAX,5\r
1995         SETB AL\r
1996         AND AL,AL\r
1997         JNZ L_109\r
1998         XOR EAX,EAX\r
1999         MOV AL,BYTE PTR [EBP-32]\r
2000         CMP EAX,8\r
2001         SETA AL\r
2002         AND AL,AL\r
2003 L_109:\r
2004         JZ L_110\r
2005         MOV EAX,822\r
2006         JMP L_104\r
2007 L_110:\r
2008         XOR EAX,EAX\r
2009         MOV AL,BYTE PTR [EBP-33]\r
2010         CMP EAX,1\r
2011         SETB AL\r
2012         AND AL,AL\r
2013         JNZ L_111\r
2014         XOR EAX,EAX\r
2015         MOV AL,BYTE PTR [EBP-33]\r
2016         CMP EAX,2\r
2017         SETA AL\r
2018         AND AL,AL\r
2019 L_111:\r
2020         JZ L_112\r
2021         MOV EAX,823\r
2022         JMP L_104\r
2023 L_112:\r
2024         MOV EAX,DWORD PTR [EBP-24]\r
2025         AND EAX,EAX\r
2026         JNZ L_113\r
2027         MOV EAX,1\r
2028         MOV DWORD PTR [EBP-24], EAX\r
2029 L_113:\r
2030         MOV EAX,DWORD PTR [EBP-28]\r
2031         AND EAX,EAX\r
2032         JNZ L_114\r
2033         MOV EAX,1\r
2034         MOV DWORD PTR [EBP-28], EAX\r
2035 L_114:\r
2036         MOV EAX,DWORD PTR [EBP-16]\r
2037         MOV ECX,64\r
2038         MUL ECX\r
2039         MOV ESI,OFFSET _comstat\r
2040         ADD ESI,EAX\r
2041         MOV EAX,DWORD PTR [EBP-20]\r
2042         MOV DWORD PTR [ESI+12], EAX\r
2043         MOV EAX,DWORD PTR [EBP-16]\r
2044         MOV ECX,64\r
2045         MUL ECX\r
2046         MOV ESI,OFFSET _comstat\r
2047         ADD ESI,EAX\r
2048         XOR EAX,EAX\r
2049         MOV AL,BYTE PTR [EBP-31]\r
2050         MOV BYTE PTR [ESI+16], AL\r
2051         MOV EAX,DWORD PTR [EBP-16]\r
2052         MOV ECX,64\r
2053         MUL ECX\r
2054         MOV ESI,OFFSET _comstat\r
2055         ADD ESI,EAX\r
2056         XOR EAX,EAX\r
2057         MOV AL,BYTE PTR [EBP-32]\r
2058         MOV BYTE PTR [ESI+17], AL\r
2059         MOV EAX,DWORD PTR [EBP-16]\r
2060         MOV ECX,64\r
2061         MUL ECX\r
2062         MOV ESI,OFFSET _comstat\r
2063         ADD ESI,EAX\r
2064         XOR EAX,EAX\r
2065         MOV AL,BYTE PTR [EBP-33]\r
2066         MOV BYTE PTR [ESI+18], AL\r
2067         MOV EAX,DWORD PTR [EBP-16]\r
2068         MOV ECX,64\r
2069         MUL ECX\r
2070         MOV ESI,OFFSET _comstat\r
2071         ADD ESI,EAX\r
2072         MOV EAX,DWORD PTR [EBP-24]\r
2073         MOV DWORD PTR [ESI+32], EAX\r
2074         MOV EAX,DWORD PTR [EBP-16]\r
2075         MOV ECX,64\r
2076         MUL ECX\r
2077         MOV ESI,OFFSET _comstat\r
2078         ADD ESI,EAX\r
2079         MOV EAX,DWORD PTR [EBP-28]\r
2080         MOV DWORD PTR [ESI+36], EAX\r
2081         MOV EAX,DWORD PTR [EBP-16]\r
2082         MOV ECX,64\r
2083         MUL ECX\r
2084         MOV ESI,OFFSET _comstat\r
2085         ADD ESI,EAX\r
2086         MOV EAX,DWORD PTR [ESI]\r
2087         AND EAX,EAX\r
2088         JZ L_115\r
2089         PUSH DWORD PTR [EBP-16]\r
2090         CALL _SetParams\r
2091         JMP L_116\r
2092 L_115:\r
2093         MOVZX EAX,WORD PTR [EBP-30]\r
2094         AND EAX,EAX\r
2095         JNZ L_117\r
2096         MOV EAX,824\r
2097         JMP L_104\r
2098 L_117:\r
2099         XOR EAX,EAX\r
2100         MOV AL,BYTE PTR [EBP-34]\r
2101         CMP EAX,3\r
2102         SETB AL\r
2103         AND AL,AL\r
2104         JZ L_118\r
2105         MOV EAX,825\r
2106         JMP L_104\r
2107 L_118:\r
2108         MOV EAX,DWORD PTR [EBP-8]\r
2109         MOV ECX,4096\r
2110         XOR EDX,EDX\r
2111         DIV ECX\r
2112         MOV ECX,4096\r
2113         MUL ECX\r
2114         MOV DWORD PTR [EBP-8], EAX\r
2115         MOV EAX,DWORD PTR [EBP-8]\r
2116         MOV ECX,4096\r
2117         XOR EDX,EDX\r
2118         DIV ECX\r
2119         MOV EAX,EDX\r
2120         AND EAX,EAX\r
2121         JZ L_119\r
2122         MOV EAX,DWORD PTR [EBP-8]\r
2123         ADD EAX,4096\r
2124         MOV DWORD PTR [EBP-8], EAX\r
2125 L_119:\r
2126         MOV EAX,DWORD PTR [EBP-12]\r
2127         MOV ECX,4096\r
2128         XOR EDX,EDX\r
2129         DIV ECX\r
2130         MOV ECX,4096\r
2131         MUL ECX\r
2132         MOV DWORD PTR [EBP-12], EAX\r
2133         MOV EAX,DWORD PTR [EBP-12]\r
2134         MOV ECX,4096\r
2135         XOR EDX,EDX\r
2136         DIV ECX\r
2137         MOV EAX,EDX\r
2138         AND EAX,EAX\r
2139         JZ L_120\r
2140         MOV EAX,DWORD PTR [EBP-12]\r
2141         ADD EAX,4096\r
2142         MOV DWORD PTR [EBP-12], EAX\r
2143 L_120:\r
2144         MOV EAX,DWORD PTR [EBP-16]\r
2145         MOV ECX,64\r
2146         MUL ECX\r
2147         MOV ESI,OFFSET _comstat\r
2148         ADD ESI,EAX\r
2149         MOVZX EAX,WORD PTR [EBP-30]\r
2150         MOV DWORD PTR [ESI+20], EAX\r
2151         MOV EAX,DWORD PTR [EBP-16]\r
2152         MOV ECX,64\r
2153         MUL ECX\r
2154         MOV ESI,OFFSET _comstat\r
2155         ADD ESI,EAX\r
2156         XOR EAX,EAX\r
2157         MOV AL,BYTE PTR [EBP-34]\r
2158         MOV BYTE PTR [ESI+19], AL\r
2159         MOV EAX,DWORD PTR [EBP-16]\r
2160         MOV ECX,64\r
2161         MUL ECX\r
2162         MOV ESI,OFFSET _comstat\r
2163         ADD ESI,EAX\r
2164         MOV EAX,DWORD PTR [EBP-8]\r
2165         MOV DWORD PTR [ESI+24], EAX\r
2166         MOV EAX,DWORD PTR [EBP-16]\r
2167         MOV ECX,64\r
2168         MUL ECX\r
2169         MOV ESI,OFFSET _comstat\r
2170         ADD ESI,EAX\r
2171         MOV EAX,DWORD PTR [EBP-12]\r
2172         MOV DWORD PTR [ESI+28], EAX\r
2173         MOV EAX,DWORD PTR [EBP-16]\r
2174         SHL EAX,2\r
2175         MOV ESI,OFFSET _sSendBuf\r
2176         ADD ESI,EAX\r
2177         MOV EAX,DWORD PTR [EBP-8]\r
2178         MOV DWORD PTR [ESI], EAX\r
2179         MOV EAX,DWORD PTR [EBP-16]\r
2180         SHL EAX,2\r
2181         MOV ESI,OFFSET _sRecvBuf\r
2182         ADD ESI,EAX\r
2183         MOV EAX,DWORD PTR [EBP-12]\r
2184         MOV DWORD PTR [ESI], EAX\r
2185         XOR EAX,EAX\r
2186         MOV DWORD PTR [EBP-4], EAX\r
2187 L_116:\r
2188         MOV EAX,DWORD PTR [EBP-4]\r
2189 L_104:\r
2190         MOV ESP,EBP\r
2191         POP EBP\r
2192         RETN 12\r