No entiendo muy bien la idea de los puertos de E / S.
Los puertos de E / S son como ubicaciones de memoria, excepto que / IOREQ se usa para seleccionarlos en lugar de / MREQ. En el Z80, una instrucción de E / S como OUT (0xFF),A
o IN A,(0xFF)
coloca la dirección de 8 bits 0xFF en las 8 líneas de dirección inferiores, luego pulsa / IOREQ bajo para seleccionar el chip de E / S. Esto proporciona un espacio de E / S con 256 ubicaciones. El Z80 también puede tener un espacio de E / S de 16 bits utilizando instrucciones como OUT (C),A
, que coloca el contenido del registro B en los 8 bits superiores del bus de direcciones.
Para tener varios chips de E / S en el mismo bus, cada uno debe seleccionarse en una dirección diferente. Para los chips que solo tienen una línea de selección, puede conectar cada uno a una línea de dirección diferente y luego direccionar hasta 8 chips con instrucciones de E / S de 8 bits, por ejemplo. el primer chip seleccionado cuando A0 es bajo y todos los demás altos, el segundo cuando A1 es bajo, etc. Con este método, no debe usar ninguna dirección que tenga tanto A0 como A1 bajos o se seleccionarán ambos chips al mismo tiempo, lo que provocará un conflicto de bus .
Esto se denomina decodificación de dirección 'parcial', que se usó en muchas computadoras domésticas, como Sinclair ZX Spectrum y Amstrad CPC. Otras computadoras con CPU que no tienen espacio de E / S (por ejemplo, 6502) tienen que direccionar sus chips de E / S en el espacio de memoria y, por lo tanto, generalmente hacen una decodificación de dirección más completa porque de lo contrario perdería demasiado espacio de memoria.