--- /dev/null
+\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