Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Tool für RS232 Binärtransfer

10 views
Skip to first unread message

Volker Bartheld

unread,
Feb 9, 2012, 4:51:03 AM2/9/12
to
Hallo!

Für ein Retrocomputingprojekt muß ich via RS232 im PC binäre Daten
empfangen und unverändert als Datei ablegen. Viele Tools (z. B.
Hyperterminal, Putty) wollen Protokolle wie X/Y/Zmodem bzw. Kermit
befolgen, pfuschen in den Datenstrom rein, addieren Header und Zeitstempel
in ihren Logfiles oder verschlucken sich an nichtdruckbaren Zeichen.

Ich würde gerne die Schnittstelle konfigurieren (analog zu MODE
COM1:19200,N,8,1,P), ein "Start"-Knöpferl drücken, die Daten rüberschieben
und dann auf "Stop" klicken.

Termite mit dem Log_File.flt und Hex_View.flt Filtern (s. auch
http://www.compuphase.com/software_termite.htm) kommt der Sache schon recht
nahe, leider schreibt Log_File.flt ungefragt einen Header, müßte also
umgeschrieben und neu compiliert werden. Außerdem bleibt Termite.exe als
Zombieprozeß im Speicher, wenn man das [X] in der Titelzeile des Fensters
anstatt den "Close"-Knopf klickt und gibt die Handles auf den COM-Port
nicht mehr her.

Von daher wäre ein Open-Source-Freeware-Projekt recht, das ohne großes
Installationsklimbim ein portables .exe erzeugt.

Zu viele Wünsche auf einmal? Danke für hilfreiche Ratschläge!

Gruß,
Voker

P.S.: Ja, PJ Naughters CSerial Klasse ist bekannt. Ich wollte das Rad aber
(zunächst) nicht neu erfinden.

--
@: I N F O at B A R T H E L D dot N E T
3W: www.bartheld.net

Edzard Egberts

unread,
Feb 9, 2012, 5:07:14 AM2/9/12
to
Volker Bartheld schrieb:

> Retrocomputingprojekt muß ich via RS232 im PC binäre Daten
> empfangen und unverändert als Datei ablegen.

> Ich würde gerne die Schnittstelle konfigurieren (analog zu MODE
> COM1:19200,N,8,1,P), ein "Start"-Knöpferl drücken, die Daten rüberschieben
> und dann auf "Stop" klicken.

Wenn ich mich recht entsinne, sind Tools aber nicht wirklich retro. Das
ging damals mit Kommandozeile, erst mit mode einstellen und dann "copy
COM1 datei.bin" auf dem Zielrechner starten und mit "copy datei.bin
COM1" auf dem Quellrechner die Daten losschicken. Wenn die angekommen
sind, beendet sich das copy auf dem Zielrechner und die Datei wurde
angelegt.

Volker Bartheld

unread,
Feb 9, 2012, 5:14:58 AM2/9/12
to
Hallo!

>> Retrocomputingprojekt muß ich via RS232 im PC binäre Daten
>> empfangen und unverändert als Datei ablegen.

> Wenn ich mich recht entsinne, sind Tools aber nicht wirklich retro.

Von Retrotools war ja auch nicht die Rede, sondern von Retrocomputing. Und
einen Sinclair ZX Spectrum BJ. 1982 könnte man durchaus als etwas angejahrt
bezeichnen. Dadrauf soll ein von mir entwickeltes
Z80-Maschinensprachprogramm laufen, welches ZX Microdrive Cartridges
gepuffert einliest und via Interface 1 bzw. dessen RS232-Anschluß in
maximal großen Blöcken in den PC befördert, zwecks kompletter
non-retro-Virtualisierung in einem Emulator.

> Das
> ging damals mit Kommandozeile, erst mit mode einstellen und dann "copy
> COM1 datei.bin" auf dem Zielrechner starten

Bekannt. Ich könnte mir natürlich auch ein Loch in einen zugefrorenen
Baggersee pickeln, mich dort hineinstellen und dann mit einem brennenden
Fichtenzweig auspeitschen. ;-) Auf der PC-Seite darf es dann schon ein
bißchen komfortabler sein.

