Ich habe hier ein altes DOS Programm das ein spezielles Diskettenformat lesen und schreiben kann. Ich möchte ein eigenes Programm schreiben das dieses Format ebenfalls lesen kann, die Software die ich habe ist nicht wirklich zu gebrauchen und wird nicht mehr weiterentwickelt. Ich suche jetzt eine Möglichkeit zur Laufzeit herauszufinden was das Programm macht, also vor allem welche Daten eingelesen werden. Gibt es ein Programm das wie ein Debugger die Werte die geschrieben / gelesen werden anzeigt? Das ganze ist wie gesagt eine DOS Anwendung, also 16Bit. Wird daher unter Windows XP emuliert. bin dankbar für jeden Tipp... Decompilieren habe ich schon versucht, jedoch ist das Programm ziemlich gross, und ich will nur die Diskettenzugriffe haben... mfg Andreas
Wenn es nicht mehr weiterentwickelt wird , probier doch mal mit dem Autor Kontakt aufzunehmen. Da wirst du merken ob er den Programmcode rausrückt oder Dir Hinweise gibt oder was er davon hält wenn du sein Programm auseinandernimmst. Zum auseinandernehmen, disassemblieren ist ohne erlaubnis absolut illegal. Genauso wie das suchen von Diskettenzugriffen per Interrupt oder Zugriffe auf die Diskettenports. Grauzone wäre , wenn du dich mit einem Interrupthandler an den Disketteninterrupt hängst oder mit Hardware an den Diskettenbus. Dies alles, wird dich aber wesentlich mehr Zeit kosten, als wenn du probierst die Disketten auszulesen und ihr Format zu erkennen. Möglicherweise bekommst du das mit Linux oder rawrite hin. Zur Not musst du dich mit dem Diskettencontroller auseinandersetzen. Die Frage die sich stellt ist, wenn die Software so alt ist und auch nicht wirklich zu gebrauchen ist, warum willst du dann diese Daten einlesen?
Ich glaube ich habe das Problem umgangen, das Programm braucht ein Dongle das es läuft, und unter Windows XP wurde der Dongle nicht erkannt, aber ich habe gemerkt das das Programm das die Dateien schriebt / liest auch ohne Dongle läuft... Aber noch zu deinen Fragen... >Die Frage die sich stellt ist, wenn die Software so alt ist und auch >nicht wirklich zu gebrauchen ist, warum willst du dann diese Daten >einlesen? Weil es hier um eine alte Maschine geht, die in dem Format schreibt, und diese Maschine funktioniert noch... Und das Problem beim Format waren die Adressen, es gibt ein Index, und die Dateien, die finde ich, aber den Zusammenhang fand ich nicht. Wenn man das ganze auf einem Diagramm aufzeichnet gibts eine gezackte Linie, also nichts lineares... mfg Andreas
>Weil es hier um eine alte Maschine geht, die in dem Format schreibt, >und diese Maschine funktioniert noch wie alt? ist es überhaupt eine Dos-Maschine oder was anderes? (CP/M...) was meinst du mit Format? Das Hardwareformat der Diskette (xxSpuren,YY sektoren etc.) oder das des darüberliegenden Dateisystems? In welcher Form kommst du an die Dateien heran und könntest du damit was anfangen? Es gibt da ja auch noch andere Kommunikationswege als Disketten, z.B. serielle Schnittstellen... Was ist sonst noch an Programmiersoftware auf dem Rechner vorhanden?
Das Alter müsste zwischen 10 und 15 Jahren sein.
Unter was für einem OS diese Maschiene läuft weiss ich nicht wirklich,
wir hatten zwei verschiedene Spezialisten da (Schulung und so) der eine
Sagte es sein ein Unix und der andere sagte Multitasking DOS.
Die Disketten sind normal beschrieben, also das Problem ist das
Dateisytem. Die Dateien sind normal als ASCII abgelegt, es hat ein
Index, dort stehen die Namen, Typ (Programm, Unterprogramm...) und eine
Adresse drin.
Jedoch kann ich die Adresse nicht der Datei zuordnen. Da gibt es irgend
eine Berechnung dazwischen, die fehlt mir...
Serielle Schnittstelle hat die Maschine (etwa 20 Stück... funktioniert
alles über Serielle Schnittstellen) es wäre auch möglich so Daten
auszutauschen, aber ich möchte nicht einen PC gleich neben die Maschine
stellen, und es müsste trozdem fast alles auf Disketten gespeichert
werden, die Maschine hat einen 64KB EEProm für Daten, und 64KB Ram,
dort können auch noch Daten abgelegt werden.
>Was ist sonst noch an Programmiersoftware auf dem Rechner vorhanden?
Die Maschine selbst hat einen Editor, indem man Programme schreiben
kann.
Für den PC gibts das gleich, für Dos, aber wie oben geschrieben habe
ich gemerkt das die exe die für das schreiben / lesen zuständig ist
auch ohne Dongle läuft, der Rest läuft nicht.
mfg Andreas
Bitte aeussere dich ,was du genau willst: Willst du nur die Dateien von der unbekannten Maschine, auf einen PC bekommen über Disketten oder bekommst du die Dateien problemlos auf den PC hast aber keine Ahnung wie das interne Format dieser Dateien ist und kannst deshalb die Daten nicht interpretieren/extrahieren? Mit anderen Worten willst du nur das Programm zum Lesen/schreiben der Disketten ersetzen oder das gesamte verdongelte Programm?
Die Dateien sind im ASCII Format, also einfacher Text, aber die Disketten sind nicht FAT formatiert, sondern was exotisches. Es geht darum Textdateien auf die Diskette zu schreiben oder zu lesen. Da aber das Programm das die Disketten schreiben / lesen kann ohne Dongle läuft kann ichs jetzt trotzdem schreiben und lesen (halt mit Dos GUI). Trotzdem noch eine verzippte Diskette im Anhang. Die Diskette enthält 100 Testdateien. Die Dateinamen sind T00 bis T99. Die Adresse des ersten Indexes ist 0x9600. Das erste Byte vor dem Namen "T64" mit dem Wert 1 ist der Typ der Datei, dabei steht 1 für Programm und 2 für Unterprogramm, den Rest brauche ich im Moment nicht. Hinter dem Dateienamen (immer 11 Zeichen, unbenutzte Zeichen sind Leerzeichen) folgt die Adresse, hier 0x4b4a014b014c014d014e01000000000000. Da es Testdateien sind haben alle den Inhalt "Testdatei Nr. xx - Testdatei Nr...." wenn ich jetzt die dazugehörige Datei suche finde ich sie an der Adresse 0xad400. Ich hab aber bis jetzt noch nicht rausgefunden wie die Adresse mit der Effektiven Dateiposition zusammenhängt. mfg Andreas
Anscheinend geht es dir erstmal nur um den Transport der Daten von einem zum anderen Rechner. Ich würde vorschlagen du findest raus was das für eine Maschine ist dann dürftest du auch wissen mit welchem Dateisystem du es zu tun hast.
Es ist eine CNC von Biesse, mit der Steuerung RT480. Das Diskettenformat wurde eine Zeitlang von Biesse eingesetzt, ist aber nirgends dokumentiert (konnte zumindest nichts finden). Auf jeden fall ist das kein gebräuchliches Format, eine frisch formatierte Diskette enthält alles 0xe2, ausser 8 Bytes, die sind "CNI ". CNI ist der Typ der Maschine. Ich versuche einfach die Dos Software fernzusteuern. mfg Andreas
Ist disassemblieren/debuggen wirklich illegal wenn es nur dem Verständnis des Filesystems dient (und nicht etwa zum Beispiel disassembliert wird mit dem Ziel, das Disassemblat in eine eigene Software einzubauen)? Wenn das eine DOS Software war, würd ich davon ausgehen, dass das Ding den BIOS-Disketteninterrupt (0x13) benutzt, um Diskettensektoren zu lesen/schreiben. Man könnte dann nach "int 0x13" Instruktionen suchen, und das ganze von dort aus aufdröseln. Ob das schwierig oder einfach ist hängt eigentlich nicht so sehr von der Gesamtgrösse des Programms ab.
>Ist disassemblieren/debuggen wirklich illegal wenn es nur dem >Verständnis des Filesystems dient (und nicht etwa zum Beispiel >disassembliert wird mit dem Ziel, das Disassemblat in eine eigene >Software einzubauen)? Mein Programierlehrer meinte es sei legal, und werde sogar noch oft gemacht... Ich finde genau einen "int 0x13". Das ist wahrscheinlich eher wenig. Und das Problem ist eben das ich nicht wirklich Assembler kann, und da will ich mich auch nicht durch 72'000 Zeilen lesen... Wenn ichs nach C decompiliere gibts nichts wirklich brauchbares (sehr viele Funktionen die aber ziemlich viel ASM drin haben..) Ich müsste wirklich zur Laufzeit auf die Variablen Zugriff haben. Ich weiss das es solche Tools gibt, aber ich weiss nicht wie die heissen... mfg Andreas
> Ich finde genau einen "int 0x13". Das ist wahrscheinlich eher wenig. Würd ich (zunächst) mal als positiv betrachten, weil das bedeuten könnte, dass halbwegs vernünftig programmiert wurde und die direkten Zugriffe auf die Floppy nicht über das ganze Programm verstreut wurden :D Es kann allerdings auch sein, dass du beim disassemblieren nicht allen Code "erwischt" hast. > Und das Problem ist eben das ich nicht wirklich Assembler kann, > und da > will ich mich auch nicht durch 72'000 Zeilen lesen... Das ist warscheinlich auch nicht notwendig, ausgehend von dem int 13h könnte man vermutlich sämtliche File I/O Routinen ohne allzu viel Mühe aufröseln. > Wenn ichs nach C decompiliere gibts nichts wirklich > brauchbares (sehr viele Funktionen die aber ziemlich > viel ASM drin haben..) Was anderes war ja auch nicht zu erwarten.
> Ich müsste wirklich zur Laufzeit auf die Variablen Zugriff haben.
Was versprichst du dir davon denn genau ?
Das ich sehe es wie er aus den Adressen die er liest die Adressen auf die er zugreift berechnet. Das ganze ist ja nicht eine Operation, sondern mehrer, wenn ich die Variablen sehe gehe ich davon aus das ich nachvollziehen kann was er rechnet. Es wird nicht allzuviel sein, da es ja auf der Maschine auch ausgeführt werden muss, und die ist schätzungsweise mit 5MHz getaktet (naja, hat mehrere Prozessoren...). Oder wie kann ich nachvollziehen was aus den Adressen gemacht wird? Sobald da etwas binäre Operationen und sonstige Operationen gemischt werden kann ich das nicht mehr nachvollziehen, zumindest nicht in nützlicher Frist ;-) mfg Andreas
> Sobald da etwas binäre Operationen und sonstige Operationen gemischt > werden kann ich das nicht mehr nachvollziehen, zumindest nicht in > nützlicher Frist Also praktisch 0-Ahnung...da dann, viel Spass...
Schau dir den Code in der Umgebung des int13 an, ob er logisch stimmen könnte, also ob der Disassembler auch den richtigen Code erwischt hat. Wenn du da nicht weiterkommst, schreibe einen int 13 Interrupthandler der dir die Diskettenzugriffe mit Parametern angibt und die Rücksprungadresse vom Stack. Dann beginne mit dem Programm zu arbeiten und schau dir die aufeinanderfolgenden Zugriffe an. Über die Rücksprungadresse kannst du checken an welcher Stelle im Programm der Interrupt aufgerufen wird und ob es mehrere Stellen gibt. Zu Programmen: z.B. Turbo Debugger Leider erfordert das alles aber sehr viel Wissen in Assembler... Warum nimmst du nicht erstmal den kurzen Weg? Wenn das Programm Kommandozeilenparameter hat , schreib einen hübsche Oberfläche und steuere das ganze mit Batchdateien. Versuche Informationen über das Dateisystem zu finden. Dazu sollte man erstmal sicher sein was das für eine Maschine ist und welches Betriebssystem darauf läuft. Versuche herauszufinden wie das Dateisystem funktioniert. Dazu solltest du als erstes nur eine Datei erzeugen auf einer FRISCH FORMATIERTEN Diskette. Das war das was mich am meissten an deinem Image störte. Die Einträge gingen nicht geordnet von vorn nach hinten und die Datenblöcke der Dateien waren vermischt. Kann natürlich sein das es das Dateisystem so macht ,ist aber ehr unwahrscheinlich auf einer frisch formatierten Diskette. Mit formatieren meine ich richtig formatieren, also komplett mit Nullen überschreiben, dann im Rechner formatieren, anschauen,mit dem Programm eine erstmal kleine Datei erzeugen,anschauen, Rückschlüsse ziehen. Was ich nicht verstehe: eine kurzes Suchen bei Google ergibt die CNI RT480 bietet 2 Wege des Datenaustauschs entweder Diskette oder Dateien über Seriellen Port. Warum willst du unbedingt den schwierigeren Weg nehmen?
>Warum nimmst du nicht erstmal den kurzen Weg? Wenn das Programm >Kommandozeilenparameter hat , schreib einen hübsche Oberfläche und >steuere das ganze mit Bachdateien. eben KEINE Parameter, wenn das Programm gestartet wird erscheint ein Menü, das ich leider nicht so einfach fernsteuern kann, es gibt eine Möglichkeit über die Win API, jedoch ist das extrem langsam... >Dazu solltest du als erstes nur eine Datei erzeugen auf einer FRISCH >FORMATIERTEN Diskette. Das war das was mich am meisten an deinem Image >störte. Die Einträge gingen nicht geordnet von vorn nach hinten und die >Datenblöcke der Dateien waren vermischt. Das habe ich gemacht (auch diese Diskette war frisch formatiert). Die erste Datei wird in die Mitte der Diskette geschrieben, die zweite davor UND danach, also fragmentiert, die dritte wurde wieder dahinter geschrieben. Im Anhang noch ein Diagramm, da ist klar zu sehen das die Daten immer so fragmentiert werden. X ist die effektive Adresse, Y Adresse im Index. Aber sonst reicht auch das Dos Programm... >Warum willst du unbedingt den schwierigeren Weg nehmen? Es ist halt mein Hobby... und ich wollte jetzt dieses Format lesen (ich habe mich schon länger damit beschäftigt, auch wenn manche Leute das Gefühl haben ich hätte "0-Ahnung") auf jeden Fall danke für die Hilfe. mfg Andreas
Ich habe unterdessen ein Programm geschrieben das die Disketten lesen und schreiben kann. Im Anhang ein Screenshot... Das ganze ist zwar nicht ganz fertig aber es funktioniert soweit... Wer Interessen hat soll sich melden. mfg Andreas
I wrote a program for reading and writing disks in CNI format, and a simple program editor (see screenshot). My machine is a Biesse Rover 346, if there is someone interested in testing the program with other RT480 machines please contact me. I need a postprocessor for the Biesse Rover 346, if anyone can help me with that I will be very grateful. Google-Übersetzung auf Deutsch Ich schrieb ein Programm zum Lesen und Schreiben von Festplatten in CNI-Format, und ein einfaches Programm-Editor (siehe Screenshot). Meine Maschine ist ein BIESSE Rover 346, wenn es jemanden interessiert, bei der Prüfung des Programms mit anderen Maschinen RT480 wenden Sie sich bitte an mich. Ich brauche einen Postprozessor für die BIESSE Rover 346, wenn jemand kann mir helfen mit, dass werde ich sehr dankbar.
Hier die Sourcen und Dokumentationen, wie das Filesystem aufgebaut ist. Lizenz: GPL. Alle Entwickler die an meinem Programm oder mit mit meinen Unterlagen weiterarbeiten sollen dies bitte hier veröffentlichen oder zumindest mich per Mail (hier über das Forum) benachrichtigen. Das ganze ist nicht komplett lauffähig, ich habe schon lange nichts mehr daran gemacht, und werde auch nichts mehr machen... Das Programm selbst kann ich nicht anhängen aufgrunde der Grösse, ich werde das ganze auf verlangen per Mail versenden. mfg Andreas
Hallo Andreas, ich habe auch eine alte Maschine von Biesse und suche schon lange nach einer Möglichkeit die Daten vom PC auf Diskette schreiben zu können. Würdest du mir dein Programm zu Verfügung sellen, vielleicht kann es mir weiterhelfen. Im vorraus besten Dank. Gruß Wolle
Können Sie mir bitte das Programm zum Lesen der CNI Disketten senden.
Hallo andreas besteht die möglichkeit das du mir das programm zum schreiben der disketten im cni format zukommen läßt? da wir bei uns das gleiche problem wie alle haben von windows auf maschine.... mit freundlichen grüßen rainer
Hier hasts du es, aber Ohne Haftung;-) Oben sind noch die Sourcen, falls sich jemand darum kümmern will... Unsere Maschine wurde schon lange durch einen Blitzschlag zerstört, ich kann nichts mehr testen... mfg Andreas
Hallo Andreas Herzlichen Dank für deine tolle Arbeit. Du hast uns viele Stunden des Grübelns erspart. Heiri Plappler
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.