www.pudn.com > ASYNC13.rar > MYPROG.C
///////////// ///////////// //// This program is intended to get you started using the ASYNC //// library. MYPROG is just a simple little dumb (stupid, actually) //// terminal emulator. It doesn't process ANSI codes, so, depending on //// what you talk to, you may seem some strange characters from time to //// time. //// //// The first thing to do is to make sure that ASYNCS.LIB (assuming //// that you'll be using the small memory model) and ASYNC.H are in //// your LIB and INCLUDE directories, respectively. Use CREASYNC.BAT to //// create the ASYNCx.LIB files if you haven't already done so. //// //// To compile MYPROG.C, just issue the command //// //// tcc -ms myprog asyncs.lib //// //// This will compile MYPROG.C and link it with the functions it needs //// from ASYNCS.LIB to produce the executable file MYPROG.EXE. //// //// This program was originally intended to talk to a 2400 baud modem //// using no parity, 8 data bits, and 1 stop bit. Change the parameters //// to a_open in main() if you want to change these communication //// parameters. ///////////// ///////////// #include#include #include #include #include void dumbterm(ASYNC *port); int main(void) {ASYNC *com2; // // Open COM2 at 2400 buad for no parity, 8 data bits, 1 stop bit, using // a 4096-byte input buffer and no output buffer. // com2=a_open(2,2400,PAR_NONE,8,1,4096,0); if (!com2) {cputs("Cannot open COM2.\r\n"); return 1; } // // Start the dumb terminal emulator. // dumbterm(com2); // // Close COM2. (Never forget to do this.) // a_close(com2,0); return 0; } // end of void main(). void dumbterm(ASYNC *port) {int ch,x,y; // // Give the user some last-minute instructions. // textattr(7); cputs("Your in terminal mode now. To return to DOS, press ALT-X.\r\n"); textattr(2); // // Keep acting like a terminal until Alt-X is pressed. // do {// If a key has been pressed, read it from the keyboard. if (bioskey(1)) ch=bioskey(0); else ch=0; // If Alt-X was pressed, leave this loop. if (ch==0x2d00) break; // If a key was pressed, the scan code off of ch and transmit it. ch&=0xff; if (ch) a_putc(ch,port); // If a character has been received, display it. ch=a_getc(port); if (ch!=-1) switch(ch) {case 0: // Ignore null characters. break; case 7: // Beep for bell characters. sound(2000); delay(50); nosound(); delay(25); case 8: // Do back spaces manually. x=wherex()-1; y=wherey(); if (x<1) {x=80; y--; if (y<1) x=y=1; } gotoxy(x,y); putch(' '); gotoxy(x,y); break; case '\n': // Ignore linefeeds. break; case '\r': // Treat carriage returns as carriage return/line feeds. cputs("\r\n"); break; default: putch(ch); } } while(1); } // end of dumbterm(port).