> und mit "copy datei.bin
> COM1" auf dem Quellrechner die Daten losschicken. Wenn die angekommen
> sind, beendet sich das copy auf dem Zielrechner und die Datei wurde
> angelegt.

Wie weiß denn der Zielrechner, "daß die Datei angekommen ist", wenn es kein
Protokoll gibt, sondern nur rund 150k (mal mehr mal weniger), die mit 8 Bit
binär rübergeblasen werden?

Ciao,
Volker

Edzard Egberts

unread,
Feb 9, 2012, 5:33:03 AM2/9/12
to
Volker Bartheld schrieb:
>>> Retrocomputingprojekt
> Sinclair ZX Spectrum BJ. 1982

Aha, jetzt weiß jeder genau, was Du brauchst.

> Open-Source-Freeware-Projekt

Na ja, das hier ist die Do-It-Yourself-Gruppe, kannst du außer
Z80-Maschinensprache noch etwas PC-tauglicheres?

> Ich könnte mir natürlich auch ein Loch in einen zugefrorenen
> Baggersee pickeln, mich dort hineinstellen und dann mit einem brennenden
> Fichtenzweig auspeitschen. ;-)

Das ist sicherlich auch unterhaltsam. ;o)

>> und mit "copy datei.bin
>> COM1" auf dem Quellrechner die Daten losschicken. Wenn die angekommen
>> sind, beendet sich das copy auf dem Zielrechner und die Datei wurde
>> angelegt.
>
> Wie weiß denn der Zielrechner, "daß die Datei angekommen ist", wenn es kein
> Protokoll gibt, sondern nur rund 150k (mal mehr mal weniger), die mit 8 Bit
> binär rübergeblasen werden?

Keine Ahnung, muss am copy liegen. Ich habe das seit mindestens 25
Jahren nicht mehr gemacht und bin mir nicht sicher, ob ich damals schon
wußte, was ich da mache...

Stefan Kuhr

unread,
Feb 9, 2012, 6:06:13 AM2/9/12
to
Hallo Volker,

On 2/9/2012 11:14 AM, Volker Bartheld wrote:
> Hallo!
> <snip>
> Von Retrotools war ja auch nicht die Rede, sondern von Retrocomputing. Und
> einen Sinclair ZX Spectrum BJ. 1982 könnte man durchaus als etwas angejahrt
> bezeichnen. Dadrauf soll ein von mir entwickeltes
> Z80-Maschinensprachprogramm laufen, welches ZX Microdrive Cartridges
> gepuffert einliest und via Interface 1 bzw. dessen RS232-Anschluß in
> maximal großen Blöcken in den PC befördert, zwecks kompletter
> non-retro-Virtualisierung in einem Emulator.
>

Oooch is des geil! Wenn's da mal Doku oder Fotos oder so davon gibt oder
eine Webseite von dem Projekt, dann moechte ich gerne darueber lesen.

--
S

frank paulsen

unread,
Feb 9, 2012, 6:19:09 AM2/9/12
to
Edzard Egberts <ed...@tantec.de> writes:

> Volker Bartheld schrieb:
>>
>> Wie weiß denn der Zielrechner, "daß die Datei angekommen ist", wenn es kein
>> Protokoll gibt, sondern nur rund 150k (mal mehr mal weniger), die mit 8 Bit
>> binär rübergeblasen werden?
>
> Keine Ahnung, muss am copy liegen. Ich habe das seit mindestens 25
> Jahren nicht mehr gemacht und bin mir nicht sicher, ob ich damals
> schon wußte, was ich da mache...

copy ohne '/b' sollte beim ersten auftauchen von EOF (0x1A, Strg+Z)
terminieren.

aber ich habe das seit ewigkeiten nicht mehr ausprobiert.

--
frobnicate foo

Volker Bartheld

unread,
Feb 9, 2012, 6:51:08 AM2/9/12
to
Hallo!

