/*
 * panel.h Rutinas que gestionan los circuitos de visualicaci'on
 * 'Ultima modificaci'on: 03-03-2002
 *
 * Antonio G'omez Muriana (correo@senco.net)
 * Miguel Montero G'amez
 */
 
 /*
 * Un panel de 6x8 leds para representar un caracter. La linea WRITE
 * permite cambiar el contenido de los LEDs.
 */

class PANEL_6x8 {
	REG_48_EN mem;
	LED_6x8 leds;
	WIRE o[48];

public:
	PANEL_6x8();
	void run(WIRE &WRITE, WIRE i[48]);
};

/*
 * Conjunto de 16 Paneles de 6x8 leds que representan una fila del panel general.
 */

class PANEL_FILA {
	PANEL_6x8 p[16];
	WIRE Ebus[16];
	DEMUX de;

public:
    PANEL_FILA() {de.create(4);}
	void run(WIRE &WRITE, WIRE i[48], WIRE a[4]);
};

/*
 * Conjunto de 4 Filas para formar el panel general
 */

class PANEL_PRE {
	PANEL_FILA p[4];
	WIRE Ebus[4];
	WIRE a03[4], a45[2];
	DEMUX_1_4 de;

public:
	void run(WIRE &WRITE, WIRE i[48], WIRE a[6]);
};


/*
 * Panel gráfico junto con una ROM y lógica para completo de 16 columnas x 4 filas.
 */

class PANEL {
	ROM_PANEL r;
	PANEL_PRE p;
	WIRE bus[48];
    int retardoa[2], retardod[2];

public:
	void run(WIRE &WRITE, WIRE data[8], WIRE addr[6]);
};
