Here is one basic idea of how it can be done: The boot loader times ON periods -- ie: how long it can run before it is reset. Each ON time is a "Baud" which can encode several bits. If the ON period is > 1 second then we assume that we are running the actual application and branch to it. If the ON period is > 3/4 but less than 1 second then we assume that we are resetting the boot loader logic. Following the pulse with an ON period of > 3/4 seconds we send several pulses exactly 1/8 second long. These are timed by the boot loader to establish a baseline for how long a 1/8 second pulse will look to it (after appropriate oscillator start up etc.) 4. Now you can send multiple bits per reset by computing an interval between 1/8 and 3/8 of a second. For example, to send 4 bits per reset, stored in the variable 'b', you could compute the interval as: 1/8 + b/64 seconds The number of bits sent per interval is limited by the resolution of the timing, as well as the tolerance of the clock frequency. Well, Wouter, is that close to what you had in mind? Bob Ammerman RAm Systems -- http://www.piclist.com#nomail Going offline? Don't AutoReply us! email listserv@mitvma.mit.edu with SET PICList DIGEST in the body