>>>> Retrocomputingprojekt
>> Sinclair ZX Spectrum BJ. 1982
> Aha, jetzt weiß jeder genau, was Du brauchst.

Das schrieb ich schon vorher. War "[...] via RS232 im PC binäre Daten
empfangen und unverändert als Datei ablegen. [...] wäre ein
Open-Source-Freeware-Projekt recht, das ohne großes Installationsklimbim
ein portables .exe erzeugt [...]" zu unpräzise?

> > Open-Source-Freeware-Projekt

> Na ja, das hier ist die Do-It-Yourself-Gruppe,

... die freilich lieber das Rad neu erfindet, als Tools nutzt und deswegen
auch keinen diesbezüglichen Tip geben kann? Ich hätte schon gedacht, daß
hier gelegentlich ein bißchen auf Ports gearbeitet wird.

> kannst du außer Z80-Maschinensprache noch etwas PC-tauglicheres?

U. a. C/C++/C#/VB(A)/Perl/JS/Java/DOS-Batchskripte/x86- und ATMegaAssembler

Ich fragte aber nach einem Tool, welches der eine oder andere hier
möglicherweise benutzt.

>> Wie weiß denn der Zielrechner, "daß die Datei angekommen ist", wenn es kein
>> Protokoll gibt, sondern nur rund 150k (mal mehr mal weniger), die mit 8 Bit
>> binär rübergeblasen werden?

> Keine Ahnung, muss am copy liegen.

Es da entweder irgendeine Protokollaushandlung oder man muß manuell
beenden.

copy con test.bin

z. B. benötigt ein ^M um die Datei erfolgreich zu schreiben, ^C bricht ab.

Vielleicht funktioniert

MODE COM1:19200,N,8,1,P
COPY COM1 out.bin

tatsächlich unter Win32, ich frage mich aber, was geschieht, wenn die
Gegenstelle ^M schickt bzw. wie man den Flush in out.bin auslöst. Und so
richtig geil ist das ja auch nicht, keine Statusanzeige der
Handshakeleitungen am Port, kein Feedback zum Übertragungsstatus, keine
Infos ob etwaiger Modifikationen der transferierten Daten.

Volker Bartheld

unread,
Feb 9, 2012, 6:52:19 AM2/9/12
to
Hallo!

>> ["copy COM1 datei.bin"]

On Thu, 09 Feb 2012 12:19:09 +0100, frank paulsen wrote:
> copy ohne '/b' sollte beim ersten auftauchen von EOF (0x1A, Strg+Z)
> terminieren.

... und ist damit untauglich zum Empfang binärer Datenströme.

Volker Bartheld

unread,
Feb 9, 2012, 7:03:24 AM2/9/12
to
Servus Stefan!

>> Von Retrotools war ja auch nicht die Rede, sondern von Retrocomputing. Und
>> einen Sinclair ZX Spectrum BJ. 1982 könnte man durchaus als etwas angejahrt
>> bezeichnen. Dadrauf soll ein von mir entwickeltes
>> Z80-Maschinensprachprogramm laufen, welches ZX Microdrive Cartridges
>> gepuffert einliest und via Interface 1 bzw. dessen RS232-Anschluß in
>> maximal großen Blöcken in den PC befördert, zwecks kompletter
>> non-retro-Virtualisierung in einem Emulator.

On Thu, 09 Feb 2012 12:06:13 +0100, Stefan Kuhr wrote:
> Oooch is des geil!

Ich fands auch ausgesprochen lässig.

Der Status Quo: Composite-Out gepatcht, Mini-TFT-Monitor von Rückfahrkamera
angeschlossen, RS232-Kabel gelötet, Daten, d. h. Code und Programme
erfolgreich hin- und herübertragen (spxfr), Maschinencode ist fertig
(tniASM, Zilog Z80 Handbuch, bintap), läuft auf dem Emulator (WinZ80). Der
(emulierte) RS232-Output ist plausibel, deckt sich mit dem .mdr-Format des
Emulators. Es werden ca. 5 Umläufe des Bandes benötigt, Prüfsummenbildung,
topologische Anzeige des Sektorzustandes, Statusanzeige, etc. ist
implementiert. Codelänge ca. 850 Bytes (!). Vier Wochenenden.

