detlef
Im ROM des Amiga ist der RTS/CTS Handshake und der XOn/XOff Handshake implementiert, man braucht gar nicht ins ROM zu schauen.
Das Ganze ist hier Bitte melde dich an, um diesen Link zu sehen. recht gut beschrieben
Der Handshake wird noch mal hier erklärt:
Bitte melde dich an, um diesen Link zu sehen.
Das 'X-Draht' Protokoll benutzt die Leitungen RTS/CTS um seinem Gengenüber zu sagen ob er was empfangen kann.
Das 3-Wire bzw. XOn/XOff Protokoll benutzt dazu spezielle Datenworte (XOn/XOff).
Laut Dokumentation gibt es keine Version ohne Handshake, will man mit 3 Leitungen (Masse, TXD, RXD) auskommen, dann wählt man eben das mit XOn/XOff
Ich habe die Schnittstelle mit folgendem Kommando angesprochen:
open 2,2,0, chr$(6)+chr$(0)
Und das steht für:
- 300 Baud
- 8 Datenbits
- Keine Parity Bit
- 1 Stopbit
- 3 wire bzw. XOn/XOff bzw Software Handshake
- Vollduplex
Möchte ich RTS/CTS Handshake haben dann würde das so aussehen:
open 2,2,0, chr$(6)+chr$(1)
Jetzt hat die C64 Schnittstelle 2 richtig doofe Probleme:
1. Das Rausschieben der einzelnen Datentbits geschieht in Software
2. Handshake (auch bei RTS/CTS) geschieht auch in Software
Ist der C64 zu langsam um die einzelnen Datenbits am Userport rechtzeitig abzufragen oder zu senden dann sind die Ergebnisse verkehrt, egal ob der Handshake richtig eingestellt ist.
Bei Vice habe ich das zusätzliche Problem, dass ich nicht weiß ob er die Bits richtig abfragt und interpretiert, so wie es hier aussieht könnte es da Probleme geben.
Du hast gut erkannt, dass Blöcke mit eigener Prüfziffer die Fehler bei der Datenübertragung verringern können, daher gibt es Lösungen um Fehler zu erkennen. Mit dem Parity Bit kann man eine 1-Bit Prüfzahl für jedes Byte festlegen, Protokolle wie XModem übertragen die Bytes als Block und senden Prüfsummen mit: Bitte melde dich an, um diesen Link zu sehen.
Viele Terminalprogramme biten XModem zur Datenübertragung.
Bringt mich allerdings nicht weiter, da ich wesentlich kürzere Datenmengen übertragen möchte.