Bios Entry $05 - List Output
Verfasst: 16. Apr 2020, 19:46
Hallo zusammen,
ich habe mir erfolgreich ein kleines Z80 System aufgebaut. Nun komme ich nicht weiter, was die BDOS Eintragungen für $05 "List output" betreffen - Ich möchte aber mal was drucken...
Desshalb habe ich eine grundlegende Frage zur Druckerfunktion unter CP/M 2.2. Das zu druckende Zeichen wird über Bios Entry $05 an den Drucker gesendet - Soweit klar. Wie kann ich aber vorher herausfinden, ob der Drucker gerade Busy ist und ob das Zeichen auch gesendet wurde und vom Drucker mit ACK angenommen wurde? Bei den Entry Punkten für TTY und CON gibt es einen Status Byte, welches zuvor von der Software ausgelesen werden könnte - Hier aber nicht. Wäre dann wirklich komisch, den Druckauftrag zu starten und dann festzustellen, das Busy anliegt oder das Zeichen vom Drucker wegen Busy verschluckt wurde. Die Funktion $05 hat auch keinen Ausgang, das man hier evtl. einen Fehler an die Software zurückmelden könnte.
Die Z80-PIO ist mit Port A an einen Treiber an D0-D7 des Druckers angeschlossen. Theoretisch könnten die Steuerleitungen (BUSY, ACK, PE, usw.) vom Drucker kommend mit Port B als Eingang abgefragt und ausgewertet werden. Wie aber könnte ein Programm darauf reagieren wenn der Status vom Bios nicht übergeben wird?
Ich habe im Netz aus einer alten Club 80 Zeitschrift eine Centronics Schnittstelle gefunden, welche über einen Interrupt ein "DQB-Byte" zurücksetzen kann. Falls das nicht passiert, kann sogar eine Fehlermeldung "Timeout" erzeugt werden, nur hierfür gibt es eben auch keinen Bios Entry Punkt. Auch ist es dann möglich, die Zeichen ab einem Speicherpunkt (welcher auch immer) bis ETX auszugeben. Ich denke das ist eine sehr Elegante Lösung aber sehr Spezifisch und wird wohl nicht von vielen Programmen unter CP/M 2.2 unterstützt.
Hat jemand hier schon Erfahrungen sammeln können und könnte mir hier ggf. mit seinem Wissen weiterhelfen? Ich würde mich riesig über eine Antwort freuen!
Viele Grüße,
Horst
ich habe mir erfolgreich ein kleines Z80 System aufgebaut. Nun komme ich nicht weiter, was die BDOS Eintragungen für $05 "List output" betreffen - Ich möchte aber mal was drucken...
Desshalb habe ich eine grundlegende Frage zur Druckerfunktion unter CP/M 2.2. Das zu druckende Zeichen wird über Bios Entry $05 an den Drucker gesendet - Soweit klar. Wie kann ich aber vorher herausfinden, ob der Drucker gerade Busy ist und ob das Zeichen auch gesendet wurde und vom Drucker mit ACK angenommen wurde? Bei den Entry Punkten für TTY und CON gibt es einen Status Byte, welches zuvor von der Software ausgelesen werden könnte - Hier aber nicht. Wäre dann wirklich komisch, den Druckauftrag zu starten und dann festzustellen, das Busy anliegt oder das Zeichen vom Drucker wegen Busy verschluckt wurde. Die Funktion $05 hat auch keinen Ausgang, das man hier evtl. einen Fehler an die Software zurückmelden könnte.
Die Z80-PIO ist mit Port A an einen Treiber an D0-D7 des Druckers angeschlossen. Theoretisch könnten die Steuerleitungen (BUSY, ACK, PE, usw.) vom Drucker kommend mit Port B als Eingang abgefragt und ausgewertet werden. Wie aber könnte ein Programm darauf reagieren wenn der Status vom Bios nicht übergeben wird?
Ich habe im Netz aus einer alten Club 80 Zeitschrift eine Centronics Schnittstelle gefunden, welche über einen Interrupt ein "DQB-Byte" zurücksetzen kann. Falls das nicht passiert, kann sogar eine Fehlermeldung "Timeout" erzeugt werden, nur hierfür gibt es eben auch keinen Bios Entry Punkt. Auch ist es dann möglich, die Zeichen ab einem Speicherpunkt (welcher auch immer) bis ETX auszugeben. Ich denke das ist eine sehr Elegante Lösung aber sehr Spezifisch und wird wohl nicht von vielen Programmen unter CP/M 2.2 unterstützt.
Hat jemand hier schon Erfahrungen sammeln können und könnte mir hier ggf. mit seinem Wissen weiterhelfen? Ich würde mich riesig über eine Antwort freuen!
Viele Grüße,
Horst