> Wenn's da mal Doku oder Fotos oder so davon gibt oder
> eine Webseite von dem Projekt, dann moechte ich gerne darueber lesen.

Kein Thema. Das ist sowieso geplant und ein Coderelease als "Open Source".
Der Speccy sieht zwar außen fernab von original aus (externe
QWERTY-Tastatur mit DIN-Rundstecker, PC-Gehäuse, am Edge-Connector
aufgelötete Goldkontakte, externer Spannungsregler, ...), innen werkelt
aber die originale "Issue 2" samt ULA und Z80A mit Multiface One und
allem, was sonst noch so dazugehört.

Die Cartridges sind lesbar, leiden unter zerbröselnden Andruckfilzen, das
kann man aber mit ein bißchen Kontaktkleber und Fingerspitzengefühl fixen.

Spannende Sache. Und gar nicht mal kleine Interessensgruppe.

Viele Grüße,
Vol"(C) 1982 Sinclair Research Ltd."ker

Volker Bartheld

unread,
Feb 9, 2012, 7:05:10 AM2/9/12
to
Hallo!

>>>> Retrocomputingprojekt
>> Sinclair ZX Spectrum BJ. 1982
> Aha, jetzt weiß jeder genau, was Du brauchst.

Das schrieb ich schon vorher. War "[...] via RS232 im PC binäre Daten
empfangen und unverändert als Datei ablegen. [...] wäre ein
Open-Source-Freeware-Projekt recht, das ohne großes Installationsklimbim
ein portables .exe erzeugt [...]" zu unpräzise?

> > Open-Source-Freeware-Projekt

> Na ja, das hier ist die Do-It-Yourself-Gruppe,

... die freilich lieber das Rad neu erfindet, als Tools nutzt und deswegen
auch keinen diesbezüglichen Tip geben kann? Ich hätte schon gedacht, daß
hier gelegentlich ein bißchen auf Ports gearbeitet wird.

> kannst du außer Z80-Maschinensprache noch etwas PC-tauglicheres?

U. a. C/C++/C#/VB(A)/Perl/JS/Java/DOS-Batchskripte/x86- und ATMegaAssembler

Ich fragte aber nach einem Tool, welches der eine oder andere hier
möglicherweise benutzt.

>> Wie weiß denn der Zielrechner, "daß die Datei angekommen ist", wenn es kein
>> Protokoll gibt, sondern nur rund 150k (mal mehr mal weniger), die mit 8 Bit
>> binär rübergeblasen werden?

> Keine Ahnung, muss am copy liegen.

Es gibt da entweder irgendeine Protokollaushandlung oder man muß manuell
beenden.

copy con test.bin

z. B. benötigt ein ^M um die Datei erfolgreich zu schreiben, ^C bricht ab.

Vielleicht funktioniert

MODE COM1:19200,N,8,1,P
COPY COM1 out.bin

tatsächlich unter Win32, ich frage mich aber, was geschieht, wenn die
Gegenstelle ^M schickt bzw. wie man den Flush in out.bin auslöst. Und so
richtig geil ist das ja auch nicht, keine Statusanzeige der
Handshakeleitungen am Port, kein Feedback zum Übertragungsstatus, keine
Infos ob etwaiger Modifikationen der transferierten Daten.

Edzard Egberts

unread,
Feb 9, 2012, 7:22:38 AM2/9/12
to
Volker Bartheld schrieb:
> Hallo!
>
>>>>> Retrocomputingprojekt
>>> Sinclair ZX Spectrum BJ. 1982
>> Aha, jetzt weiß jeder genau, was Du brauchst.
>
> Das schrieb ich schon vorher. War "[...] via RS232 im PC binäre Daten
> empfangen und unverändert als Datei ablegen. [...] wäre ein
> Open-Source-Freeware-Projekt recht, das ohne großes Installationsklimbim
> ein portables .exe erzeugt [...]" zu unpräzise?

