From: Richard Burgess <> Date: Thu, 9 Feb 1995 11:17:22 +0000 (+0000) Subject: autocommit for file dated 1995-02-09 11:17:22 X-Git-Url: https://pd.if.org/git/?p=mmurtl;a=commitdiff_plain;h=3a1a25804a9ec7280cb5820ddd2e2225720d62a8 autocommit for file dated 1995-02-09 11:17:22 --- diff --git a/ossource/rs232.asm b/ossource/rs232.asm new file mode 100644 index 0000000..7fdd40e --- /dev/null +++ b/ossource/rs232.asm @@ -0,0 +1,2192 @@ + +.DATA +EXTRN _AllocExch FWORD +EXTRN _InitDevDr FWORD +EXTRN _AllocOSPage FWORD +EXTRN _DeAllocPage FWORD +EXTRN _UnMaskIRQ FWORD +EXTRN _MaskIRQ FWORD +EXTRN _SetIRQVector FWORD +EXTRN _EndOfIRQ FWORD +EXTRN _SendMsg FWORD +EXTRN _ISendMsg FWORD +EXTRN _WaitMsg FWORD +EXTRN _CheckMsg FWORD +EXTRN _GetTimerTick FWORD +EXTRN _Alarm FWORD +EXTRN _KillAlarm FWORD +EXTRN _Sleep FWORD +EXTRN _MicroDelay FWORD +EXTRN _OutByte FWORD +EXTRN _InByte FWORD +EXTRN _CopyData FWORD +EXTRN _GetJobNum FWORD +_recv_timeout DD 1,0,0 +_xmit_timeout DD 10,0,0 +_control_byte DB 0,0,0 +_f16550 DB 2 DUP(0) +_stat_byte DB 2 DUP(0) +_mstat_byte DB 2 DUP(0) +_int_id DB 2 DUP(0) +_fExpectInt DB 2 DUP(0) +_recv_error DD 2 DUP(0) +_pSendBuf DD 2 DUP(0) +_head_send DD 2 DUP(0) +_tail_send DD 2 DUP(0) +_cSendBuf DD 2 DUP(0) +_sSendBuf DD 2 DUP(0) +_pRecvBuf DD 2 DUP(0) +_head_recv DD 2 DUP(0) +_tail_recv DD 2 DUP(0) +_cRecvBuf DD 2 DUP(0) +_sRecvBuf DD 2 DUP(0) +_THR DW 2 DUP(0) +_IER DW 2 DUP(0) +_IIR DW 2 DUP(0) +_FCR DW 2 DUP(0) +_LCR DW 2 DUP(0) +_MCR DW 2 DUP(0) +_LSR DW 2 DUP(0) +_MSR DW 2 DUP(0) +_DLAB_LO DW 2 DUP(0) +_DLAB_HI DW 2 DUP(0) +_comstat DB 128 DUP(0) +_pCS DD 0h +_comdcb DB 128 DUP(0) + + +.CODE +PUBLIC _coms_setup: + PUSH EBP + MOV EBP,ESP + SUB ESP,4 + MOV ESI,OFFSET _comdcb + MOV EAX,67 + MOV BYTE PTR [ESI], AL + MOV ESI,OFFSET _comdcb + MOV EAX,1 + ADD ESI,EAX + MOV EAX,79 + MOV BYTE PTR [ESI], AL + MOV ESI,OFFSET _comdcb + MOV EAX,2 + ADD ESI,EAX + MOV EAX,77 + MOV BYTE PTR [ESI], AL + MOV ESI,OFFSET _comdcb + MOV EAX,3 + ADD ESI,EAX + MOV EAX,49 + MOV BYTE PTR [ESI], AL + MOV ESI,OFFSET _comdcb + MOV EAX,4 + MOV BYTE PTR [ESI+12], AL + MOV ESI,OFFSET _comdcb + MOV EAX,2 + MOV BYTE PTR [ESI+13], AL + MOV ESI,OFFSET _comdcb + MOV EAX,1 + MOV WORD PTR [ESI+14], AX + MOV ESI,OFFSET _comdcb + XOR EAX,EAX + MOV DWORD PTR [ESI+20], EAX + MOV ESI,OFFSET _comdcb + MOV EAX,OFFSET _comdev_op + MOV DWORD PTR [ESI+24], EAX + MOV ESI,OFFSET _comdcb + MOV EAX,OFFSET _comdev_init + MOV DWORD PTR [ESI+28], EAX + MOV ESI,OFFSET _comdcb + MOV EAX,OFFSET _comdev_stat + MOV DWORD PTR [ESI+32], EAX + MOV EAX,64 + MOV ESI,OFFSET _comdcb + ADD ESI,EAX + MOV EAX,67 + MOV BYTE PTR [ESI], AL + MOV EAX,64 + MOV ESI,OFFSET _comdcb + ADD ESI,EAX + MOV EAX,1 + ADD ESI,EAX + MOV EAX,79 + MOV BYTE PTR [ESI], AL + MOV EAX,64 + MOV ESI,OFFSET _comdcb + ADD ESI,EAX + MOV EAX,2 + ADD ESI,EAX + MOV EAX,77 + MOV BYTE PTR [ESI], AL + MOV EAX,64 + MOV ESI,OFFSET _comdcb + ADD ESI,EAX + MOV EAX,3 + ADD ESI,EAX + MOV EAX,50 + MOV BYTE PTR [ESI], AL + MOV EAX,64 + MOV ESI,OFFSET _comdcb + ADD ESI,EAX + MOV EAX,4 + MOV BYTE PTR [ESI+12], AL + MOV EAX,64 + MOV ESI,OFFSET _comdcb + ADD ESI,EAX + MOV EAX,2 + MOV BYTE PTR [ESI+13], AL + MOV EAX,64 + MOV ESI,OFFSET _comdcb + ADD ESI,EAX + MOV EAX,1 + MOV WORD PTR [ESI+14], AX + MOV EAX,64 + MOV ESI,OFFSET _comdcb + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI+20], EAX + MOV EAX,64 + MOV ESI,OFFSET _comdcb + ADD ESI,EAX + MOV EAX,OFFSET _comdev_op + MOV DWORD PTR [ESI+24], EAX + MOV EAX,64 + MOV ESI,OFFSET _comdcb + ADD ESI,EAX + MOV EAX,OFFSET _comdev_init + MOV DWORD PTR [ESI+28], EAX + MOV EAX,64 + MOV ESI,OFFSET _comdcb + ADD ESI,EAX + MOV EAX,OFFSET _comdev_stat + MOV DWORD PTR [ESI+32], EAX + MOV ESI,OFFSET _comstat + MOV EAX,9600 + MOV DWORD PTR [ESI+12], EAX + MOV ESI,OFFSET _comstat + XOR EAX,EAX + MOV BYTE PTR [ESI+16], AL + MOV ESI,OFFSET _comstat + MOV EAX,8 + MOV BYTE PTR [ESI+17], AL + MOV ESI,OFFSET _comstat + MOV EAX,1 + MOV BYTE PTR [ESI+18], AL + MOV ESI,OFFSET _comstat + MOV EAX,100 + MOV DWORD PTR [ESI+32], EAX + MOV ESI,OFFSET _comstat + MOV EAX,2 + MOV DWORD PTR [ESI+36], EAX + MOV ESI,OFFSET _comstat + MOV EAX,1016 + MOV DWORD PTR [ESI+20], EAX + MOV ESI,OFFSET _comstat + MOV EAX,4 + MOV BYTE PTR [ESI+19], AL + MOV ESI,OFFSET _comstat + MOV EAX,4096 + MOV DWORD PTR [ESI+24], EAX + MOV ESI,OFFSET _comstat + MOV EAX,4096 + MOV DWORD PTR [ESI+28], EAX + MOV ESI,OFFSET _sSendBuf + MOV EAX,4096 + MOV DWORD PTR [ESI], EAX + MOV ESI,OFFSET _sRecvBuf + MOV EAX,4096 + MOV DWORD PTR [ESI], EAX + MOV EAX,64 + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,9600 + MOV DWORD PTR [ESI+12], EAX + MOV EAX,64 + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV BYTE PTR [ESI+16], AL + MOV EAX,64 + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,8 + MOV BYTE PTR [ESI+17], AL + MOV EAX,64 + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,1 + MOV BYTE PTR [ESI+18], AL + MOV EAX,64 + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,100 + MOV DWORD PTR [ESI+32], EAX + MOV EAX,64 + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,2 + MOV DWORD PTR [ESI+36], EAX + MOV EAX,64 + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,760 + MOV DWORD PTR [ESI+20], EAX + MOV EAX,64 + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,3 + MOV BYTE PTR [ESI+19], AL + MOV EAX,64 + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,4096 + MOV DWORD PTR [ESI+24], EAX + MOV EAX,64 + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,4096 + MOV DWORD PTR [ESI+28], EAX + MOV EAX,4 + MOV ESI,OFFSET _sSendBuf + ADD ESI,EAX + MOV EAX,4096 + MOV DWORD PTR [ESI], EAX + MOV EAX,4 + MOV ESI,OFFSET _sRecvBuf + ADD ESI,EAX + MOV EAX,4096 + MOV DWORD PTR [ESI], EAX + PUSH 4 + CALL FWORD PTR _MaskIRQ + PUSH 3 + CALL FWORD PTR _MaskIRQ + PUSH 4 + PUSH OFFSET _comISR0 + CALL FWORD PTR _SetIRQVector + PUSH 3 + PUSH OFFSET _comISR1 + CALL FWORD PTR _SetIRQVector + PUSH 5 + PUSH OFFSET _comdcb + PUSH 2 + PUSH 1 + CALL FWORD PTR _InitDevDr + MOV DWORD PTR [EBP-4], EAX + MOV ESP,EBP + POP EBP + RETN +_handleISR: + PUSH EBP + MOV EBP,ESP + SUB ESP,8 + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _pRecvBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + MOV DWORD PTR [EBP-4], EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _pSendBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + MOV DWORD PTR [EBP-8], EAX +L_2: + MOV EAX,1 + AND EAX,EAX + JZ L_3 + MOV EAX,DWORD PTR [EBP+8] + MOV ESI,OFFSET _int_id + ADD ESI,EAX + MOV EBX,ESI + PUSH EBX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _IIR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _InByte + POP EDX + MOV BYTE PTR [EDX], AL + MOV EAX,DWORD PTR [EBP+8] + MOV ESI,OFFSET _int_id + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + JMP L_5 +L_6: + MOV EAX,DWORD PTR [EBP+8] + MOV ESI,OFFSET _stat_byte + ADD ESI,EAX + MOV EBX,ESI + PUSH EBX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _LSR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _InByte + POP EDX + MOV BYTE PTR [EDX], AL + JMP L_4 +L_7: + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _cRecvBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV EBX,ESI + MOV ESI,OFFSET _sRecvBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [EBX] + CMP EAX,DWORD PTR [ESI] + SETE AL + AND AL,AL + JZ L_8 + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _recv_error + ADD ESI,EAX + MOV EAX,805 + MOV DWORD PTR [ESI], EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _THR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _InByte + JMP L_9 +L_8: + CLI + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _head_recv + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + MOV ESI,DWORD PTR [EBP-4] + ADD ESI,EAX + MOV EBX,ESI + PUSH EBX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _THR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _InByte + POP EDX + MOV BYTE PTR [EDX], AL + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _cRecvBuf + ADD ESI,EAX + INC DWORD PTR [ESI] + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _head_recv + ADD ESI,EAX + INC DWORD PTR [ESI] + MOV EAX,DWORD PTR [ESI] + CMP EAX,4096 + SETE AL + AND AL,AL + JZ L_10 + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _head_recv + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX + STI +L_10: + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _recv_error + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX +L_9: + JMP L_4 +L_11: + CLI + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _cSendBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + AND EAX,EAX + JZ L_12 + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _tail_send + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + MOV ESI,DWORD PTR [EBP-8] + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + PUSH EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _THR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _tail_send + ADD ESI,EAX + INC DWORD PTR [ESI] + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV EBX,ESI + MOV ESI,OFFSET _sSendBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [EBX] + CMP EAX,DWORD PTR [ESI] + SETE AL + AND AL,AL + JZ L_13 + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _tail_send + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX +L_13: + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _cSendBuf + ADD ESI,EAX + DEC DWORD PTR [ESI] + MOV EAX,DWORD PTR [EBP+8] + MOV ESI,OFFSET _fExpectInt + ADD ESI,EAX + MOV EAX,1 + MOV BYTE PTR [ESI], AL + JMP L_14 +L_12: + MOV EAX,DWORD PTR [EBP+8] + MOV ESI,OFFSET _fExpectInt + ADD ESI,EAX + XOR EAX,EAX + MOV BYTE PTR [ESI], AL +L_14: + STI + JMP L_4 +L_15: + MOV EAX,DWORD PTR [EBP+8] + MOV ESI,OFFSET _mstat_byte + ADD ESI,EAX + MOV EBX,ESI + PUSH EBX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _MSR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _InByte + POP EDX + MOV BYTE PTR [EDX], AL + JMP L_4 +L_16: + MOV EAX,DWORD PTR [EBP+8] + MOV ESI,OFFSET _stat_byte + ADD ESI,EAX + MOV EBX,ESI + PUSH EBX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _LSR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _InByte + POP EDX + MOV BYTE PTR [EDX], AL +L_17: + JMP L_18 +L_5: + CMP EAX,1 + JE L_16 + CMP EAX,0 + JE L_15 + CMP EAX,2 + JE L_11 + CMP EAX,4 + JE L_7 + CMP EAX,6 + JE L_6 + JMP L_17 +L_4: + JMP L_2 +L_3: +L_18: + MOV ESP,EBP + POP EBP + RETN 4 +_comISR0: + PUSHAD + STI + XOR EAX,EAX + PUSH EAX + CALL _handleISR + PUSH 4 + CALL FWORD PTR _EndOfIRQ + POPAD + IRETD +_comISR1: + PUSHAD + STI + PUSH 1 + CALL _handleISR + PUSH 3 + CALL FWORD PTR _EndOfIRQ + POPAD + IRETD +_ReadByteC: + PUSH EBP + MOV EBP,ESP + SUB ESP,8 + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _pRecvBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + MOV DWORD PTR [EBP-8], EAX + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _recv_error + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + AND EAX,EAX + JZ L_21 + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _recv_error + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + JMP L_22 +L_21: + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _cRecvBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + AND EAX,EAX + JZ L_23 + MOV ESI,DWORD PTR [EBP+8] + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV EBX,ESI + MOV ESI,OFFSET _tail_recv + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + MOV ESI,DWORD PTR [EBP-8] + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + MOV BYTE PTR [EBX], AL + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _tail_recv + ADD ESI,EAX + INC DWORD PTR [ESI] + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV EBX,ESI + MOV ESI,OFFSET _sRecvBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [EBX] + CMP EAX,DWORD PTR [ESI] + SETE AL + AND AL,AL + JZ L_24 + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _tail_recv + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX +L_24: + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _cRecvBuf + ADD ESI,EAX + DEC DWORD PTR [ESI] + MOV EAX,DWORD PTR [ESI] + XOR EAX,EAX + JMP L_22 +L_23: + MOV EAX,DWORD PTR [EBP+12] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI+36] + MOV DWORD PTR [EBP-4], EAX +L_25: + MOV EAX,DWORD PTR [EBP-4] + DEC DWORD PTR [EBP-4] + AND EAX,EAX + JZ L_26 + PUSH 1 + CALL FWORD PTR _Sleep + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _cRecvBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + AND EAX,EAX + JZ L_27 + MOV ESI,DWORD PTR [EBP+8] + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV EBX,ESI + MOV ESI,OFFSET _tail_recv + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + MOV ESI,DWORD PTR [EBP-8] + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + MOV BYTE PTR [EBX], AL + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _tail_recv + ADD ESI,EAX + INC DWORD PTR [ESI] + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV EBX,ESI + MOV ESI,OFFSET _sRecvBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [EBX] + CMP EAX,DWORD PTR [ESI] + SETE AL + AND AL,AL + JZ L_28 + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _tail_recv + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX +L_28: + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _cRecvBuf + ADD ESI,EAX + DEC DWORD PTR [ESI] + MOV EAX,DWORD PTR [ESI] + XOR EAX,EAX + JMP L_22 +L_27: + JMP L_25 +L_26: + MOV EAX,800 +L_22: + MOV ESP,EBP + POP EBP + RETN 8 +_ReadRecordC: + PUSH EBP + MOV EBP,ESP + SUB ESP,4 + XOR EAX,EAX + MOV WORD PTR [EBP-2], AX + XOR EAX,EAX + MOV WORD PTR [EBP-4], AX +L_29: + MOVSX EAX,WORD PTR [EBP-4] + MOVZX ECX,WORD PTR [EBP+12] + CMP EAX,ECX + SETB AL + AND AL,AL + JZ L_31 + MOVSX EAX,WORD PTR [EBP-2] + AND EAX,EAX + SETZ AL + AND AL,AL +L_31: + JZ L_30 + PUSH DWORD PTR [EBP+20] + MOV ESI,DWORD PTR [EBP+16] + INC DWORD PTR [EBP+16] + PUSH DWORD PTR [ESI] + CALL _ReadByteC + MOV WORD PTR [EBP-2], AX + MOVSX EAX,WORD PTR [EBP-2] + AND EAX,EAX + JNZ L_32 + INC WORD PTR [EBP-4] + MOVSX EAX,WORD PTR [EBP-4] +L_32: + JMP L_29 +L_30: + MOV ESI,DWORD PTR [EBP+8] + MOVSX EAX,WORD PTR [EBP-4] + MOV WORD PTR [ESI], AX + MOVSX EAX,WORD PTR [EBP-2] + MOV ESP,EBP + POP EBP + RETN 16 +_WriteByteC: + PUSH EBP + MOV EBP,ESP + SUB ESP,12 + XOR EAX,EAX + MOV DWORD PTR [EBP-4], EAX + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _pSendBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + MOV DWORD PTR [EBP-12], EAX + MOV EAX,DWORD PTR [EBP+12] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI+32] + MOV DWORD PTR [EBP-8], EAX +L_34: + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _cSendBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV EBX,ESI + MOV ESI,OFFSET _sSendBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [EBX] + CMP EAX,DWORD PTR [ESI] + SETE AL + AND AL,AL + JZ L_35 + PUSH 1 + CALL FWORD PTR _Sleep + MOV EAX,DWORD PTR [EBP-8] + DEC DWORD PTR [EBP-8] + MOV EAX,DWORD PTR [EBP-8] + AND EAX,EAX + JNZ L_36 + MOV EAX,801 + JMP L_37 +L_36: + JMP L_34 +L_35: + CLI + MOV EAX,DWORD PTR [EBP+12] + MOV ESI,OFFSET _fExpectInt + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + AND EAX,EAX + JNZ L_38 + XOR EAX,EAX + MOV AL,BYTE PTR [EBP+8] + PUSH EAX + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,1 + MOV ESI,OFFSET _THR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + MOV EAX,DWORD PTR [EBP+12] + MOV ESI,OFFSET _fExpectInt + ADD ESI,EAX + MOV EAX,1 + MOV BYTE PTR [ESI], AL + JMP L_39 +L_38: + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _head_send + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + MOV ESI,DWORD PTR [EBP-12] + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [EBP+8] + MOV BYTE PTR [ESI], AL + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _head_send + ADD ESI,EAX + INC DWORD PTR [ESI] + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV EBX,ESI + MOV ESI,OFFSET _sSendBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [EBX] + CMP EAX,DWORD PTR [ESI] + SETE AL + AND AL,AL + JZ L_40 + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _head_send + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX +L_40: + MOV EAX,DWORD PTR [EBP+12] + SHL EAX,2 + MOV ESI,OFFSET _cSendBuf + ADD ESI,EAX + INC DWORD PTR [ESI] + MOV EAX,DWORD PTR [ESI] +L_39: + STI + MOV EAX,DWORD PTR [EBP-4] +L_37: + MOV ESP,EBP + POP EBP + RETN 8 +_WriteRecordC: + PUSH EBP + MOV EBP,ESP + SUB ESP,2 + XOR EAX,EAX + MOV WORD PTR [EBP-2], AX +L_41: + MOVZX EAX,WORD PTR [EBP+8] + AND EAX,EAX + JZ L_43 + MOVSX EAX,WORD PTR [EBP-2] + AND EAX,EAX + SETZ AL + AND AL,AL +L_43: + JZ L_42 + PUSH DWORD PTR [EBP+16] + MOV ESI,DWORD PTR [EBP+12] + INC DWORD PTR [EBP+12] + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + PUSH EAX + CALL _WriteByteC + MOV WORD PTR [EBP-2], AX + DEC WORD PTR [EBP+8] + MOVZX EAX,WORD PTR [EBP+8] + JMP L_41 +L_42: + MOVSX EAX,WORD PTR [EBP-2] + MOV ESP,EBP + POP EBP + RETN 12 +_DiscardRecvC: + PUSH EBP + MOV EBP,ESP + SUB ESP,9 + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI+36] + MOV DWORD PTR [EBP-4], EAX + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,1 + MOV DWORD PTR [ESI+36], EAX + XOR EAX,EAX + MOV DWORD PTR [EBP-8], EAX +L_45: + MOV EAX,DWORD PTR [EBP-8] + AND EAX,EAX + JNZ L_46 + PUSH DWORD PTR [EBP+8] + LEA EAX,BYTE PTR [EBP-9] + PUSH EAX + CALL _ReadByteC + MOV DWORD PTR [EBP-8], EAX + JMP L_45 +L_46: + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP-4] + MOV DWORD PTR [ESI+36], EAX + XOR EAX,EAX + MOV ESP,EBP + POP EBP + RETN 4 +_SetParams: + PUSH EBP + MOV EBP,ESP + SUB ESP,13 + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI+16] + MOV BYTE PTR [EBP-10], AL + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI+17] + MOV BYTE PTR [EBP-11], AL + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI+18] + MOV BYTE PTR [EBP-12], AL + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI+12] + MOV DWORD PTR [EBP-8], EAX + MOV EAX,115200 + MOV ECX,DWORD PTR [EBP-8] + XOR EDX,EDX + DIV ECX + MOV DWORD PTR [EBP-4], EAX + CLI + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _LCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _InByte + MOV BYTE PTR [EBP-9], AL + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-9] + MOV ECX,128 + OR EAX,ECX + PUSH EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _LCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + MOV EAX,DWORD PTR [EBP-4] + AND EAX,255 + PUSH EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _DLAB_LO + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + MOV EAX,DWORD PTR [EBP-4] + MOV ECX,8 + SHR EAX,CL + AND EAX,255 + PUSH EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _DLAB_HI + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-9] + PUSH EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _LCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + STI + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-11] + MOV ECX,5 + SUB EAX,ECX + MOV BYTE PTR [EBP-13], AL + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-12] + CMP EAX,1 + SETE AL + AND AL,AL + JZ SHORT L_49 + XOR EAX,EAX + JMP SHORT L_48 +L_49: + MOV EAX,4 +L_48: + XOR ECX,ECX + MOV CL,BYTE PTR [EBP-13] + OR EAX,ECX + MOV BYTE PTR [EBP-13], AL + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-10] + JMP L_51 +L_52: + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-13] + XOR ECX,ECX + OR EAX,ECX + MOV BYTE PTR [EBP-13], AL + JMP L_50 +L_53: + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-13] + MOV ECX,8 + OR EAX,ECX + MOV BYTE PTR [EBP-13], AL + JMP L_50 +L_54: + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-13] + MOV ECX,24 + OR EAX,ECX + MOV BYTE PTR [EBP-13], AL + JMP L_50 +L_51: + CMP EAX,1 + JE L_54 + CMP EAX,2 + JE L_53 + CMP EAX,0 + JE L_52 +L_50: + CLI + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-13] + PUSH EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _LCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + STI + XOR EAX,EAX +L_55: + MOV ESP,EBP + POP EBP + RETN 4 +_OpenCommC: + PUSH EBP + MOV EBP,ESP + SUB ESP,7 + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + AND EAX,EAX + JZ L_56 + MOV EAX,809 + JMP L_57 +L_56: + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + PUSH ESI + CALL FWORD PTR _GetJobNum + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI+24] + MOV ECX,4096 + XOR EDX,EDX + DIV ECX + PUSH EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _pSendBuf + ADD ESI,EAX + PUSH ESI + CALL FWORD PTR _AllocOSPage + MOV DWORD PTR [EBP-4], EAX + MOV EAX,DWORD PTR [EBP-4] + AND EAX,EAX + JNZ L_58 + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI+28] + MOV ECX,4096 + XOR EDX,EDX + DIV ECX + PUSH EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _pRecvBuf + ADD ESI,EAX + PUSH ESI + CALL FWORD PTR _AllocOSPage + MOV DWORD PTR [EBP-4], EAX + MOV EAX,DWORD PTR [EBP-4] + AND EAX,EAX + JZ L_59 + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _pSendBuf + ADD ESI,EAX + PUSH DWORD PTR [ESI] + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI+24] + MOV ECX,4096 + XOR EDX,EDX + DIV ECX + PUSH EAX + CALL FWORD PTR _DeAllocPage +L_59: +L_58: + MOV EAX,DWORD PTR [EBP-4] + AND EAX,EAX + JZ L_60 + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX + MOV EAX,DWORD PTR [EBP-4] + JMP L_57 +L_60: + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI+20] + MOV WORD PTR [EBP-6], AX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _cSendBuf + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _head_send + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _tail_send + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _cRecvBuf + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _head_recv + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _tail_recv + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _recv_error + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _THR + ADD ESI,EAX + MOVZX EAX,WORD PTR [EBP-6] + MOV WORD PTR [ESI], AX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _IER + ADD ESI,EAX + MOVZX EAX,WORD PTR [EBP-6] + MOV ECX,1 + ADD EAX,ECX + MOV WORD PTR [ESI], AX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _IIR + ADD ESI,EAX + MOVZX EAX,WORD PTR [EBP-6] + MOV ECX,2 + ADD EAX,ECX + MOV WORD PTR [ESI], AX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _FCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [EBP-6] + MOV ECX,2 + ADD EAX,ECX + MOV WORD PTR [ESI], AX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _LCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [EBP-6] + MOV ECX,3 + ADD EAX,ECX + MOV WORD PTR [ESI], AX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _MCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [EBP-6] + MOV ECX,4 + ADD EAX,ECX + MOV WORD PTR [ESI], AX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _LSR + ADD ESI,EAX + MOVZX EAX,WORD PTR [EBP-6] + MOV ECX,5 + ADD EAX,ECX + MOV WORD PTR [ESI], AX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _MSR + ADD ESI,EAX + MOVZX EAX,WORD PTR [EBP-6] + MOV ECX,6 + ADD EAX,ECX + MOV WORD PTR [ESI], AX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _DLAB_HI + ADD ESI,EAX + MOVZX EAX,WORD PTR [EBP-6] + MOV ECX,1 + ADD EAX,ECX + MOV WORD PTR [ESI], AX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _DLAB_LO + ADD ESI,EAX + MOVZX EAX,WORD PTR [EBP-6] + MOV WORD PTR [ESI], AX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _THR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _InByte + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _LSR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _InByte + CLI + MOV EAX,DWORD PTR [EBP+8] + MOV ESI,OFFSET _control_byte + ADD ESI,EAX + MOV EAX,11 + MOV BYTE PTR [ESI], AL + MOV EAX,DWORD PTR [EBP+8] + MOV ESI,OFFSET _control_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + PUSH EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _MCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + PUSH 15 + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _IER + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + PUSH 3 + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _FCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _IIR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _InByte + MOV BYTE PTR [EBP-7], AL + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-7] + MOV ECX,192 + AND EAX,ECX + JZ L_61 + MOV EAX,DWORD PTR [EBP+8] + MOV ESI,OFFSET _f16550 + ADD ESI,EAX + MOV EAX,1 + MOV BYTE PTR [ESI], AL + JMP L_62 +L_61: + MOV EAX,DWORD PTR [EBP+8] + MOV ESI,OFFSET _f16550 + ADD ESI,EAX + XOR EAX,EAX + MOV BYTE PTR [ESI], AL +L_62: + STI + PUSH DWORD PTR [EBP+8] + CALL _SetParams + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI+19] + PUSH EAX + CALL FWORD PTR _UnMaskIRQ + XOR EAX,EAX +L_57: + MOV ESP,EBP + POP EBP + RETN 4 +_CloseCommC: + PUSH EBP + MOV EBP,ESP + SUB ESP,4 + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI+19] + PUSH EAX + CALL FWORD PTR _MaskIRQ + XOR EAX,EAX + PUSH EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _MCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + XOR EAX,EAX + PUSH EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,1 + MOV ESI,OFFSET _IER + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _pSendBuf + ADD ESI,EAX + PUSH DWORD PTR [ESI] + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI+24] + MOV ECX,4096 + XOR EDX,EDX + DIV ECX + PUSH EAX + CALL FWORD PTR _DeAllocPage + MOV DWORD PTR [EBP-4], EAX + MOV EAX,DWORD PTR [EBP+8] + SHL EAX,2 + MOV ESI,OFFSET _pRecvBuf + ADD ESI,EAX + PUSH DWORD PTR [ESI] + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI+28] + MOV ECX,4096 + XOR EDX,EDX + DIV ECX + PUSH EAX + CALL FWORD PTR _DeAllocPage + MOV DWORD PTR [EBP-4], EAX + MOV EAX,DWORD PTR [EBP+8] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV DWORD PTR [ESI], EAX + MOV EAX,DWORD PTR [EBP-4] + MOV ESP,EBP + POP EBP + RETN 4 +_comdev_op: + PUSH EBP + MOV EBP,ESP + SUB ESP,13 + MOV EAX,DWORD PTR [EBP+24] + CMP EAX,5 + SETE AL + AND AL,AL + JZ L_64 + XOR EAX,EAX + MOV DWORD PTR [EBP-12], EAX + JMP L_65 +L_64: + MOV EAX,1 + MOV DWORD PTR [EBP-12], EAX +L_65: + LEA EAX,DWORD PTR [EBP-8] + PUSH EAX + CALL FWORD PTR _GetJobNum + MOV EAX,DWORD PTR [EBP-12] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + AND EAX,EAX + SETZ AL + AND AL,AL + JZ L_66 + MOV EAX,DWORD PTR [EBP+20] + CMP EAX,10 + SETNE AL + AND AL,AL +L_66: + JZ L_67 + MOV EAX,807 + JMP L_68 +L_67: + MOV EAX,DWORD PTR [EBP-12] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + AND EAX,EAX + JZ L_69 + MOV EAX,DWORD PTR [EBP-12] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + CMP EAX,DWORD PTR [EBP-8] + SETNE AL + AND AL,AL + JZ L_70 + MOV EAX,DWORD PTR [EBP-8] + CMP EAX,1 + SETNE AL + AND AL,AL +L_70: + JZ L_71 + MOV EAX,812 + JMP L_68 +L_71: +L_69: + XOR EAX,EAX + MOV DWORD PTR [EBP-4], EAX + MOV EAX,DWORD PTR [EBP+20] + JMP L_73 +L_74: + JMP L_72 +L_75: + PUSH DWORD PTR [EBP-12] + PUSH DWORD PTR [EBP+8] + CALL _ReadByteC + MOV DWORD PTR [EBP-4], EAX + JMP L_72 +L_76: + PUSH DWORD PTR [EBP-12] + MOV ESI,DWORD PTR [EBP+8] + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + PUSH EAX + CALL _WriteByteC + MOV DWORD PTR [EBP-4], EAX + JMP L_72 +L_77: + PUSH DWORD PTR [EBP-12] + PUSH DWORD PTR [EBP+8] + PUSH DWORD PTR [EBP+12] + MOV EAX,DWORD PTR [EBP-12] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,ESI + ADD EAX,8 + PUSH EAX + CALL _ReadRecordC + MOV DWORD PTR [EBP-4], EAX + JMP L_72 +L_78: + PUSH DWORD PTR [EBP-12] + PUSH DWORD PTR [EBP+8] + PUSH DWORD PTR [EBP+12] + CALL _WriteRecordC + MOV DWORD PTR [EBP-4], EAX + JMP L_72 +L_79: + MOV EAX,DWORD PTR [EBP-12] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP+16] + MOV DWORD PTR [ESI+36], EAX + JMP L_72 +L_80: + MOV EAX,DWORD PTR [EBP-12] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP+16] + MOV DWORD PTR [ESI+32], EAX + JMP L_72 +L_81: + PUSH DWORD PTR [EBP-12] + CALL _OpenCommC + MOV DWORD PTR [EBP-4], EAX + JMP L_72 +L_82: + PUSH DWORD PTR [EBP-12] + CALL _CloseCommC + MOV DWORD PTR [EBP-4], EAX + JMP L_72 +L_83: + PUSH DWORD PTR [EBP-12] + CALL _DiscardRecvC + MOV DWORD PTR [EBP-4], EAX + JMP L_72 +L_84: + MOV EAX,DWORD PTR [EBP-12] + MOV ESI,OFFSET _control_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + MOV ECX,1 + OR EAX,ECX + MOV BYTE PTR [ESI], AL + MOV EAX,DWORD PTR [EBP-12] + MOV ESI,OFFSET _control_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + PUSH EAX + MOV EAX,DWORD PTR [EBP-12] + SHL EAX,1 + MOV ESI,OFFSET _LCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + JMP L_72 +L_85: + MOV EAX,DWORD PTR [EBP-12] + MOV ESI,OFFSET _control_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + MOV ECX,2 + OR EAX,ECX + MOV BYTE PTR [ESI], AL + MOV EAX,DWORD PTR [EBP-12] + MOV ESI,OFFSET _control_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + PUSH EAX + MOV EAX,DWORD PTR [EBP-12] + SHL EAX,1 + MOV ESI,OFFSET _MCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + JMP L_72 +L_86: + MOV EAX,DWORD PTR [EBP-12] + MOV ESI,OFFSET _control_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + MOV ECX,-2 + AND EAX,ECX + MOV BYTE PTR [ESI], AL + MOV EAX,DWORD PTR [EBP-12] + MOV ESI,OFFSET _control_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + PUSH EAX + MOV EAX,DWORD PTR [EBP-12] + SHL EAX,1 + MOV ESI,OFFSET _LCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte +L_87: + MOV EAX,DWORD PTR [EBP-12] + MOV ESI,OFFSET _control_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + MOV ECX,-3 + AND EAX,ECX + MOV BYTE PTR [ESI], AL + MOV EAX,DWORD PTR [EBP-12] + MOV ESI,OFFSET _control_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + PUSH EAX + MOV EAX,DWORD PTR [EBP-12] + SHL EAX,1 + MOV ESI,OFFSET _MCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + JMP L_72 +L_88: + MOV EAX,DWORD PTR [EBP-12] + SHL EAX,1 + MOV ESI,OFFSET _LCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _InByte + MOV BYTE PTR [EBP-13], AL + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-13] + MOV ECX,64 + OR EAX,ECX + PUSH EAX + MOV EAX,DWORD PTR [EBP-12] + SHL EAX,1 + MOV ESI,OFFSET _LCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + PUSH DWORD PTR [EBP+16] + CALL FWORD PTR _Sleep + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-13] + PUSH EAX + MOV EAX,DWORD PTR [EBP-12] + SHL EAX,1 + MOV ESI,OFFSET _LCR + ADD ESI,EAX + MOVZX EAX,WORD PTR [ESI] + PUSH EAX + CALL FWORD PTR _OutByte + JMP L_72 +L_89: + MOV ESI,DWORD PTR [EBP+8] + MOV EAX,DWORD PTR [EBP-12] + MOV EBX,ESI + MOV ESI,OFFSET _mstat_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + MOV ECX,128 + AND EAX,ECX + MOV BYTE PTR [EBX], AL + JMP L_72 +L_90: + MOV ESI,DWORD PTR [EBP+8] + MOV EAX,DWORD PTR [EBP-12] + MOV EBX,ESI + MOV ESI,OFFSET _mstat_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + MOV ECX,32 + AND EAX,ECX + MOV BYTE PTR [EBX], AL + JMP L_72 +L_91: + MOV ESI,DWORD PTR [EBP+8] + MOV EAX,DWORD PTR [EBP-12] + MOV EBX,ESI + MOV ESI,OFFSET _mstat_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + MOV ECX,16 + AND EAX,ECX + MOV BYTE PTR [EBX], AL + JMP L_72 +L_92: + MOV ESI,DWORD PTR [EBP+8] + MOV EAX,DWORD PTR [EBP-12] + MOV EBX,ESI + MOV ESI,OFFSET _mstat_byte + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [ESI] + MOV ECX,64 + AND EAX,ECX + MOV BYTE PTR [EBX], AL + JMP L_72 +L_93: + JMP L_72 +L_73: + CMP EAX,23 + JE L_92 + CMP EAX,22 + JE L_91 + CMP EAX,21 + JE L_90 + CMP EAX,20 + JE L_89 + CMP EAX,19 + JE L_88 + CMP EAX,18 + JE L_87 + CMP EAX,17 + JE L_86 + CMP EAX,16 + JE L_85 + CMP EAX,15 + JE L_84 + CMP EAX,12 + JE L_83 + CMP EAX,11 + JE L_82 + CMP EAX,10 + JE L_81 + CMP EAX,14 + JE L_80 + CMP EAX,13 + JE L_79 + CMP EAX,2 + JE L_78 + CMP EAX,1 + JE L_77 + CMP EAX,32 + JE L_76 + CMP EAX,31 + JE L_75 + CMP EAX,0 + JE L_74 + JMP L_93 +L_72: + MOV EAX,DWORD PTR [EBP-12] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP-4] + MOV DWORD PTR [ESI+4], EAX + MOV EAX,DWORD PTR [EBP-4] +L_68: + MOV ESP,EBP + POP EBP + RETN 20 +_comdev_stat: + PUSH EBP + MOV EBP,ESP + SUB ESP,8 + MOV EAX,DWORD PTR [EBP+20] + CMP EAX,5 + SETE AL + AND AL,AL + JZ L_94 + XOR EAX,EAX + MOV DWORD PTR [EBP-8], EAX + JMP L_95 +L_94: + MOV EAX,1 + MOV DWORD PTR [EBP-8], EAX +L_95: + MOV EAX,DWORD PTR [EBP+12] + CMP EAX,64 + SETA AL + AND AL,AL + JZ L_96 + MOV EAX,64 + MOV DWORD PTR [EBP-4], EAX + JMP L_97 +L_96: + MOV EAX,DWORD PTR [EBP+12] + MOV DWORD PTR [EBP-4], EAX +L_97: + MOV EAX,DWORD PTR [EBP-8] + AND EAX,EAX + JNZ L_98 + PUSH OFFSET _comstat + PUSH DWORD PTR [EBP+16] + PUSH DWORD PTR [EBP-4] + CALL FWORD PTR _CopyData + JMP L_99 +L_98: + MOV EAX,64 + MOV ESI,OFFSET _comstat + ADD ESI,EAX + PUSH ESI + PUSH DWORD PTR [EBP+16] + PUSH DWORD PTR [EBP-4] + CALL FWORD PTR _CopyData +L_99: + MOV ESI,DWORD PTR [EBP+8] + MOV EAX,DWORD PTR [EBP+12] + MOV DWORD PTR [ESI], EAX + XOR EAX,EAX + MOV ESP,EBP + POP EBP + RETN 16 +_comdev_init: + PUSH EBP + MOV EBP,ESP + SUB ESP,34 + MOV EAX,DWORD PTR [EBP+16] + CMP EAX,5 + SETE AL + AND AL,AL + JZ L_101 + XOR EAX,EAX + MOV DWORD PTR [EBP-16], EAX + JMP L_102 +L_101: + MOV EAX,1 + MOV DWORD PTR [EBP-16], EAX +L_102: + MOV EAX,DWORD PTR [EBP+8] + CMP EAX,40 + SETB AL + AND AL,AL + JZ L_103 + MOV EAX,827 + JMP L_104 +L_103: + MOV EAX,DWORD PTR [EBP+12] + MOV _pCS, EAX + MOV ESI,_pCS + MOV EAX,DWORD PTR [ESI+12] + MOV DWORD PTR [EBP-20], EAX + MOV ESI,_pCS + XOR EAX,EAX + MOV AL,BYTE PTR [ESI+16] + MOV BYTE PTR [EBP-31], AL + MOV ESI,_pCS + XOR EAX,EAX + MOV AL,BYTE PTR [ESI+17] + MOV BYTE PTR [EBP-32], AL + MOV ESI,_pCS + XOR EAX,EAX + MOV AL,BYTE PTR [ESI+18] + MOV BYTE PTR [EBP-33], AL + MOV ESI,_pCS + MOV EAX,DWORD PTR [ESI+32] + MOV DWORD PTR [EBP-24], EAX + MOV ESI,_pCS + MOV EAX,DWORD PTR [ESI+36] + MOV DWORD PTR [EBP-28], EAX + MOV ESI,_pCS + MOV EAX,DWORD PTR [ESI+20] + MOV WORD PTR [EBP-30], AX + MOV ESI,_pCS + MOV EAX,DWORD PTR [ESI+24] + MOV DWORD PTR [EBP-8], EAX + MOV ESI,_pCS + MOV EAX,DWORD PTR [ESI+28] + MOV DWORD PTR [EBP-12], EAX + MOV ESI,_pCS + XOR EAX,EAX + MOV AL,BYTE PTR [ESI+19] + MOV BYTE PTR [EBP-34], AL + MOV EAX,DWORD PTR [EBP-20] + CMP EAX,38400 + SETA AL + AND AL,AL + JNZ L_105 + MOV EAX,DWORD PTR [EBP-20] + CMP EAX,150 + SETB AL + AND AL,AL +L_105: + JZ L_106 + MOV EAX,820 + JMP L_104 +L_106: + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-31] + XOR ECX,ECX + CMP EAX,ECX + SETB AL + AND AL,AL + JNZ L_107 + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-31] + CMP EAX,2 + SETA AL + AND AL,AL +L_107: + JZ L_108 + MOV EAX,821 + JMP L_104 +L_108: + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-32] + CMP EAX,5 + SETB AL + AND AL,AL + JNZ L_109 + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-32] + CMP EAX,8 + SETA AL + AND AL,AL +L_109: + JZ L_110 + MOV EAX,822 + JMP L_104 +L_110: + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-33] + CMP EAX,1 + SETB AL + AND AL,AL + JNZ L_111 + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-33] + CMP EAX,2 + SETA AL + AND AL,AL +L_111: + JZ L_112 + MOV EAX,823 + JMP L_104 +L_112: + MOV EAX,DWORD PTR [EBP-24] + AND EAX,EAX + JNZ L_113 + MOV EAX,1 + MOV DWORD PTR [EBP-24], EAX +L_113: + MOV EAX,DWORD PTR [EBP-28] + AND EAX,EAX + JNZ L_114 + MOV EAX,1 + MOV DWORD PTR [EBP-28], EAX +L_114: + MOV EAX,DWORD PTR [EBP-16] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP-20] + MOV DWORD PTR [ESI+12], EAX + MOV EAX,DWORD PTR [EBP-16] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-31] + MOV BYTE PTR [ESI+16], AL + MOV EAX,DWORD PTR [EBP-16] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-32] + MOV BYTE PTR [ESI+17], AL + MOV EAX,DWORD PTR [EBP-16] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-33] + MOV BYTE PTR [ESI+18], AL + MOV EAX,DWORD PTR [EBP-16] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP-24] + MOV DWORD PTR [ESI+32], EAX + MOV EAX,DWORD PTR [EBP-16] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP-28] + MOV DWORD PTR [ESI+36], EAX + MOV EAX,DWORD PTR [EBP-16] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [ESI] + AND EAX,EAX + JZ L_115 + PUSH DWORD PTR [EBP-16] + CALL _SetParams + JMP L_116 +L_115: + MOVZX EAX,WORD PTR [EBP-30] + AND EAX,EAX + JNZ L_117 + MOV EAX,824 + JMP L_104 +L_117: + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-34] + CMP EAX,3 + SETB AL + AND AL,AL + JZ L_118 + MOV EAX,825 + JMP L_104 +L_118: + MOV EAX,DWORD PTR [EBP-8] + MOV ECX,4096 + XOR EDX,EDX + DIV ECX + MOV ECX,4096 + MUL ECX + MOV DWORD PTR [EBP-8], EAX + MOV EAX,DWORD PTR [EBP-8] + MOV ECX,4096 + XOR EDX,EDX + DIV ECX + MOV EAX,EDX + AND EAX,EAX + JZ L_119 + MOV EAX,DWORD PTR [EBP-8] + ADD EAX,4096 + MOV DWORD PTR [EBP-8], EAX +L_119: + MOV EAX,DWORD PTR [EBP-12] + MOV ECX,4096 + XOR EDX,EDX + DIV ECX + MOV ECX,4096 + MUL ECX + MOV DWORD PTR [EBP-12], EAX + MOV EAX,DWORD PTR [EBP-12] + MOV ECX,4096 + XOR EDX,EDX + DIV ECX + MOV EAX,EDX + AND EAX,EAX + JZ L_120 + MOV EAX,DWORD PTR [EBP-12] + ADD EAX,4096 + MOV DWORD PTR [EBP-12], EAX +L_120: + MOV EAX,DWORD PTR [EBP-16] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOVZX EAX,WORD PTR [EBP-30] + MOV DWORD PTR [ESI+20], EAX + MOV EAX,DWORD PTR [EBP-16] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + XOR EAX,EAX + MOV AL,BYTE PTR [EBP-34] + MOV BYTE PTR [ESI+19], AL + MOV EAX,DWORD PTR [EBP-16] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP-8] + MOV DWORD PTR [ESI+24], EAX + MOV EAX,DWORD PTR [EBP-16] + MOV ECX,64 + MUL ECX + MOV ESI,OFFSET _comstat + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP-12] + MOV DWORD PTR [ESI+28], EAX + MOV EAX,DWORD PTR [EBP-16] + SHL EAX,2 + MOV ESI,OFFSET _sSendBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP-8] + MOV DWORD PTR [ESI], EAX + MOV EAX,DWORD PTR [EBP-16] + SHL EAX,2 + MOV ESI,OFFSET _sRecvBuf + ADD ESI,EAX + MOV EAX,DWORD PTR [EBP-12] + MOV DWORD PTR [ESI], EAX + XOR EAX,EAX + MOV DWORD PTR [EBP-4], EAX +L_116: + MOV EAX,DWORD PTR [EBP-4] +L_104: + MOV ESP,EBP + POP EBP + RETN 12