3 EXTRN _AllocExch FWORD
\r
4 EXTRN _InitDevDr FWORD
\r
5 EXTRN _UnMaskIRQ FWORD
\r
7 EXTRN _SetIRQVector FWORD
\r
8 EXTRN _EndOfIRQ FWORD
\r
10 EXTRN _ISendMsg FWORD
\r
11 EXTRN _WaitMsg FWORD
\r
12 EXTRN _CheckMsg FWORD
\r
13 EXTRN _GetTimerTick FWORD
\r
15 EXTRN _KillAlarm FWORD
\r
17 EXTRN _MicroDelay FWORD
\r
18 EXTRN _OutByte FWORD
\r
20 EXTRN _CopyData FWORD
\r
21 EXTRN _SpawnTask FWORD
\r
22 EXTRN _GetJobNum FWORD
\r
23 _xmit_timeout DD 100
\r
25 PUBLIC _SendBuf DB 4096 DUP(0)
\r
35 _lptStk DD 200 DUP(0)
\r
37 _lptstat DB 61 DUP(0)
\r
39 _lptdcb DB 64 DUP(0)
\r
52 CALL FWORD PTR _InByte
\r
53 MOV _control_byte, AL
\r
54 MOV ESI,OFFSET _lptstat
\r
56 MOV AL,_control_byte
\r
57 MOV BYTE PTR [ESI+12], AL
\r
62 MOV _burstcount, EAX
\r
74 CALL FWORD PTR _InByte
\r
75 MOV _control_byte, AL
\r
76 MOV ESI,OFFSET _lptstat
\r
78 MOV AL,_control_byte
\r
79 MOV BYTE PTR [ESI+12], AL
\r
81 MOV AL,_control_byte
\r
87 MOV ESI,OFFSET _SendBuf
\r
90 MOV AL,BYTE PTR [ESI]
\r
94 CALL FWORD PTR _OutByte
\r
102 MOV _tail_send, EAX
\r
110 CALL FWORD PTR _OutByte
\r
114 CALL FWORD PTR _OutByte
\r
118 CALL FWORD PTR _Sleep
\r
123 CALL FWORD PTR _Sleep
\r
127 CALL FWORD PTR _Sleep
\r
137 MOV ESI,OFFSET _lptdcb
\r
139 MOV BYTE PTR [ESI], AL
\r
140 MOV ESI,OFFSET _lptdcb
\r
144 MOV BYTE PTR [ESI], AL
\r
145 MOV ESI,OFFSET _lptdcb
\r
149 MOV BYTE PTR [ESI], AL
\r
150 MOV ESI,OFFSET _lptdcb
\r
152 MOV BYTE PTR [ESI+12], AL
\r
153 MOV ESI,OFFSET _lptdcb
\r
155 MOV BYTE PTR [ESI+13], AL
\r
156 MOV ESI,OFFSET _lptdcb
\r
158 MOV WORD PTR [ESI+14], AX
\r
159 MOV ESI,OFFSET _lptdcb
\r
161 MOV DWORD PTR [ESI+20], EAX
\r
162 MOV ESI,OFFSET _lptdcb
\r
163 MOV EAX,OFFSET _lptdev_op
\r
164 MOV DWORD PTR [ESI+24], EAX
\r
165 MOV ESI,OFFSET _lptdcb
\r
166 MOV EAX,OFFSET _lptdev_init
\r
167 MOV DWORD PTR [ESI+28], EAX
\r
168 MOV ESI,OFFSET _lptdcb
\r
169 MOV EAX,OFFSET _lptdev_stat
\r
170 MOV DWORD PTR [ESI+32], EAX
\r
171 MOV ESI,OFFSET _lptstat
\r
173 MOV DWORD PTR [ESI+29], EAX
\r
174 MOV ESI,OFFSET _lptstat
\r
176 MOV DWORD PTR [ESI+21], EAX
\r
177 MOV ESI,OFFSET _lptstat
\r
179 MOV BYTE PTR [ESI+20], AL
\r
180 MOV ESI,OFFSET _lptstat
\r
182 MOV DWORD PTR [ESI+25], EAX
\r
185 MOV ESI,OFFSET _lptstat
\r
186 MOV EAX,DWORD PTR [ESI+21]
\r
188 MOV ESI,OFFSET _lptstat
\r
189 MOV EAX,DWORD PTR [ESI+21]
\r
192 MOV ESI,OFFSET _lptstat
\r
193 MOV EAX,DWORD PTR [ESI+21]
\r
199 MOV _head_send, EAX
\r
201 MOV _tail_send, EAX
\r
205 CALL FWORD PTR _OutByte
\r
207 CALL FWORD PTR _MicroDelay
\r
211 CALL FWORD PTR _OutByte
\r
212 PUSH OFFSET _lpt_task
\r
216 PUSH OFFSET _lptStkTop
\r
218 CALL FWORD PTR _SpawnTask
\r
219 MOV DWORD PTR [EBP-4], EAX
\r
220 MOV EAX,DWORD PTR [EBP-4]
\r
223 MOV EAX,DWORD PTR [EBP-4]
\r
227 PUSH OFFSET _lptdcb
\r
230 CALL FWORD PTR _InitDevDr
\r
231 MOV DWORD PTR [EBP-4], EAX
\r
241 MOV DWORD PTR [EBP-4], EAX
\r
242 MOV ESI,OFFSET _lptstat
\r
243 MOV EAX,DWORD PTR [ESI+29]
\r
244 MOV DWORD PTR [EBP-8], EAX
\r
252 CALL FWORD PTR _Sleep
\r
253 MOV EAX,DWORD PTR [EBP-8]
\r
254 DEC DWORD PTR [EBP-8]
\r
255 MOV EAX,DWORD PTR [EBP-8]
\r
265 MOV ESI,OFFSET _SendBuf
\r
268 MOV AL,BYTE PTR [EBP+8]
\r
269 MOV BYTE PTR [ESI], AL
\r
277 MOV _head_send, EAX
\r
282 MOV EAX,DWORD PTR [EBP-4]
\r
292 MOV WORD PTR [EBP-2], AX
\r
294 MOVZX EAX,WORD PTR [EBP+8]
\r
297 MOVSX EAX,WORD PTR [EBP-2]
\r
303 MOV ESI,DWORD PTR [EBP+12]
\r
304 INC DWORD PTR [EBP+12]
\r
306 MOV AL,BYTE PTR [ESI]
\r
309 MOV WORD PTR [EBP-2], AX
\r
310 DEC WORD PTR [EBP+8]
\r
311 MOVZX EAX,WORD PTR [EBP+8]
\r
314 MOVSX EAX,WORD PTR [EBP-2]
\r
322 LEA EAX,DWORD PTR [EBP-8]
\r
324 CALL FWORD PTR _GetJobNum
\r
325 MOV ESI,OFFSET _lptstat
\r
326 MOV EAX,DWORD PTR [ESI]
\r
329 MOV ESI,OFFSET _lptstat
\r
330 MOV EAX,DWORD PTR [EBP-8]
\r
331 CMP EAX,DWORD PTR [ESI]
\r
342 MOV ESI,OFFSET _lptstat
\r
343 MOV EAX,DWORD PTR [EBP-8]
\r
344 MOV DWORD PTR [ESI], EAX
\r
351 MOV _head_send, EAX
\r
353 MOV _tail_send, EAX
\r
355 MOV ESI,OFFSET _lptstat
\r
356 MOV EAX,DWORD PTR [ESI+21]
\r
357 MOV WORD PTR [EBP-10], AX
\r
358 MOVZX EAX,WORD PTR [EBP-10]
\r
360 MOVZX EAX,WORD PTR [EBP-10]
\r
364 MOVZX EAX,WORD PTR [EBP-10]
\r
377 LEA EAX,DWORD PTR [EBP-8]
\r
379 CALL FWORD PTR _GetJobNum
\r
380 MOV ESI,OFFSET _lptstat
\r
381 MOV EAX,DWORD PTR [ESI]
\r
384 MOV ESI,OFFSET _lptstat
\r
385 MOV EAX,DWORD PTR [EBP-8]
\r
386 CMP EAX,DWORD PTR [ESI]
\r
401 MOVSX EAX,WORD PTR [EBP+8]
\r
407 MOV _head_send, EAX
\r
409 MOV _tail_send, EAX
\r
411 MOV ESI,OFFSET _lptstat
\r
413 MOV DWORD PTR [ESI], EAX
\r
423 LEA EAX,DWORD PTR [EBP-8]
\r
425 CALL FWORD PTR _GetJobNum
\r
426 MOV ESI,OFFSET _lptstat
\r
427 MOV EAX,DWORD PTR [ESI]
\r
432 MOV EAX,DWORD PTR [EBP+20]
\r
441 MOV ESI,OFFSET _lptstat
\r
442 MOV EAX,DWORD PTR [ESI]
\r
445 MOV ESI,OFFSET _lptstat
\r
446 MOV EAX,DWORD PTR [ESI]
\r
447 CMP EAX,DWORD PTR [EBP-8]
\r
451 MOV EAX,DWORD PTR [EBP-8]
\r
462 MOV DWORD PTR [EBP-4], EAX
\r
463 MOV EAX,DWORD PTR [EBP+20]
\r
468 MOV ESI,DWORD PTR [EBP+8]
\r
470 MOV AL,BYTE PTR [ESI]
\r
473 MOV DWORD PTR [EBP-4], EAX
\r
476 PUSH DWORD PTR [EBP+8]
\r
477 PUSH DWORD PTR [EBP+12]
\r
479 MOV DWORD PTR [EBP-4], EAX
\r
482 MOV ESI,OFFSET _lptstat
\r
483 MOV EAX,DWORD PTR [EBP+16]
\r
484 MOV DWORD PTR [ESI+29], EAX
\r
488 MOV DWORD PTR [EBP-4], EAX
\r
494 MOV DWORD PTR [EBP-4], EAX
\r
499 MOV DWORD PTR [EBP-4], EAX
\r
503 MOV DWORD PTR [EBP-4], EAX
\r
522 MOV ESI,OFFSET _lptstat
\r
523 MOV EAX,DWORD PTR [EBP-4]
\r
524 MOV DWORD PTR [ESI+4], EAX
\r
525 MOV EAX,DWORD PTR [EBP-4]
\r
534 MOV EAX,DWORD PTR [EBP+12]
\r
540 MOV DWORD PTR [EBP-4], EAX
\r
543 MOV EAX,DWORD PTR [EBP+12]
\r
544 MOV DWORD PTR [EBP-4], EAX
\r
546 MOV ESI,OFFSET _lptstat
\r
548 MOV DWORD PTR [ESI+13], EAX
\r
549 PUSH OFFSET _lptstat
\r
550 PUSH DWORD PTR [EBP+16]
\r
551 PUSH DWORD PTR [EBP-4]
\r
552 CALL FWORD PTR _CopyData
\r
553 MOV ESI,DWORD PTR [EBP+8]
\r
554 MOV EAX,DWORD PTR [EBP+12]
\r
555 MOV DWORD PTR [ESI], EAX
\r
565 MOV DWORD PTR [EBP-4], EAX
\r
566 LEA EAX,DWORD PTR [EBP-16]
\r
568 CALL FWORD PTR _GetJobNum
\r
569 MOV ESI,OFFSET _lptstat
\r
570 MOV EAX,DWORD PTR [ESI]
\r
573 MOV ESI,OFFSET _lptstat
\r
574 MOV EAX,DWORD PTR [ESI]
\r
575 CMP EAX,DWORD PTR [EBP-16]
\r
583 MOV EAX,DWORD PTR [EBP+8]
\r
591 MOV EAX,DWORD PTR [EBP+12]
\r
594 MOV EAX,DWORD PTR [ESI+29]
\r
595 MOV DWORD PTR [EBP-12], EAX
\r
597 MOV EAX,DWORD PTR [ESI+21]
\r
598 MOV WORD PTR [EBP-18], AX
\r
599 MOV ESI,OFFSET _lptstat
\r
600 MOV EAX,DWORD PTR [ESI]
\r
603 MOV ESI,OFFSET _lptstat
\r
604 MOV EAX,DWORD PTR [ESI+21]
\r
605 MOVZX ECX,WORD PTR [EBP-18]
\r
611 MOV DWORD PTR [EBP-4], EAX
\r
614 MOV EAX,DWORD PTR [EBP-12]
\r
618 MOV DWORD PTR [EBP-12], EAX
\r
620 MOV ESI,OFFSET _lptstat
\r
621 MOV EAX,DWORD PTR [EBP-12]
\r
622 MOV DWORD PTR [ESI+29], EAX
\r
623 MOVZX EAX,WORD PTR [EBP-18]
\r
629 MOV ESI,OFFSET _lptstat
\r
630 MOVZX EAX,WORD PTR [EBP-18]
\r
631 MOV DWORD PTR [ESI+21], EAX
\r
632 MOV ESI,OFFSET _lptstat
\r
633 MOV EAX,DWORD PTR [ESI+21]
\r
635 MOV ESI,OFFSET _lptstat
\r
636 MOV EAX,DWORD PTR [ESI+21]
\r
639 MOV ESI,OFFSET _lptstat
\r
640 MOV EAX,DWORD PTR [ESI+21]
\r
643 MOV ESI,OFFSET _lptstat
\r
644 MOV EAX,DWORD PTR [ESI]
\r
653 MOV ESI,OFFSET _lptstat
\r
654 MOV EAX,DWORD PTR [ESI]
\r
663 CALL FWORD PTR _OutByte
\r
665 CALL FWORD PTR _MicroDelay
\r
669 CALL FWORD PTR _OutByte
\r
672 MOV DWORD PTR [EBP-4], EAX
\r
673 MOV EAX,DWORD PTR [EBP-4]
\r