Ja natürlich, da fragt man sich doch sofort, wofür *genau* das gut sein
soll und ob man das nicht anders/einfacher lösen kann. Eine typische
Usenet-Antwort wäre dann der Hinweis auf einen fertigen Z80-Emulator
gewesen, so dass Du nicht mehr basteln musst, sondern weiter Löcher ins
Eis pinkeln kannst.

> ... die freilich lieber das Rad neu erfindet

bzw. lieber die genau passende Anwendung schreibt.

> U. a. C/C++/C#/VB(A)/Perl/JS/Java/DOS-Batchskripte/x86- und ATMegaAssembler

Und wo ist jetzt das Problem?
>
> Ich fragte aber nach einem Tool, welches der eine oder andere hier
> möglicherweise benutzt.

MinGW + Eclipse.

Volker Bartheld

unread,
Feb 9, 2012, 7:28:37 AM2/9/12
to
Hallo!

>> Das schrieb ich schon vorher. War "[...] via RS232 im PC binäre Daten
>> empfangen und unverändert als Datei ablegen. [...] wäre ein
>> Open-Source-Freeware-Projekt recht, das ohne großes Installationsklimbim
>> ein portables .exe erzeugt [...]" zu unpräzise?

> Ja natürlich, da fragt man sich doch sofort, wofür *genau* das gut sein
> soll und ob man das nicht anders/einfacher lösen kann. Eine typische
> Usenet-Antwort wäre dann der Hinweis auf einen fertigen Z80-Emulator
> gewesen, so dass Du nicht mehr basteln musst, sondern weiter Löcher ins
> Eis pinkeln kannst.

Genau welches Problem würde denn dieser Emulator lösen? Oder anders
gefragt: Nenne mir einen Emulator, der in der Lage ist, den Dateninhalt
existenter, realer Microdrive Cartridges irgendwie in ein nutzbares Abbild
zu überführen. Wohlgemerkt: Es handelt sich um _meine_ Daten, nicht
irgendwelches kommerzielles Zeugs, was 1000 Andere vor mir schon
transferiert haben.

Vielleicht mißverstehen wir uns ja gewaltig, aber mir drängt sich der
Schluß auf, daß Du keine Ahnung von der Materie hast.

>> U. a. C/C++/C#/VB(A)/Perl/JS/Java/DOS-Batchskripte/x86- und ATMegaAssembler
> Und wo ist jetzt das Problem?

Daß ich das Rad auf der PC-Seite nicht neu erfinden will.

>> Ich fragte aber nach einem Tool, welches der eine oder andere hier
>> möglicherweise benutzt.
> MinGW + Eclipse.

OK. Danke für diesen neuerlichen Beweis.

Edzard Egberts

unread,
Feb 9, 2012, 8:22:48 AM2/9/12
to
Volker Bartheld schrieb:
>>> U. a. C/C++/C#/VB(A)/Perl/JS/Java/DOS-Batchskripte/x86- und ATMegaAssembler
>> Und wo ist jetzt das Problem?
>
> Daß ich das Rad auf der PC-Seite nicht neu erfinden will.

Das ist keine Erfindung, sondern eine Fingerübung, damit könntest Du
schon fertig sein.

>> MinGW

Damit kannst Du "ohne großes Installationsklimbim ein portables .exe
erzeug(en)"
Message has been deleted

Volker Bartheld

unread,
Feb 10, 2012, 3:53:09 AM2/10/12
to
Hallo!

On Thu, 09 Feb 2012 20:49:02 +0100, Ulrich Witte wrote:
> Hast du schon mal bei codeguru.com bzw. codeproject.com nachgeschaut?
> Da sollte sich doch was finden lassen.

Die Tools die mir dort untergekommen sind, fungieren eher wie ein
klassisches Terminal, d. h. sie arbeiten mit druckbaren Zeichen und
unterstützen bestenfalls noch X/Y/Zmodem und Kermit.

