In Entwicklung: SIO2IP

1, 2

Re: In Entwicklung: SIO2IP

von skriegel » Fr 3. Jan 2014, 17:53
Sven hat geschrieben:Den Beiträgen entnehme ich, dass ich mich mal mit SpartaDOS beschäftigen sollte...


Ich glaube, die Gemengelage ist da eher gemischt. Wer SpartaDOS sagt, muss wohl auch MyDOS sagen, um alle zu beglücken. Aber wegen mir gerne SpartaDOS. ;)

EDIT: SpartaDOS ist für die ausschließliche Modulnutzung vorgesehen?!

Nein, es gibt verschiedene Möglichkeiten. Kleiner Überblick: http://sdx.atari8.info/index.php?show=en_hardware

Walter kann Dir da deutlich mehr zu sagen, er kennt und nutzt SpartaDOS seit mittlerweile 200 Jahren. Mindestens. ;)

Re: In Entwicklung: SIO2IP

von Sven » Fr 3. Jan 2014, 18:11
Dann schiebe ich das Thema noch etwas nach hinten... mir fehlt etwas die Zeit noch irgendwie ein lauffähiges Modul zum Testen hinzubekommen. Zumal ich davon ausgehe, dass die Realisierung / Unterstützung der RTC für Spartados recht einfach zu machen sein sollte.

Konzentriere ich mich mal weiter auf mein DHCP-Timing-Problem...

Re: In Entwicklung: SIO2IP

von Sven » Sa 4. Jan 2014, 15:50
Mal eine Frage am Rande:
damit ich beim Debuggen etwas schneller bin wäre eine Unterstützung eines Emulators per SIO2USB hilfreich.
Sprich: ich möchte gerne über einen Emulator eine Floppy / SIO2IP direkt ansprechen wollen.

Gibt es sowas?

Re: In Entwicklung: SIO2IP

von HiassofT » Sa 4. Jan 2014, 16:48
Sven hat geschrieben:Sprich: ich möchte gerne über einen Emulator eine Floppy / SIO2IP direkt ansprechen wollen.

Gibt es sowas?

Der Atari++ kann das: http://www.xl-project.com/

Zumindest unter Linux, vor einer halben Ewigkeit hab ich Thomas dabei geholfen meinen AtariSIO Treiber in Atari++ einzubinden.

so long,

Hias

Re: In Entwicklung: SIO2IP

von Sven » So 5. Jan 2014, 00:19
Ich möchte die Gelegenheit einmal nutzen und anhand eines kleinen Videos einmal zeigen was genau ich eigentlich vorhabe. Obwohl die Funktionen derzeit noch recht übersichtlich sind hier der tagesaktuelle Stand:

* DHCP beim Einschalten des ATARI
Es wird beim Einschalten sofort (noch vor dem Booten der Disk) eine DHCP-Abfrage initiiert. Dadurch stehen eine IP-Adresse, Subnet-Mask, DNS-Server bereits zur Verfügung. Alternativ ist eine statische Konfiguration möglich. [Traummodus]Anwendungsfall wäre vielleicht später einmal: Lesen von 3 Sektoren von Disk, der Rest wird per Ethernet irgendwo heruntergeladen [/traummodus]

* NTP-Abfrage
Über einen einstellbaren NTP-Server kann aus dem Netz die aktuelle Einstellung für Datum / Uhrzeit geholt werden.

* DNS-Abfrage
Auflösung von Hostnamen in IP-Adressen.

Derzeit ist alles noch über den D:-Handler realisiert, was das Testen deutlich einfacher macht.

Vielleicht ist jetzt etwas klarer, was SIO2IP eigentlich ist, bzw. mal werden soll und welche Möglichkeiten irgendwann einmal verfügbar sind :)

Gruß
Sven

<-- Flash-Movie (rechtsklick, abspielen)
PS: Sorry für die bescheidene Qualität - mir fehlt da wohl etwas die Professionalität ;)

Re: In Entwicklung: SIO2IP

von Sven » So 5. Jan 2014, 00:52
HiassofT hat geschrieben:
Sven hat geschrieben:Sprich: ich möchte gerne über einen Emulator eine Floppy / SIO2IP direkt ansprechen wollen.

Gibt es sowas?

Der Atari++ kann das: http://www.xl-project.com/

Zumindest unter Linux, vor einer halben Ewigkeit hab ich Thomas dabei geholfen meinen AtariSIO Treiber in Atari++ einzubinden.

so long,

Hias


Bekomme das nicht ans Laufen... der Emulator bootet nicht und nix passiert... :(

Re: In Entwicklung: SIO2IP

von Sven » So 3. Mai 2015, 17:16
Ich muss mal etwas die Hosen runter lassen... bitte nicht hinschauen ;)

In der Entwicklung von ATARI Hard- und Software bin ich ja nicht gerade eine Leuchte.
Daher würde ich gerne meine Erfahrungen in Bezug auf dieses Projekt gerne mal zur Diskussion stellen, damit am Ende nicht totaler Murks raus kommt. Insbesondere, da ich eh kaum dazu komme in Ruhe weiterzuentwickeln. Sollte ich irgendwann mal fertig werden sollte es schon Sinn machen.

