PIN10 -> ACK - Bit vom Statusregister -> Nix ändern, sondern lesen :)
Die Datenbits sind PIN 2 bis DIN9
Code:
int parall_output(char zeichen)
{
int i, code;
for ( i = 0; i < TIME_COUNT; i++) /* warten, bis Drucker nicht mehr busy ist */
{
code = inp(0x379); /* Statusregister lesen */
if ((code & 0x80) == 0x80) break; /* prüfen, ob BSY*-Bit gesetzt */
}
if ( i == TIMEOUT_COUNT) return(1); /* BSY-Zeitüberschreitungsfehler -> Fehlercode 1 */
outp(0x37A, (int) zeichen); /* Datenregister laden */
code = inp(0x37A); /* Steurregister lesen */
code = code | 0x01; /* STB-Bit setzen */
outp(0x37A, code;) /* Strobe high */
for (i = 0; i < STROBE_WAIT); /* etwas warten */
code = inp(0x37A); /* Steuerregister lesen */
code = code & 0xFE; /* STB-Bit löschen */
outp(0x37A, code); /* Strobe low, Daten werden übergeben */
for (i = 0; i < TIMEOUT_COUNT; i++)
{
code = inp(0x379); /* Statusregister lesen */
if ((code & 0x40) == 0x00) break; /* Prüfen, ob ACK-Bit gelöscht)
}
if (i == TIMEOUT_COUNT) return (2); /* ACK-Zeitüberschreitungsfehler -> Fehlercode 2*/
return (0); /* Supi!!! */
}