Introduction
This circuit allows a remote microprocessor to be reset by a controlling host by sending a break signal over an RS-232 or RS-422 serial line. If the remote machine resets into a simple program loader program, it is possible for the host to halt and restart, or halt and reload/restart the remote machine’s program. This is an ideal way to develop software on older EPROM-based systems. Modern EEPROM/NVRAM systems use JTAG interfaces for similar results.
This circuit allows a remote microprocessor to be reset by a controlling host by sending a break signal over an RS-232 or RS-422 serial line. If the remote machine resets into a simple program loader program, it is possible for the host to halt and restart, or halt and reload/restart the remote machine’s program. This is an ideal way to develop software on older EPROM-based systems. Modern EEPROM/NVRAM systems use JTAG interfaces for similar results.
The remote processor runs its target 
code out of RAM, allowing the code to be updated easily. The circuit is 
usually used for developing code on a target processor, but it can also 
be used for permanent applications where the target program lives on a 
host system’s disk. This system was once used to load code into a 
microprocessor-based satellite receiving system in Hawaii from a host 
system in Colorado using an Internet-based remote serial communications 
program.
A program loader for the Z80 CPU is 
available below. The circuit has also been used with the Motorola 68HC11
 EVB and the BUFFALO monitor program. See my Linux Cross Assemblers page
 for more info.
Theory
This circuit detects long duration zero level signals (breaks) on a NRZ (non return to zero) serial data line. Normal serial characters spend a short time in the zero state, and do not cause a reset. Break signals are a exception to this, they hold the line low for an extended period.
This circuit detects long duration zero level signals (breaks) on a NRZ (non return to zero) serial data line. Normal serial characters spend a short time in the zero state, and do not cause a reset. Break signals are a exception to this, they hold the line low for an extended period.
The 10K/1N4148 parts keep the 2.2uF 
capacitor charged up. Low input signals go through the 10K resistor and 
slowly pull the charge on the 2.2uF capacitor down. High input signals 
quickly recharge the capacitor through the 1N4148 diode. A break signal 
lasts long enough to discharge the 2.2uF capacitor to the point where 
the following gate changes state.
The 1N4148 on the right allows a manual 
break switch to be used on the target CPU, pressing such a switch does 
not short out the preceding 74HC14 gate.
This circuit could be built with just 2 
schmidt trigger non inverting buffers, the 74HC14 was chosen because it 
is a common part. The parallel inverters are also optional, single 
inverters work fine.
Z80 Program Loader
Here is a Z80 assembly language program that functions as a bootstrap loader for use with the Microprocessor RS-232 Reset circuit. This code runs on an ancient SD systems SBC200 Z80 circuit board and can be made to work with other Z80 boards by changing the initialization and serial port functions.
Here is a Z80 assembly language program that functions as a bootstrap loader for use with the Microprocessor RS-232 Reset circuit. This code runs on an ancient SD systems SBC200 Z80 circuit board and can be made to work with other Z80 boards by changing the initialization and serial port functions.
