/*===========================================================================*/ /* Copyright (c) 1987 - 1988, Future Soft Engineering, Inc. */ /* Houston, Texas */ /*===========================================================================*/ #define NOLSTRING TRUE /* jtf win3 mod */ #include #include "port1632.h" #include "dcrc.h" #include "dynacomm.h" #include "task.h" BREAKCOND breakcondition_rdModem; /*---------------------------------------------------------------------------*/ /* rdModem() - Read characters from system modem into local IT buffer. [scf] */ /*---------------------------------------------------------------------------*/ VOID rdModem(BOOL rFlag) { INT i; INT yieldCount; MSG msg; if(modemBytes()) { if(answerMode) { theChar = getMdmChar(TRUE); /* mbbx 1.06A: ics new xlate */ return; } later = FALSE; hideTermCursor(); yieldCount = 0; getPort(); repeat { theChar = (the8Char = getMdmChar(TRUE)); /* mbbx 1.06A: ics new xlate... */ if(rFlag) { modemInp(the8Char, TRUE); /* mbbx: make this optional ??? */ if(mdmResult[0] < MDMRESLEN) mdmResult[++(*mdmResult)] = theChar; if(theChar != LF) { if(mdmResult[0] == 1) mdmResult[0] = 0; /* throw it away!!! */ } else if(mdmResult[0] > 2) mdmValid = TRUE; later = TRUE; } else { if(xferWaitEcho) if(xferTxtType == XFRLINE) /* (jtfx) */ { if(theChar == xferLinStr[xferWaitEcho]) if(xferWaitEcho == xferLinStr[0]) xferWaitEcho = FALSE; else xferWaitEcho++; } else if((xferTxtType == XFRCHAR) && (theChar == xferCharEcho)) /* (jtfx) */ xferWaitEcho = FALSE; modemInp(the8Char, TRUE); /* mbbx 1.10 */ if(theChar == CR) if(trmParams.inpCRLF) /* mbbx 1.10: CUA */ modemInp(LF, TRUE); if(!modemBytes()) later = TRUE; if(++yieldCount == YIELDCHARS) { termCleanUp(); /* mbbx: per mac version */ yieldCount = 0; if(yield(&msg, (HWND) NULL)) /* mbbx */ later = TRUE; } } } until(later); activSelect = FALSE; /* rjs bugs 020 */ termCleanUp(); showTermCursor(); releasePort(); } }