mikrocontroller.net

Forum: PC-Programmierung DOS Programm Variabeln Watch


Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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?

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Andreas B. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich müsste wirklich zur Laufzeit auf die Variablen Zugriff haben.

Was versprichst du dir davon denn genau ?

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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...

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Andreas B. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
>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

Autor: Andreas B. (andreasb)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Cassio Emer (oldnapalm)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Martin D. (dasquadrat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Andreas
kannst du mir dein programm zur verfügung stellen?

Autor: Andreas B. (andreasb)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Wolle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Johannes Wöhrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Können  Sie mir bitte das Programm zum Lesen der CNI Disketten senden.

Autor: Rainer W (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andreas B. (andreasb)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Heiri P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas

Herzlichen Dank für deine tolle Arbeit. Du hast uns viele Stunden des 
Grübelns erspart.

Heiri Plappler

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.