1.) Kommunikation
Generell läuft die SIO-Kommunikation mit den 19020 Baud oder alternativ per Speeder mit Index-Byte >=3. Hier habe ich derzeit nur eine Highspeed-Geschwindigkeit hardcoded, könnte man aber sicherlich auch per SW einstellen. Ich nutze zwar bereits das Clock-Signal am SIO für die Bestimmung der Geschwindigkeit (High/Low), es reicht aber noch nicht für das automatische Einstellen des SIO-Speeds (=Todo-Liste).
Als Protokoll nutze ich derzeit das des SIO2USB, hat aber den derzeitigen Nachteil, das die Datenmenge pro Block limitiert ist. Ziel soll es später sein, alle Daten im Buffer des SIO2IP auf einmal auslesen zu können. Allerdings hat es den Vorteil, das die Anzahl der Nutzbytes im Header des Frames enthalten sind. Eine sinnvolle Größe des Buffers wäre auch noch zu bestimmen um den ATARI nicht auf einmal mit 64k Daten zu überrollen, eine derzeitige MTU von etwa 1500 Bytes als Basis.

2.) IP-Socket
Zunächst hatte ich vor, verschiedene Sockets parallel zu unterstützen, habe bisher aber nur Einen zum Testen am Laufen. Wie viele es werden können habe ich derzeit noch nicht errechnet, denke das ich da etwas in Trouble mit dem Speicher komme. Mindestens 2 sollten es später schon sein um eine Art Token-Ring-Kommunikation hinzubekommen ohne zu viele Datenpakete bearbeiten zu müssen. Eine Selektion des Sockets hat natürlich auch Auswirkung auf das nachfolgende Protokoll, z.B. sende Daten über Socket 1, Abfrage an welchem Socket Daten empfangen wurden...

3.) Aufbau Socket
Zunächst wird eine IPv4-Adresse benötigt, die im Vorfeld per DNS-Abfrage ermittelt wird.
Danach wird ein Open-Request mit den 4 Bytes der Zieladresse, sowie des Zielports losgeschickt. Der ATARI bekommt ein OK wenn der Request erfolgreich war. Hier scheint es sporadisch noch ein Timing-Problem zu geben (-> Todo-Liste)

4.) Datentransfer
Nachdem der Socket aufgebaut ist können die Daten übertragen werden. Hierzu wird die komplette URL an SIO2IP gesendet, der ATARI bekommt wieder ein OK. Hier habe ich bewusst nicht auf die Antwort der Gegenseite gewartet, da mitunter viele Millisekunden zusammen kommen können bevor die Antwort da ist was ein sinnvolles Arbeiten mitunter verhindert, da der ATARI immer bis zu einer Antwort warten müsste.

Wird eine Antwort empfangen, legt SIO2IP für 100ms (=to be discussed) einen H-Pegel auf den PIN13 (Interrupt) des SIO-Ports. Die Daten können dann vom ATARI ausgelesen werden. Ein Risiko wäre hier natürlich, dass bei mehreren SIO2IPs im SIO-BUS der ATARI keine Info bekommt von welchem Device er Daten holen müsste.

Und hier stehe ich gerade im Projekt. Ziel derzeit ist, zunächst eine Abfrage über die Anzahl der Bytes zu machen und diese in einem 2. Schritt abzurufen. Dies hätte aber den Nachteil, dass immer mind. 2 Kommunikationen erfolgen müssten. Alternativ könnte man vielleicht wie oben genannt immer eine feste Länge an Frame verschicken und wenn der Payload des Frames =128 Bytes ist einen weiteren Frame "nachlesen". Das wäre nun ein weiterer Diskussionspunkt, denn der Payload hängt stark von der Applikation ab (z.B. Chat-Nachrichten sind kurz, HTML-Files mitunter richtig groß).

5.) Abbau Socket
Der Socket wird per Command regulär geschlossen.

6.) Priorisierung
Derzeit ist eigentlich die Bearbeitung von SD-Card-Anfragen höher priorisiert als die von IP-Paketen (ein Ethernet-Paket wird intern bearbeitet). Dies bedeutet: findet eine schnelle und permanente Aktion mit der SD-Card statt (z.B. laden von großen Dateien), besteht die Gefahr, Ethernet-Pakete nicht zu bearbeiten. Die Gefahr sehe ich zwar nicht ganz so gefährlich, da die bisherigen Tests eigentlich gezeigt haben, dass ein normaler Ping mit einer höheren Payload durchaus noch weitestgehend sauber durchgeht, aber natürlich einiges an Delay entsteht.


Fazit:
Einige Punkte sind sicherlich diskussionswürdig, insbesondere was den Ablauf der SIO-Kommunikation betrifft. Hier wäre es super, wenn ich euer Feedback bekommen könnte. Einerseits zur Abfolge der Kommunikation, andererseits zum Protokoll selbst.
Ein solches Stück HW macht ja nur Sinn wenn man es vernünftig nutzen kann.

Danke für's Lesen ;)

Liebe Grüße
Sven

Re: In Entwicklung: SIO2IP

von Chris » So 3. Mai 2015, 19:04
Cooles Projekt, für mich wäre wichtig, dass ich aus WUSDN auf dem PC heraus das Binary direkt zum Atari schicken und ausführen lassen könnte.

Re: In Entwicklung: SIO2IP

von Sven » So 3. Mai 2015, 19:43
Den Usecase habe ich auch im Hinterkopf... Denke da an eine (t)ftp-Unterstützung. Aber erstmal den Hauptteil als Fliegen bekommen ;)
1, 2