Neben einem Termite-Klon (Termie, s. auch [1]), der aber leider keine
Plugins wie den notwendigen Log_File.flt oder ein simples "send to file"
kann, gäbe es noch CommSpy [2], der aber den "Man-in-the-Middle"-Ansatz
verfolgt, in meinem Fall unzweckmäßig.

Natürlich PJ Naughters CSerial-Klasse ([3], die ich nach erfolgreichem Test
in einem eigenen Tool nutzen werde) und ein paar Grundlagenartikel [4].

Kurz: Ja, ich habe nachgeschaut - aber irgendwie Pichts passendes gefunden.
Passend im Sinne von "einfach compilieren oder starten und tut im Großen
und Ganzen das was ich will". Klar, selber programmieren geht immer,
dauert auch gar nicht so lang, aber das kommt später, wenn ich abschätzen
kann, ob es sich lohnt.

Ich werde also wohl Termie nehmen, den Logfile-Filter umbasteln und damit
leben, daß beim Druck auf [X] ein Zombieprozes im Speicher bleibt
(vermutlich OnClose()/OnDestroy() nicht richtig behandelt).

>> Gruß,
>> Voker

> Da ist schon ein Zeichen verlorengegangen ;-)

Da siehste mal! Und das trotz TCP/IP/NNTP. Der Weltuntergang ist nah. ;-)

Grüe,
Vke~r

[1] http://www.codeproject.com/Articles/23656/Termie-A-Simple-RS232-Terminal
[2] http://www.codeguru.com/Cpp/I-N/network/article.php/c2461
[3] http://www.naughter.com/serialport.html
[4] http://www.codeguru.com/cpp/i-n/network/serialcommunications/article.php/c5425

Thorsten Albers

unread,
Feb 10, 2012, 9:12:41 AM2/10/12
to
Volker Bartheld <dr_ve...@freenet.de> schrieb im Beitrag
<1cikpskrwcdq0$.d...@news.bartheld.net>...
> Ich werde also wohl Termie nehmen, den Logfile-Filter umbasteln und damit
> leben, daß beim Druck auf [X] ein Zombieprozes im Speicher bleibt
> (vermutlich OnClose()/OnDestroy() nicht richtig behandelt).

Hast Du Dir schon 'mal "LapLink" angeschaut? Auch wenn das heute mehr unter
Fernsteuerungs-Software läuft, gehört dazu meiner Erinnerung nach auch ein
recht umfangreiches Tool für Datenübertragungen direkt von PC zu PC.

--
Thorsten Albers

gudea at gmx.de

Volker Bartheld

unread,
Mar 4, 2012, 3:17:46 AM3/4/12
to
Hallo!

>> Wenn's da mal Doku oder Fotos oder so davon gibt oder
>> eine Webseite von dem Projekt, dann moechte ich gerne darueber lesen.

[Update]

Website hats noch nicht, aber unter der Message-ID:
<vxeiw9fgl8la$.d...@news.bartheld.net> im Thread "The Sinclair ZX
Microdrive Resurrection Project (long)" (comp.sys.sinclair) habe ich erste
Erkenntnisse zusammengefaßt. Die diskutierte Software (Z80-Maschinencode,
BASIC-Loader, C++ Analyse- und Reparaturtool für den PC) gibts temporär
unter: www.bartheld.net/temp/mdv2img.zip zum Download.

Wer vom Spectrum-Filesystem eine Ahnung hat oder Algorithmen zur
Fehlerkorrektur/Regeneration der Cartridge-Abbilder beisteuern kann, ist
herzlich eingeladen.

Viele Grüße,
Volker

P.S.: Der angesprochene Fehler im Termite-Terminalprogramm ist auf meinen
Hinweis inzwischen gefixt, ebenso kann man mit dem Logfile-Filter nun
unmodifizierte Binärdumps von der RS232 abspeichern
(http://www.compuphase.com/software_termite.htm).
0 new messages