home *** CD-ROM | disk | FTP | other *** search
- /*** MODEM_IO.C ***/
-
- #include <string.h>
- #include <ctype.h>
- #include "windows.h"
- #include "pcl4w.h"
- #include "ascii.h"
- #include "modem_io.h"
- #include "term_io.h"
- #include "paint.h"
-
- extern HWND hMainWnd;
- extern int OnLineFlag;
-
- #define MAXSTRING 64
- #define CHARSPACING 200
-
- static char ModemText[MAXSTRING+1]; /* string to send */
- static int ModemLength = 0; /* length of above string */
- static int ModemIndex = 0; /* current index into ModemText */
- static int ModemPort = 0; /* Port number */
- static long ModemTime = 0L; /* time used to time SendTo */
- /*
- ** Initialization for SendToModem().
- */
-
- void InitModem(int Port,char *String)
- {int i;
- ModemPort = Port;
- ModemLength = strlen(String);
- if(ModemLength>=MAXSTRING) ModemLength = MAXSTRING;
- for(i=0;i<ModemLength;i++) ModemText[i] = String[i];
- ModemText[ModemLength] = '\0';
- ModemIndex = 0;
- ModemTime = 0L;
- SioRxFlush(ModemPort);
- } /* end InitModem */
-
- /*
- ** Send string character. Call until it
- ** returns TRUE (which indicates 'idle').
- */
-
- int SendToModem(void)
- {
- char c;
- int Code;
- int Delay = CHARSPACING;
- /* transmit string sent ? */
- if(ModemIndex==ModemLength) return TRUE;
- /* echo any incoming */
- Code = GetChar(ModemPort);
- if(Code>=0)
- {c = (char)Code;
- WriteTheString(&c,1);
- }
- /* time to process next char ? */
- if(GetTickCount() < ModemTime) return FALSE;
- /* fetch character */
- c = toupper( ModemText[ModemIndex++] );
- switch(c)
- {case '!':
- /* replace ! with carriage return */
- c = CR;
- break;
- case '~':
- /* delay 1/2 second */
- Delay = 500;
- c = ' ';
- break;
- } /* end switch */
- /* transmit as 7 bit character */
- PutChar(ModemPort,(char)(0x7f & c));
- ModemTime = GetTickCount() + (long)Delay;
- return FALSE;
- } /* end SendToModem */