]> pd.if.org Git - mmurtl/commitdiff
autocommit for file dated 1995-02-09 11:17:24
authorRichard Burgess <>
Thu, 9 Feb 1995 11:17:24 +0000 (11:17 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Mon, 17 Oct 2016 14:03:48 +0000 (14:03 +0000)
ossource/parallel.asm [new file with mode: 0644]

diff --git a/ossource/parallel.asm b/ossource/parallel.asm
new file mode 100644 (file)
index 0000000..456f59d
--- /dev/null
@@ -0,0 +1,677 @@
+\r
+.DATA\r
+EXTRN _AllocExch FWORD\r
+EXTRN _InitDevDr FWORD\r
+EXTRN _UnMaskIRQ FWORD\r
+EXTRN _MaskIRQ FWORD\r
+EXTRN _SetIRQVector FWORD\r
+EXTRN _EndOfIRQ FWORD\r
+EXTRN _SendMsg FWORD\r
+EXTRN _ISendMsg FWORD\r
+EXTRN _WaitMsg FWORD\r
+EXTRN _CheckMsg FWORD\r
+EXTRN _GetTimerTick FWORD\r
+EXTRN _Alarm FWORD\r
+EXTRN _KillAlarm FWORD\r
+EXTRN _Sleep FWORD\r
+EXTRN _MicroDelay FWORD\r
+EXTRN _OutByte FWORD\r
+EXTRN _InByte FWORD\r
+EXTRN _CopyData FWORD\r
+EXTRN _SpawnTask FWORD\r
+EXTRN _GetJobNum FWORD\r
+_xmit_timeout DD 100\r
+_control_byte DB 0\r
+PUBLIC _SendBuf DB 4096 DUP(0)\r
+_head_send DD 0h\r
+_tail_send DD 0h\r
+_cSendBuf DD 0h\r
+_sSendBuf DD 0h\r
+_burstcount DD 0h\r
+_strobecount DD 0h\r
+_DAT DW 0h\r
+_STA DW 0h\r
+_STC DW 0h\r
+_lptStk DD 200 DUP(0)\r
+_lptStkTop DD 0h\r
+_lptstat DB 61 DUP(0)\r
+_pPS DD 0h\r
+_lptdcb DB 64 DUP(0)\r
+\r
+\r
+.CODE\r
+_lpt_task:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+L_1:\r
+       MOV EAX,1\r
+       AND EAX,EAX\r
+       JZ L_2\r
+       MOVZX EAX,_STA\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       MOV _control_byte, AL\r
+       MOV ESI,OFFSET _lptstat\r
+       XOR EAX,EAX\r
+       MOV AL,_control_byte\r
+       MOV BYTE PTR [ESI+12], AL\r
+       MOV EAX,_cSendBuf\r
+       AND EAX,EAX\r
+       JZ L_3\r
+       MOV EAX,10\r
+       MOV _burstcount, EAX\r
+L_4:\r
+       MOV EAX,_cSendBuf\r
+       AND EAX,EAX\r
+       JZ L_6\r
+       MOV EAX,_burstcount\r
+       DEC _burstcount\r
+L_6:\r
+       AND EAX,EAX\r
+       JZ L_5\r
+       MOVZX EAX,_STA\r
+       PUSH EAX\r
+       CALL FWORD PTR _InByte\r
+       MOV _control_byte, AL\r
+       MOV ESI,OFFSET _lptstat\r
+       XOR EAX,EAX\r
+       MOV AL,_control_byte\r
+       MOV BYTE PTR [ESI+12], AL\r
+       XOR EAX,EAX\r
+       MOV AL,_control_byte\r
+       MOV ECX,128\r
+       AND EAX,ECX\r
+       JZ L_7\r
+       CLI\r
+       MOV EAX,_tail_send\r
+       MOV ESI,OFFSET _SendBuf\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       PUSH EAX\r
+       MOVZX EAX,_DAT\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       INC _tail_send\r
+       MOV EAX,_tail_send\r
+       CMP EAX,_sSendBuf\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_8\r
+       XOR EAX,EAX\r
+       MOV _tail_send, EAX\r
+L_8:\r
+       DEC _cSendBuf\r
+       MOV EAX,_cSendBuf\r
+       STI\r
+       PUSH 13\r
+       MOVZX EAX,_STC\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       PUSH 12\r
+       MOVZX EAX,_STC\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       JMP L_9\r
+L_7:\r
+       PUSH 2\r
+       CALL FWORD PTR _Sleep\r
+L_9:\r
+       JMP L_4\r
+L_5:\r
+       PUSH 1\r
+       CALL FWORD PTR _Sleep\r
+       JMP L_10\r
+L_3:\r
+       PUSH 30\r
+       CALL FWORD PTR _Sleep\r
+L_10:\r
+       JMP L_1\r
+L_2:\r
+       POP EBP\r
+       RETN\r
+PUBLIC _lpt_setup:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,4\r
+       MOV ESI,OFFSET _lptdcb\r
+       MOV EAX,76\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV ESI,OFFSET _lptdcb\r
+       MOV EAX,1\r
+       ADD ESI,EAX\r
+       MOV EAX,80\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV ESI,OFFSET _lptdcb\r
+       MOV EAX,2\r
+       ADD ESI,EAX\r
+       MOV EAX,84\r
+       MOV BYTE PTR [ESI], AL\r
+       MOV ESI,OFFSET _lptdcb\r
+       MOV EAX,3\r
+       MOV BYTE PTR [ESI+12], AL\r
+       MOV ESI,OFFSET _lptdcb\r
+       MOV EAX,2\r
+       MOV BYTE PTR [ESI+13], AL\r
+       MOV ESI,OFFSET _lptdcb\r
+       MOV EAX,1\r
+       MOV WORD PTR [ESI+14], AX\r
+       MOV ESI,OFFSET _lptdcb\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI+20], EAX\r
+       MOV ESI,OFFSET _lptdcb\r
+       MOV EAX,OFFSET _lptdev_op\r
+       MOV DWORD PTR [ESI+24], EAX\r
+       MOV ESI,OFFSET _lptdcb\r
+       MOV EAX,OFFSET _lptdev_init\r
+       MOV DWORD PTR [ESI+28], EAX\r
+       MOV ESI,OFFSET _lptdcb\r
+       MOV EAX,OFFSET _lptdev_stat\r
+       MOV DWORD PTR [ESI+32], EAX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,100\r
+       MOV DWORD PTR [ESI+29], EAX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,888\r
+       MOV DWORD PTR [ESI+21], EAX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,7\r
+       MOV BYTE PTR [ESI+20], AL\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,4096\r
+       MOV DWORD PTR [ESI+25], EAX\r
+       MOV EAX,4096\r
+       MOV _sSendBuf, EAX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI+21]\r
+       MOV _DAT, AX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI+21]\r
+       ADD EAX,1\r
+       MOV _STA, AX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI+21]\r
+       ADD EAX,2\r
+       MOV _STC, AX\r
+       XOR EAX,EAX\r
+       MOV _cSendBuf, EAX\r
+       XOR EAX,EAX\r
+       MOV _head_send, EAX\r
+       XOR EAX,EAX\r
+       MOV _tail_send, EAX\r
+       PUSH 8\r
+       MOVZX EAX,_STC\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       PUSH 100\r
+       CALL FWORD PTR _MicroDelay\r
+       PUSH 12\r
+       MOVZX EAX,_STC\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       PUSH OFFSET _lpt_task\r
+       PUSH 19\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       PUSH OFFSET _lptStkTop\r
+       PUSH 1\r
+       CALL FWORD PTR _SpawnTask\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       AND EAX,EAX\r
+       JZ L_11\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       JMP L_12\r
+L_11:\r
+       PUSH 3\r
+       PUSH OFFSET _lptdcb\r
+       PUSH 1\r
+       PUSH 1\r
+       CALL FWORD PTR _InitDevDr\r
+       MOV DWORD PTR [EBP-4], EAX\r
+L_12:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN\r
+_WriteByteL:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,12\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI+29]\r
+       MOV DWORD PTR [EBP-8], EAX\r
+L_13:\r
+       MOV EAX,_cSendBuf\r
+       CMP EAX,_sSendBuf\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_14\r
+       PUSH 1\r
+       CALL FWORD PTR _Sleep\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       DEC DWORD PTR [EBP-8]\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       AND EAX,EAX\r
+       JNZ L_15\r
+       MOV EAX,901\r
+       JMP L_16\r
+L_15:\r
+       JMP L_13\r
+L_14:\r
+       CLI\r
+       MOV EAX,_head_send\r
+       MOV ESI,OFFSET _SendBuf\r
+       ADD ESI,EAX\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP+8]\r
+       MOV BYTE PTR [ESI], AL\r
+       INC _head_send\r
+       MOV EAX,_head_send\r
+       CMP EAX,_sSendBuf\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_17\r
+       XOR EAX,EAX\r
+       MOV _head_send, EAX\r
+L_17:\r
+       INC _cSendBuf\r
+       MOV EAX,_cSendBuf\r
+       STI\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+L_16:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 4\r
+_WriteRecordL:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,2\r
+       XOR EAX,EAX\r
+       MOV WORD PTR [EBP-2], AX\r
+L_18:\r
+       MOVZX EAX,WORD PTR [EBP+8]\r
+       AND EAX,EAX\r
+       JZ L_20\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       AND EAX,EAX\r
+       SETZ AL\r
+       AND AL,AL\r
+L_20:\r
+       JZ L_19\r
+       MOV ESI,DWORD PTR [EBP+12]\r
+       INC DWORD PTR [EBP+12]\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       PUSH EAX\r
+       CALL _WriteByteL\r
+       MOV WORD PTR [EBP-2], AX\r
+       DEC WORD PTR [EBP+8]\r
+       MOVZX EAX,WORD PTR [EBP+8]\r
+       JMP L_18\r
+L_19:\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 8\r
+_OpenLPT:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,11\r
+       LEA EAX,DWORD PTR [EBP-8]\r
+       PUSH EAX\r
+       CALL FWORD PTR _GetJobNum\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_22\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       CMP EAX,DWORD PTR [ESI]\r
+       SETNE AL\r
+       AND AL,AL\r
+       JZ L_23\r
+       MOV EAX,909\r
+       JMP L_24\r
+L_23:\r
+       XOR EAX,EAX\r
+       JMP L_24\r
+L_25:\r
+L_22:\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       MOV DWORD PTR [ESI], EAX\r
+       MOV EAX,_cSendBuf\r
+       AND EAX,EAX\r
+       JNZ L_26\r
+       XOR EAX,EAX\r
+       MOV _cSendBuf, EAX\r
+       XOR EAX,EAX\r
+       MOV _head_send, EAX\r
+       XOR EAX,EAX\r
+       MOV _tail_send, EAX\r
+L_26:\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI+21]\r
+       MOV WORD PTR [EBP-10], AX\r
+       MOVZX EAX,WORD PTR [EBP-10]\r
+       MOV _DAT, AX\r
+       MOVZX EAX,WORD PTR [EBP-10]\r
+       MOV ECX,1\r
+       ADD EAX,ECX\r
+       MOV _STA, AX\r
+       MOVZX EAX,WORD PTR [EBP-10]\r
+       MOV ECX,2\r
+       ADD EAX,ECX\r
+       MOV _STC, AX\r
+       XOR EAX,EAX\r
+L_24:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN\r
+_CloseLPT:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,8\r
+       LEA EAX,DWORD PTR [EBP-8]\r
+       PUSH EAX\r
+       CALL FWORD PTR _GetJobNum\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_27\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       CMP EAX,DWORD PTR [ESI]\r
+       SETNE AL\r
+       AND AL,AL\r
+       JZ L_28\r
+       MOV EAX,912\r
+       JMP L_29\r
+L_28:\r
+       XOR EAX,EAX\r
+       JMP L_29\r
+L_30:\r
+       JMP L_31\r
+L_27:\r
+       MOV EAX,907\r
+       JMP L_29\r
+L_31:\r
+       MOVSX EAX,WORD PTR [EBP+8]\r
+       AND EAX,EAX\r
+       JZ L_32\r
+       XOR EAX,EAX\r
+       MOV _cSendBuf, EAX\r
+       XOR EAX,EAX\r
+       MOV _head_send, EAX\r
+       XOR EAX,EAX\r
+       MOV _tail_send, EAX\r
+L_32:\r
+       MOV ESI,OFFSET _lptstat\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [ESI], EAX\r
+       XOR EAX,EAX\r
+L_29:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 4\r
+_lptdev_op:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,9\r
+       LEA EAX,DWORD PTR [EBP-8]\r
+       PUSH EAX\r
+       CALL FWORD PTR _GetJobNum\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       SETZ AL\r
+       AND AL,AL\r
+       JZ L_33\r
+       MOV EAX,DWORD PTR [EBP+20]\r
+       CMP EAX,10\r
+       SETNE AL\r
+       AND AL,AL\r
+L_33:\r
+       JZ L_34\r
+       MOV EAX,907\r
+       JMP L_35\r
+L_34:\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_36\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI]\r
+       CMP EAX,DWORD PTR [EBP-8]\r
+       SETNE AL\r
+       AND AL,AL\r
+       JZ L_37\r
+       MOV EAX,DWORD PTR [EBP-8]\r
+       CMP EAX,1\r
+       SETNE AL\r
+       AND AL,AL\r
+L_37:\r
+       JZ L_38\r
+       MOV EAX,912\r
+       JMP L_35\r
+L_38:\r
+L_36:\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV EAX,DWORD PTR [EBP+20]\r
+       JMP L_40\r
+L_41:\r
+       JMP L_39\r
+L_42:\r
+       MOV ESI,DWORD PTR [EBP+8]\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI]\r
+       PUSH EAX\r
+       CALL _WriteByteL\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_39\r
+L_43:\r
+       PUSH DWORD PTR [EBP+8]\r
+       PUSH DWORD PTR [EBP+12]\r
+       CALL _WriteRecordL\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_39\r
+L_44:\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [EBP+16]\r
+       MOV DWORD PTR [ESI+29], EAX\r
+       JMP L_39\r
+L_45:\r
+       CALL _OpenLPT\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_39\r
+L_46:\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       CALL _CloseLPT\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_39\r
+L_47:\r
+       PUSH 1\r
+       CALL _CloseLPT\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_39\r
+L_48:\r
+       MOV EAX,503\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_39\r
+L_40:\r
+       CMP EAX,12\r
+       JE L_47\r
+       CMP EAX,11\r
+       JE L_46\r
+       CMP EAX,10\r
+       JE L_45\r
+       CMP EAX,14\r
+       JE L_44\r
+       CMP EAX,2\r
+       JE L_43\r
+       CMP EAX,32\r
+       JE L_42\r
+       CMP EAX,0\r
+       JE L_41\r
+       JMP L_48\r
+L_39:\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+       MOV DWORD PTR [ESI+4], EAX\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+L_35:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 20\r
+_lptdev_stat:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,4\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       CMP EAX,64\r
+       SETA AL\r
+       AND AL,AL\r
+       JZ L_49\r
+       MOV EAX,64\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       JMP L_50\r
+L_49:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       MOV DWORD PTR [EBP-4], EAX\r
+L_50:\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,_cSendBuf\r
+       MOV DWORD PTR [ESI+13], EAX\r
+       PUSH OFFSET _lptstat\r
+       PUSH DWORD PTR [EBP+16]\r
+       PUSH DWORD PTR [EBP-4]\r
+       CALL FWORD PTR _CopyData\r
+       MOV ESI,DWORD PTR [EBP+8]\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       MOV DWORD PTR [ESI], EAX\r
+       XOR EAX,EAX\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 16\r
+_lptdev_init:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,19\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       LEA EAX,DWORD PTR [EBP-16]\r
+       PUSH EAX\r
+       CALL FWORD PTR _GetJobNum\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_52\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI]\r
+       CMP EAX,DWORD PTR [EBP-16]\r
+       SETNE AL\r
+       AND AL,AL\r
+L_52:\r
+       JZ L_53\r
+       MOV EAX,912\r
+       JMP L_54\r
+L_53:\r
+       MOV EAX,DWORD PTR [EBP+8]\r
+       CMP EAX,40\r
+       SETB AL\r
+       AND AL,AL\r
+       JZ L_55\r
+       MOV EAX,927\r
+       JMP L_54\r
+L_55:\r
+       MOV EAX,DWORD PTR [EBP+12]\r
+       MOV _pPS, EAX\r
+       MOV ESI,_pPS\r
+       MOV EAX,DWORD PTR [ESI+29]\r
+       MOV DWORD PTR [EBP-12], EAX\r
+       MOV ESI,_pPS\r
+       MOV EAX,DWORD PTR [ESI+21]\r
+       MOV WORD PTR [EBP-18], AX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_56\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI+21]\r
+       MOVZX ECX,WORD PTR [EBP-18]\r
+       CMP EAX,ECX\r
+       SETNE AL\r
+       AND AL,AL\r
+       JZ L_57\r
+       MOV EAX,909\r
+       MOV DWORD PTR [EBP-4], EAX\r
+L_57:\r
+L_56:\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       AND EAX,EAX\r
+       JNZ L_58\r
+       MOV EAX,100\r
+       MOV DWORD PTR [EBP-12], EAX\r
+L_58:\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [EBP-12]\r
+       MOV DWORD PTR [ESI+29], EAX\r
+       MOVZX EAX,WORD PTR [EBP-18]\r
+       AND EAX,EAX\r
+       JNZ L_59\r
+       MOV EAX,924\r
+       JMP L_54\r
+L_59:\r
+       MOV ESI,OFFSET _lptstat\r
+       MOVZX EAX,WORD PTR [EBP-18]\r
+       MOV DWORD PTR [ESI+21], EAX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI+21]\r
+       MOV _DAT, AX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI+21]\r
+       ADD EAX,1\r
+       MOV _STA, AX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI+21]\r
+       ADD EAX,2\r
+       MOV _STC, AX\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       JZ L_60\r
+       MOV EAX,_cSendBuf\r
+       AND EAX,EAX\r
+       SETZ AL\r
+       AND AL,AL\r
+L_60:\r
+       JNZ L_61\r
+       MOV ESI,OFFSET _lptstat\r
+       MOV EAX,DWORD PTR [ESI]\r
+       AND EAX,EAX\r
+       SETZ AL\r
+       AND AL,AL\r
+L_61:\r
+       JZ L_62\r
+       PUSH 8\r
+       MOVZX EAX,_STC\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+       PUSH 100\r
+       CALL FWORD PTR _MicroDelay\r
+       PUSH 12\r
+       MOVZX EAX,_STC\r
+       PUSH EAX\r
+       CALL FWORD PTR _OutByte\r
+L_62:\r
+       XOR EAX,EAX\r
+       MOV DWORD PTR [EBP-4], EAX\r
+       MOV EAX,DWORD PTR [EBP-4]\r
+L_54:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN 12\r