/**
 * An interface describing which services a PIC (which is a DigitalComponent) must offer.
 * <BR>You can read the source of this interface <A HREF="./PIC.java.html"> here</A>.
 */
public interface PIC extends DigitalComponent {

	/**
	 * Reprograms the PIC.
	 * @param prog The new program.
	 */
	public void ReprogramFlash(CompiledProgram prog);

	/**
	 * Runs the PIC.
	 */
	public void Run();

	/**
	 * Resets the PIC.
	 */
	public void Reset();
	
	/**
	 * Executes one instruction.
	 */
	public void ExecInstruction();

	/**
	 * Tells the PIC to notify c at each instruction cycle.
	 */
	public void addComponentToNotify(DigitalComponent c);

}