Schlagwort: Processing

Neue Version der Applikation mit Multiplatform Support

Ich war mal wieder fleißig und habe in das Frontend Support für Linux und Raspberry Pi hinzugefügt. Ebenso das Interface mit hübscheren Buttons versehen und etwas schlanker gemacht.app_0967

Die App setzt auf allen Systemen eine saubere Java Runtime Envoronment (JRE) 8.x Installation voraus. Ich habe auf folgenden Platformen getestet:
Raspberry Pi 3 Model B, Ubuntu 16.04.1 Desktop amd64, Windows 7 32 bit, Windows XP Home, Windows 10 Home.

Bei WIndows XP und vermutlich Vista ist darauf zu achten das man die Seriellen Treiber für den Teensy installiert – http://www.pjrc.com/teensy/td_download.html

Bei Linux sollte man die udev rules installieren weil man sonst ohne root rechte nicht auf den seriellen Port des Teensy zugreifen kann.

Die App gibts im Download Bereich.

Have Fun!

kleines Update

Da der Schreibmodus nun funktioniert habe ich nun auch Verify eingebaut, nach dem Schreiben eines Track wird dieser gelesen und mit den zu schreibenden Daten verglichen, bei Unterschieden oder schlimmeren wird der Track nochmal geschrieben und geprüft, maximal 10 Mal, falls es dann immer noch nicht geklappt hat bricht der Schreibvorgang ab. So eine Diskette sollte man besser entsorgen.

Das Frontend hab ich grafisch auch überholt und etwas hübscher und kompakter gestaltet, aber seht selbst.

frontend02

Frontend für den PC

 

Nachdem es nun eine Wochen ruhig waren hier ein weiteres Update, ich war ja nicht untätig, nur zu faul zum bloggen ;)frontend01

Da ich mich irgendwie mit keiner IDE für C++ anfreunden konnte und ich unter Windows eigentlich noch nie was mit C++ und GUI gemacht habe hab ich zu Processing 3.0 gegriffen, damit hatte ich schon mal ein Frontend für ein Projekt geschrieben und Erfahrungen gesammelt. Processing ist ein Java Dialekt mit kompletter IDE, vielen Grafikbefehlen und einer großen Library Base. Ich bin zwar kein JAVA Spezialist, aber passt schon, Google ist mein Freund, und während meines Studiums hatte ich viel mit Modula zu tun und irgendwie sind sich ja alle Imperativen Programmiersprachen sehr ähnlich :)

Das Interface brauch noch ein bischen Liebe, aber für erste Ergebnisse reichts.

  • „getName“ liest den Volumename der Diskette
  • „Save As“ öffnet einen Requester um den Speicherort und Namen festzulegen
  • „Dump“ liest von Start Track bis End Track eine Amigadisk ein und speichert sie als .adf
  • „Abort“ bricht den Lesevorgang ab.
  • „Read“ liest einen Track und zeigt im Infofenster an wieviel Sektoren gefunden wurden, ist noch zu Debugzwecken drinne
  • Im Infofenster wird angezeigt bei welchem Track gerade gelesen wird, Fehler usw.

Unten wird die Häufung der Transitionen angezeigt, je heller desto mehr, hier kann man sehen das die Transitionen in der Regel etwas kürzer sind, bzw. die alte Flinte ganz schön streut. Ob ich da irgendwo einen Rechenfehler gemacht habe, sodaß die Transitionen oft kürzer als die Norm sind, keine Ahnung, vielleicht kümmer ich mich später nochmal darum. Man sieht hier auch viele Streubits, ich vermute das das Murks aus dem Trackgap ist.

Die Einstufung der Transitionen mache ich momentan wie folgt:

  • unter 1,5µs wird verworfen
  • 1,51µs bis 4,83µs ist eine ’10‘
  • 4,84µs bis 6,70µs ist eine ‚100‘
  • 6,71µs bis 8,58µs ist eine ‚1000‘
  • alles darüber wird verworfen

Die magenta Linien im Graph zeigen an das mehrere Leseversuche nötig waren um den Track zu lesen, ich prüfe ob ein Track 11 Sektoren enthält, dann ob die beiden Checksummen stimmen. Wenn etwas davon nicht stimmt wird der Track nochmal gelesen. Maximal macht der Mikrocontroller bisher 10 Versuche einen Track zu lesen, wenn der 10te auch fehlschlägt wird der Track so übertragen wie er ist und dem Frontend gemeldet in welchen Sektoren welche Checksummen nicht stimmen.

Wie man sieht ist diese Diskette ziemlich an der Grenze und besitzt schon einige Weak Tracks, wurde aber noch „korrekt“ ausgelesen. Da die Checksummen aus den MFM Daten per XOR generiert werden können sich hier natürlich Fehler einschleichen die nicht erkannt werden, von daher ist das „korrekt“ mit Vorsicht zu geniessen. Auf DOS Ebene gibt es noch mehr Checksummen, aber viele Spiele benutzen gar keine Filesystemfunktionen sondern benutzen das Trackdisk.device direkt. Damals gab es Kopierschutzverfahren die die Checksummen absichtlich falsch geschrieben haben, in den ungenutzten 16 Bytes im Header Informationen speicherten oder sonstwie am Header manipuliert haben, ein normales Copytool oder die Workbench konnte so eine Disk nicht kopieren. Ebenso gab es Spiele die ein andere Syncword benutzten, Sachen in die Trackgap schrieben, in GCR codiert waren, Laserlock benutzten, Track 80-82 benutzten usw., es gab ne Menge was sie machen konnten um die Piraten auf Abstand zu halten. Irgendwann wurde alles irgendwie geknackt, aber nicht jeder Normalo konnte mal eben ein Spiel im Laden kaufen und zig Kopien an seine Freunde auf dem Schulhof verteilen.

Aber ich will eh kein Kopierprogramm für geschützte Software schreiben sondern nur für Disketten die ohne Kopierschutz daher kommen, selbst nach 20 Jahren könnte das Eis dünn sein auf dem man sich da bewegt da es in Deutschland ja mittlerweile Strafbar ist einen Kopierschutz zu umgehen. Das war die subtile Maßnahme unserer Regierung das Recht auf Privatkopie im Urhebergesetz  § 53 Absatz 1 Satz 1 auszuhebeln ohne es anzufassen. Sie haben einfach ein neues geschaffen was die Umgehung technischer Schutzmaßnahmen §§ 95a ff. UrhG (DE) unter Strafe stellt. Allerdings lässt sich über die Formulierung „Wirksame technische Maßnahmen“ streiten :) Naja, sie treiben die Kohle ja eh über GEMA und ZPÜ ein, darüber kann man sich aber auch den Mund fusselig reden wenn man für die Digicam eine SD-Karte kauft und ZPÜ abdrücken muss weil man damit ja Urheberrechtlich geschütztes Material kopieren könnte, auf wiedersehen Unschuldsverdacht. :P