Drucken unter CP/M

  • Wenn mich meine Erinnerung nicht völlig verlässt, gab es unter CP/M einerseits logische und andererseits physikalische Geräte. Die konnte man dann munter einander zuordnen, z.B. Puncher und Reader (Lochstreifen) auf die serielle Schnittstelle, Drucker auf die parallele. Genauso kannst Du auch sagen, dass das Druckdevice auf die serielle gehen soll. Oder auch die Konsole umleiten ...


    Abgelegt wird das afaik im berühmten IOByte, und gesetzt mit dem Befehl STAT. Schau Dir das am besten mal im Handbuch an, ist ziemlich umfangreich, was dieser Befehl kann.


    Wenn das bei Dir mit dem Drucken nicht klappt kann das also an diesen Zuordnungen liegen.

    • Offizieller Beitrag

    Wenn das bei Dir mit dem Drucken nicht klappt kann das also an diesen Zuordnungen liegen.


    Danke für die Rückmeldung, Georg. Die Zuordnung bei Stat ist korrekt. Vielleicht habe ich auch beim Druckerkabel konfektionieren etwas verbockt. Interessanterweise initialisiert der Drucker beim Starten von CP/M. Ich muss das die Tage mal in Ruhe durchmessen.


  • Je nach Implementierung...teste mal mit Angabe des Quelllaufwerkes


    PIP PRN:=A:HALLO.TXT

    • Offizieller Beitrag

    Habs nochmal probiert mit einem seriellen Drucker, der nebst Kabel an einem MSDOS-PC funktioniert.
    Leider an der Sage mit CP/M-68k nicht.
    Jemand noch eine Idee?
    Im CP/M Bios habe ich Parameter der seriellen Schnittstelle richtig konfiguriert. Dann mittels Stat LST an LPT zugewiesen. Anschließend Druckversuch mit PIP LST:=Datei, Drucker reagiert nicht, macht keinen Mucks.


    mach ich was falsch oder ist vielleicht die 2. Serielle meiner Sage tot?

  • Hi Toshi,


    Ich will hier keine Eulen nach Athen tragen, aber serielle RS232-Schnittstellen haben eine Menge Fallstricke.


    Ich gehe mal davon aus, dass Bitrate etc. richtig eingestellt sind? Keine Ahnung, wie das bei CP/M 68K ist, aber bei meinen CP/M80 Rechnern sind das immer wieder unterschiedliche Setup- oder Config-Programme.


    Richtige Verbindungen? Je nach Typ (DTE, DCE) wird auf Pin 2 oder auf Pin 3 gesendet.


    Handshake: Kann es sein, dass der Rechner auf irgendwelche Bereitschaftssignale wartet? Welche Leitungen hast Du verbunden, welches Handshake ist beim Drucker einfestellt, welche Möglichkeiten hast Du beim Rechner?


    Hast Du einen Schnittstellentester (Zwischenstecker mit LEDs)? Damit kannst Du die richtige Verdrahtung prüfen (von den beiden Leitungen TX und RX müssen Rechner und Drucker je eine aktivieren - wenn bei hergestellter Verbindung nur eine LED leuchtet, ist die Verkabelung falsch).
    Dann würde ich mal prüfen, ob der Rechner auf den Steuerleitungen etwas ausgibt (d.h. ob da irgendwelche Pegel anliegen). Wenn z.B. auf RTS ein High-Pegel anliegt ist es gut möglich, dass er auf CTS eine entsprechende Antwort erwartet, bevor er mit dem Senden beginnt. Schlimmstenfalls spielen auch noch DSR, DTR und DCD eine Rolle. Ich würde das dann zunächst mal mit Kurzschlussbrücken auf der Rechnerseite simulieren, d.h. RTS an CTS, und afair DSR, DTR und DCD miteinander verbinden. Dann wird zwar der Drucker evtl. "überfahren", aber der Rechner sollte dann senden.


    Dass gesendet wird, kannst Du bei nicht zu hohen Baudraten auch an diesem Tester ablesen - evtl. sendet der Rechner ja, aber der Drucker ist nicht zufrieden (falsche Parameter, falsches Handshake, evtl. sogar falsche Pin-Zuordnung?).


    Wie gesagt, möglicherweise ist das alles schon bekannt und von Dir bereits berücksichtigt. Das sind halt die mir bekannten RS232-Stolperfallen. :roll:


    Edit: Bist Du sicher, dass LPT: die 2. serielle ist? Hast Du schon mal die anderen physikalischen Geräte versucht? PTR: und PTP: wären evtl. auch Kandidaten ...

    Einmal editiert, zuletzt von Georg ()

    • Offizieller Beitrag

    Hi Toshi,


    Ich will hier keine Eulen nach Athen tragen, aber serielle RS232-Schnittstellen haben eine Menge Fallstricke.


    Hallo Georg,
    danke für den ausführlichen Beitrag, das mit den Fallstricken habe ich auch schon bemerkt.
    Die Schnittstelle ist über ein beigefügtes Softwaretool richtig konfiguriert.
    Wenn ich CP/M soweit richtig bedient habe (was ich mit meiner Frage verifiziert haben wollte), werde ich nun so weiter vorgehen, wie empfohlen (und erst mal so einen Schnittstellentester-Zwischenstecker bauen).


    Gruß
    Stephan

    • Offizieller Beitrag

    Gerade vor ein paar Tagen habe ich in meinem RS-232 Teststecker mal reingesehen, wie der aufgebaut ist:
    Jede zu überwachende Leitung ist mit 2 parallelgeschalteten, umgekehrt gepolten, LEDs (rot und grün) mit einem 3,3 KOhm Widerstand verbunden. Der Widerstand hängt an GND.
    So kann man für jede überwachte Leitung erkennen, ob ein High-, Low- oder garkein Pegel anliegt.

    • Offizieller Beitrag

    Richtige Verbindungen? Je nach Typ (DTE, DCE) wird auf Pin 2 oder auf Pin 3 gesendet.


    Ich hab mir gerade den Schaltplan der / einer Sage (ich denke um die geht es) angeschaut.
    Die empfaengt am Terminal-Stecker Zeichen auf Pin 2, der TX (!) Leitung. Terminal sendet auf TX, Sage empfaengt auf TX. Passt!
    Am Modem-Stecker werden Zeichen auf Pin 2 (auch TX) gesendet. Das passt auch, da Modems und Drucker hier empfangen.
    Verwendest du zum Drucker eine 1:1 Verbindung?

  • Ehrlich gesagt gehe ich bei jeder seriellen Verbindung, die ich nutze, immer erst mal mit dem Teststecker dran. Also rein experimentell :tüdeldü:
    Statt Schaltpläne oder Doku zu studieren bekommt man so eine direkte Erkenntnis, ob ein 1:1 Kabel oder ein gekreuztes nötig ist. Weiterhin kann man sehen, ob was gesendet wird, und das Hardware-Handshake kann man in Grenzen auch überprüfen.


    Leider ist das Angebot an solchen Teststeckern mittlerweile arg eingeschränkt, und was man noch bekommt, ist unverschämt teuer. Von daher ist der Selbstbau evtl. wirklich eine vernünftige Variante. Brauchen kann man das immer wieder.

    • Offizieller Beitrag

    Analog zu Radio Eriwan:
    Dein Vorgehen ist perfekt, aber ... :)


    Wenn du einen solchen Tester hast, schon mal gut.
    Dann brauchst du noch 2 Gender-Changer, 25pol und 9pol, einen Adapter 9 <-> 25 pol. Und das ganze 2 mal.


    Im Ernst, das mit dem Tester ist schon ok.
    Aber da bei mir die Stecker meistens nicht gepasst haben, musste ich jedesmal basteln.
    Und deshalb, erst denken, dann löten.

  • Analog zu Radio Eriwan:
    Dein Vorgehen ist perfekt, aber ... :)


    Wenn du einen solchen Tester hast, schon mal gut.
    Dann brauchst du noch 2 Gender-Changer, 25pol und 9pol, einen Adapter 9 <-> 25 pol. Und das ganze 2 mal.


    :D:D wenn Du wüsstest, wieviele Adapter, Gender-Changer, 0-Modem-Stecker, Zwischenkabel, Breakout-Boxen etc. ich habe ... :D:D
    Alles aus langjähriger (schlechter) Erfahrung mit seriellen Schnittstellen. Und man hat halt längst nicht immer Schaltpläne oder korrekte Schnittstellenbeschreibungen.


    Und deshalb, erst denken, dann löten.


    Das erinnert mich an einen alten Witz, bei dem ein Experimentalphysiker, ein theoretischer Physiker und ein Mathematiker verglichen werden ...


    Im Prinzip gebe ich Dir recht, aber in der Praxis komme ich - speziell bei undokumentierten Schnittstellen - mit meiner Methode gut zurecht. Manchmal ist die Kette der Adapter etwas unhandlich lang, aber wenn ich eine passende Kombination zusammengesteckt habe, löte ich mir auf der Basis meistens eh ein eigenes Kabel.

    • Offizieller Beitrag

    :D :D wenn Du wüsstest, wieviele Adapter, Gender-Changer, 0-Modem-Stecker, Zwischenkabel, Breakout-Boxen etc. ich habe ... :D :D
    Alles aus langjähriger (schlechter) Erfahrung mit seriellen Schnittstellen.


    Sag ich doch! :)


    aber in der Praxis komme ich - speziell bei undokumentierten Schnittstellen - mit meiner Methode gut zurecht.


    Und da gebe ich dir genauso recht!
    Vor mehr als 20 Jahren rief mich ein Bekannter an, er könne seine Telefonanlage nicht programmieren. Das gleiche Problem wie beschrieben.
    Ich hab gesagt er soll messen was an Pin 2 und Pin 3 anliegt. "Die Prüfspitzen passen da aber nicht rein." "Bieg 2 Büroklammern auf, das passt"
    Keine 2 Minuten später war die Anlage programmiert.


    Keine Methode ist immer die Beste, das Beste ist immer situationsbedingt.

  • So, nach dem kleinen Ausflug in die verschiedenen Arbeitsweisen jetzt wieder zurück zu Stephans Problem. Da er (noch) keinen Teststecker hat (und vermutlich auch keine entsprechende Sammlung an Adaptern), versuche ich mich auch mal an dem theoretischen Ansatz.


    Am Modem-Stecker werden Zeichen auf Pin 2 (auch TX) gesendet. Das passt auch, da Modems und Drucker hier empfangen.


    Also ist der Modem-Anschluss offenbar ein DTE - genauso wie der serielle Port am PC.


    Habs nochmal probiert mit einem seriellen Drucker, der nebst Kabel an einem MSDOS-PC funktioniert.


    Am PC brauchst Du normalerweise einen 9-poligen Anschluss, bei der Sage wird er 25-polig sein - ich schätze mal, Du hast einen kommerziellen Adapter dazwischen, oder ist das selbstgebaut?


    Wenn der Adapter ok ist, müsste die Verbindung also eigentlich korrekt sein, wir haben ja in beiden Fällen rechnerseitig eine DTE-Konfiguration..


    Bleibt das Handshake. Kannst Du das in der Sage irgendwie konfigurieren? Dort, wo Du auch Baudrate etc. festlegst?


    Ansonsten tatsächlich testweise mal RTS und CTS (4 und 5) am Rechner verbinden, und ggfs. dann noch DTR, DSR und DCD (20, 6 und 8). Die entsprechenden Verbindungen zum Drucker dabei offen lassen, d.h. der bekommt nur GND und die Datenleitungen.


    Wobei wir aber schon wieder beim Experimentieren sind ... 8-)


    mach ich was falsch oder ist vielleicht die 2. Serielle meiner Sage tot?


    Mmh, ich sach nur: Teststecker :tüdeldü:

    • Offizieller Beitrag

    Hallo!


    Ich hab ja jetzt mein Centronics/RS232 Testgerät, welches ich ausprobiert habe (seriell senden/Empfangen und parallel senden/empfangen). Es geht auch an der SAGE. Aber nur am Terminal Port (und zeigt auch brav an, was gesendet wird).


    Nur wenn ich mit der SAGE drucken will, geht es nicht (es kommt nichts an, weder an der Parallelen, noch an der Seriellen).


    Möglicherweise ist mein Ansatz


    STAT LST:=LPT:
    PIP LST:=A:TEXT.ASC


    doch falsch? Im "SAGEUTIL" habe ich jeweils den Drucker als seriellen oder parallelen Drucker installiert.


    Ich habe auch die 8255 schon getauscht. Und die 1488/1489.


    Jemand einen Rat weiss? Was nutzt ein Computer, der nicht druckt?