Wow, thanks for the detailed reply. PIClist is great. So are you interfacing a real analog MODEM? What is the application? Are you running your own OS (cooperative multitasking)? What do you mean by the "a mechanism to block the processes in some sort of I/O wait"? Regards, Xiaofan -----Original Message----- From: Lee Jones [mailto:lee@frumble.claremont.edu] Sent: Thursday, July 14, 2005 12:30 PM ... I use cooperative multitasking with a state machine for each thread. Main loop calls thread if state is non-zero (maps nicely to TSTFSZ on 18F). Use states to implement timers and dismiss thread when it is waiting for UART to become ready (Tx) or to have a char (Rx). ... Remember that sending a dial string or reading a response take a _long_ time in PIC terms. You have to build a mechanism to block the processes in some sort of I/O wait. Lee Jones -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist