Beiträge von Georg

    Arno war gestern bei mir (das sind nur 30km), und wir haben den Genie zunächst an einen Monitor gehangen - Arno hatte selber keinen mehr.

    Anzeige war vorhanden, aber der bekannte Müll aus ungelöschtem Video-RAM. Allerdings veränderten sich in einer Reihe von Spalten die Zeichen. Dabei hatte es den Anschein, als wenn zunächst mehrere Spalten betroffen sind, und sich das im Verlauf einiger Sekunden dann auf eine oder zwei Spalten reduzierte.

    Wir haben den dann mal geöffnet, und haben dabei eine Menge Umbauten entdeckt: ROM-Erweiterungen, eine Zusatzplatine für den Zeichen-Generator mit ROM, EPROM und SRAM (ladbarer Zeichensatz?), diverse zusätzlich Anschlüsse und Schalter - leider konnte sich Arno kaum noch erinnern, diese Teile eingebaut zu haben - geschweige denn an ihre Funktion.


    Wir haben dann dem Z80 auf die Pins geschaut, und das sah recht gut aus. Takt, /MREQ, /M1 etc. waren in Bewegung; die Adressleitungen bis ungefähr A8 waren auch in Bewegung und hatten plausible Werte; oberhalb A8 kamen dann nur noch vereinzelte Impulse, die wir auf den Refresh zurückführen (ich habe länger nicht mehr einem Z80 bei der Arbeit zugeschaut ...).


    Seltsam sah es dagegen auf den Datenleitungen aus. Es gab Low- und High-Pegel, aber dazwischen auch immer wieder ungültige Werte von ca. 1,2V. Diese Fehler traten auf allen Datenleitungen auf - bei einer gemeinsamen Darstellung mit /MREQ zeigte sich, dass es sich tatsächlich um Speicherzugriffe handelte. Es gab allerdings auch Zugriffe, bei denen die Datenleitungen korrekte Werte hatten. Evtl. waren das eine Lesezugriffe und das andere Schreibzugriffe - das haben wir zunächst nicht weiter erforschen können, denn an dieser Stelle haben wir aus Zeitmangel abgebrochen. Der Genie steht jetzt bei mir, und ich habe knapp zwei Wochen Zeit, den Fehler zu finden ::solder::


    Leider nimmt der im geöffneten Zustand sehr viel Platz weg, weil wegen einer zusätzlichen festverdrahteten Buchse im Deckel dieser immer daneben liegen muss. Deshalb habe ich den Rechner zunächst wieder zusammengebaut. Ich hoffe, dass ich den am Wochenende mal wieder ausbreiten kann.

    Anhand den bisherigen Infos tippen wir das die Magnetplatte ggf.in einem P4000 eingesetzt war, Baujahr ab 81, 82

    Zu der P4000 habe ich wenig gefunden, aber die Bilder von der P330, die u.a. vor einem halben Jahr hier im Forum auftauchte, kommen mir bekannt vor. Ich bin ziemlich sicher, dass sich dieses Leuchtdiodenpanel oberhalb der Tastatur und das Panel mit den beiden Schlüsselschaltern noch irgendwo bei mir im Keller befinden - das waren einige der Teile, die ich damals ausgebaut habe.

    Puh, in der letzten Ecke habe ich es jetzt gefunden:



    Inklusive Original Kaffee-/Cola-/??-Flecken aus den späten 80ern - Saubermachen habe ich damals nicht für nötig gehalten.


    Zum Vergleich nochmal die Ansicht einer P330:



    Meine Festplatte stammt definitiv aus so einem Teil.


    Den CRC-Algorithmus habe ich mittlerweile auch implementiert und festgestellt, dass ich doch noch den einen oder anderen Lesefehler habe.

    Ich habe mal eine statistische Analyse über alle Fluxwechsel auf der Platte gemacht und dabei festgestellt, dass die von mir gewählten Grenzen zwischen lang/mittel/kurz theoretisch ganz ok sind.

    In der Praxis ist es aber möglicherweise sinnvoll, die Grenzen doch noch etwas zu verschieben. Für solche Versuche muss ich aber zunächst mal meine Software noch etwas konsolidieren.

    Denke ich auch, aber um das zu prüfen werde ich den wohl programmieren müssen. Muss ich wohl sowieso, wenn ich meinen Dump auf Fehlerfreiheit prüfen will. Mal sehen, ob ich heute Abend Zeit dazu finde.

    Hier die ersten Header:


    7F 00 00 01 02 7A

    7F 00 00 1B B1 01

    7F 00 00 0A B3 11

    7F 00 00 35 74 AD

    7F 00 00 24 76 BD


    Die beiden letzten Byte sind jeweils die CRC-Ergebnisse.

    Nach meinen bisherigen Recherchen müsste es sich um das CRC16-CCITT Polynom 0x1021 handeln.


    Anhand den bisherigen Infos tippen wir das die Magnetplatte ggf.in einem P4000 eingesetzt war, Baujahr ab 81, 82

    Zu der P4000 habe ich wenig gefunden, aber die Bilder von der P330, die u.a. vor einem halben Jahr hier im Forum auftauchte, kommen mir bekannt vor. Ich bin ziemlich sicher, dass sich dieses Leuchtdiodenpanel oberhalb der Tastatur und das Panel mit den beiden Schlüsselschaltern noch irgendwo bei mir im Keller befinden - das waren einige der Teile, die ich damals ausgebaut habe.


    Weiß eigentlich jemand, was aus dieser P330 geworden ist?

    Hier kommen noch ein paar weitere Informationen zur Formatierung der Platte:


    Im Sektorheader steht der Reihe nach

    • die Kennung 0x7F
    • die Seite (0x00 bzw. 0x10)
    • die Spur (0x00 - 0xE4)
    • die Sektornumer (0x01 - 0x3C)
    • die 16 Bit Prüfsumme

    Auch der Datenbereich besteht nur aus der Kennung 0xFD, den 256 Nutzdaten und einer 16-Bit Prüfsumme.


    Es sind tatsächlich 229 Spuren formatiert, d.h. die Kapazität der Platte beträgt 6,7 MB (7034880 Byte) netto. Allerdings ist die letzte Spur komplett leer, während die vorletzte vollständig gefüllt ist. Ich gehe deshalb davon aus, dass die Software absichtlich nur 228 Spuren verwendet hat.


    Ich habe inzwischen beide Seiten vollständig ausgelesen; dummerweise ist die von mir empirisch gewählte Grenze zwischen kurzen und mittleren Fluxwechseln für die zweite Seite offenbar nicht ideal; dort finden sich mit meinen Werten in den Synchronsequenzen eine ganze Reihe mittlere Impulslängen, wo es kurze sein müssten. Da muss ich noch etwas tunen.


    Um solche Fehler in den Daten aufzuspüren müsste ich den CRC-Algorithmus knacken - da werde ich demnächst mal ein paar bekannte CRC Polynome durchtesten. Vielleicht findet sich ja etwas passendes.

    Naja, war schon ziemlich mühsam, und ich habe schon einige Sackgassen hinter mir.

    Momentan habe ich viel Zeit, und die stecke ich fast komplett da rein.


    Ein großes Glück war das Vorhandensein der FLUXTEEN-Hardware (großer Dank an PAW); das Messen der Fluxwechsel war mit dem flotten Teensy ein Kinderspiel. Der Rest war langwieriges Forschen und Ausprobieren.


    Mittlerweile habe ich auch den letzten Bitfehler behoben (Programmfehler von mir), und insofern genügend Vertrauen in meine Daten und Programme. Damit kann ich mich nun dran setzen, einen Dump der gesamten Platte zu machen.


    Für zukünftige Einsätze (Schreiben und Lesen der Platte) werde ich dann wohl ein eigenes Format verwenden - insbesondere auch wegen der CRC-Polynome, die ich dann ja selber festlegen kann. Das bestehende Format ist mangels Maschine ja obsolet.


    Im Hinblick auf das Ziel "USB-Platte" wären wohl auch 512 Byte große Sektoren sinnvoll. Btw, hat jemand Ahnung, wie ein Plattentreiber aussehen muss? :tüdeldü:

    Mittlerweile habe ich der Platte eine Reihe ihrer Geheimnisse entrissen:

    • Die Platte ist mit MFM beschrieben.
    • Die Aufzeichnung erfolgt softsektoriert, obwohl die Platte eigene Sektorkennungen hat, die auch von der Elektronik aufgenommen werden. Wie weiter oben bereits geschrieben wurde steht dieses Signal am Interface aber nicht zur Verfügung. :grübel:
    • Tatsächlich sind 60 Sektoren á 256 Byte formatiert; der Interleave beträgt 6
    • Zur Synchronisation werden zunächst für die Dauer von mindestens 10us lange Pulse (1us) geschrieben, gefolgt von ca. 80us mit kurzen Pulsen (je 0,5us). Zum Abschluss folgt eine Sequenz 1000ns, 750ns, 1000ns, 750ns. Diese Abschlussfolge ist bei MFM-Kodierung nicht möglich und bietet mir damit einen eindeutigen Startpunkt für die folgenden Daten.
    • Der Sektorheader besteht aus 6 Byte: zunächst eine Kennung (0x7F), dann 2 Byte für Spur bzw. Zylinder und Seite (muss ich noch klären, ich arbeite zur Zeit nur mit den Daten der ersten Spur). Als nächstes folgt die Sektornummer und anschließend zwei Byte (vermutlich CRC über den Sektorheader).
    • Der Datenbereich beginnt ebenfalls mit einer Kennung (0xFD), gefolgt von 256 Byte Nutzdaten. Auch hier gibt es noch zwei bis vier Byte, die ich noch nicht geklärt habe - mindestens eine CRC-Prüfsumme erwarte ich dort.
    • Bei der Formatierung wurden übrigens die Datenbereiche der Sektoren nicht angelegt - stattdessen wurde eine überlange Synchronisationsfolge geschrieben (knapp 1300us lange Impulse), die genügend Platz lässt für den Datenbereich. Beim Schreiben der Daten wird dann da drüber eine eigene (kurze) Synchronisationsfolge und dann der Datenbereich geschrieben - der Rest der ursprünglichen Sync.-Folge bleibt erhalten zur Erkennung des nächsten Sektorheaders.

    Zur Erläuterung des letzten Punktes hier eine abstrakte Darstellung:


    Frisch formatiert:

    LLLLLLKKKKX <1. Sektorheader> LLLLLLLLLLLLLLLLLLLLLLLLLLLLL...........LLLLLLLLLLLLLKKKKKX <2. Sektorheader> LLLL......


    Beschrieben:

    LLLLLLKKKKX <1. Sektorheader> LLLLLLLLLLLLKKKKKKKKKKX <Sektordaten> LLLLLLLKKKKKX <2. Sektorheader> LLLL......


    (L = Langer Puls, K = kurzer Puls, X = Abschlussfolge, fett = neu geschrieben)


    Hier ein Dump von zwei Sektoren, die mir zeigen, dass ich mit der Dekodierung und Synchronisierung auf dem richtigen Weg bin:




    Wie man sieht handelte es sich bei dem System mindestens um eine Anlage für die Finanz- und Lohnbuchhaltung. Das passt zu meinen Erinnerungen.


    Leider habe ich noch immer ein paar Probleme mit der korrekten Synchronisierung - es gibt immer noch einige Datenbereiche, bei dem ich um genau ein Bit versetzt lese. Ich hoffe, da in Kürze über weitere Erfolge berichten zu können.

    Zitat von Georg

    FLUXTEEN bietet mir zwar ein C<onfig>-Kommando an, aber damit kann ich nur die Konfiguration anzeigen - bisher habe ich es nicht geschafft, dort Parameter zu übergeben.

    Code
    // config drive parameters:  upper case 'C'
    // C=DriveN,MaxTrack,MotorOnTime,UnitSelToStepTime,ChangeStepDirTime,StepToStepTime,HeadSettingTime$
    // no spaces allowed, first nonnumeric char terminates the input (except comma)
    // MaxTrack is highest track number (starting at 0)
    // all timing values in milli seconds        
    
    // e.g.: C=1,39,1000,22,33,44,55 
    
    // display all parameters:  lower case 'c'

    Ein großes C eingeben um die Parameter zu ändern. Ein kleines zeigt nur an.

    Danke. Ich hatte es auch mit dem großen Zeh ;) mal versucht, aber vemutlich dann ein Leerzeichen dahinter.

    Von welchen Umdrehungszeiten reden wir hier? Bitte um Info betreffend Drehzahl.

    Ca. 170ms pro Umdrehung.

    Sicher? Das wären ja rund 6 Drehungen pro Sekunde und damit auch "nur" 360 U/min.


    Ich meine es sind 720 U/min - sowohl mit dem Oszilloskop als auch mittlerweile per Software gemessen. Sollte ich mich so gründlich verguckt/verrechnet haben?


    Ich habe nämlich mittlerweile die FLUXTEEN-Hardware mit eigener Software ausgestattet und versuche damit, die Disk zu vermessen und die Daten zu lesen. Der Teensy ist ja wirklich sauschnell; ich habe den Eindruck, dass ich - auch ganz ohne Optimierung und mit den lahmen Arduino-Portzugriffen - die einzelnen Pulse problemlos erkennen kann.


    Ob das auch noch klappt, wenn ich die Daten verarbeite oder zwischenspeichere wird sich allerdings noch zeigen.


    Aber ich bin noch ganz am Anfang und muss das alles erst noch verifizieren.

    Erste Versuche mit FLUXTEEN ergeben folgendes:


    Ein Fehler in meiner Interface-Belegung ist aufgetaucht: Pin 12 und Pin 14 sind vertauscht!

    Richtig ist:

    Pin 12: Step

    Pin 14: Step Direction


    Ansonsten funktioniert die Kopfansteuerung durch FLUXTEEN problemlos. Spuren können angefahren werden, das Signal Track 0 wird erkannt.

    Die Schrittgeschwindigkeit ist für die Festplatte etwas niedrig, weshalb die Trackwechsel ziemlich laut sind. FLUXTEEN bietet mir zwar ein C<onfig>-Kommando an, aber damit kann ich nur die Konfiguration anzeigen - bisher habe ich es nicht geschafft, dort Parameter zu übergeben.


    Leider hält FLUXTEEN das Laufwerk aufgrund der (im Vergleich zu Floppys) hohen Drehzahl für eine hartsektorierte Diskette, vermisst aber dann das Track-indexloch. Deshalb ist z.B. eine Drehzahlmessung nicht möglich. Ich fürchte, dass deshalb FLUXCOPY auch nichts großartiges machen wird. Darum habe ich jetzt auch noch keinen Windows-Rechner gesucht, um das mal auszuprobieren.


    Ich werde jetzt zunächst mal meinen Teensy auf FLUXTEEN 075 aktualisieren. Mal sehen, ob sich was ändert ...

    Ich habe das auch schon mit funkenzupfer am Telefon besprochen. Die Sache mit den Indexpulsen ist kein Problem; die entsprechende Logik ist bereits auf der Platine enthalten. Sprich ich bekomme an der Schnittstelle sowieso nur einen Puls pro Umdrehung.


    Es klingt jetzt ein wenig unsinnig, dass die Hardware Sektorkennungen liefert, die dann nicht ans Interface gehen. Eine vernünftige Erklärung habe ich dafür jedenfalls nicht.


    Den Test mit Fluxteen werde ich mal versuchen.

    So, inzwischen steht meine Platte wieder hier am Arbeitstisch, und ich konnte auch schon Daten lesen. D.h. ich habe Signale an der Leitung ReadData ;)

    Bei meinen früheren Versuchen habe ich vermutlich den Pullup-Widerstand vergessen, der bei dem 7438-Ausgang nötig ist.


    Jetzt taucht die Frage nach der Kodierung auf. Ich habe drei Formen von positiven Pulsen:


    - kurze von 250ns

    - mittlere von 500ns

    - lange von 750ns


    Zwischen den diesen Pulsen sind jeweils 250ns lange Pausen, bei denen der Pegel auf Low geht.



    In diesem Beispiel ist mal alles kombiniert; häufig gibt es große Ansammlungen von nur kurzen oder nur langen Pulsen. Von den mittleren habe ich solche Häufungen noch nicht gesehen.


    Ich habe mir noch nie die Datenleitung von einem Floppylaufwerk angesehen, aber nach FM oder MFM sieht mir das nicht aus. Was könnte das für eine Kodierung sein?

    Mal überlegt die Festplatte mangels passender Hardware an einem Arduino auszulesen?

    "Einfach" nur ein Programm schreiben, was die Daten ab Sektor 0 anfangend einliest?

    Ich meine damals bei meinen Versuchen keine "sinnvollen" Signale auf der Leseleitung gefunden zu haben. Aber dafür suchen wir ja jetzt zu zweit...

    Sehr schön.

    Ich habe eben dann auch meine Platte abgehängt (die hängt im Keller an der Wand, theoretisch jederzeit einsatzfähig), etwas abgestaubt und will mich jetzt mal wieder etwas reinknien.


    Dabei ist mir eingefallen, dass Du evtl. noch die Belegung von PL100 (Stromversorgung) brauchst - aber wenn Deine bereits läuft, ist das vermutlich etwas spät:


    Pin 1 ist unten Pin 7 ist oben

    Pin 1 - n.c.

    Pin 2 - 5V

    Pin 3 - GND

    Pin 4 - 24V

    Pin 5 - Codierstift (fehlt)

    Pin 6 - GND

    Pin 7 - Schreibschutz(?)


    Das mit dem Pin 7 ist kurios - soweit ich damals herausgefunden habe werden damit zwei Transistoren angesteuert, über die die Schreibsignale an die Köpfe gehen. Quasi ein von außen steuerbarer Schreibschutz!?

    Gerne. Leider ziemlich unvollständig, aber damals, als ich die Sachen zusammen geschrieben habe, hatte ich noch wenig Wissen über alte Festplattenschnittstellen.

    Vielleicht bekommen wir zusammen mehr raus. Wichtig wäre wohl erstmal, dass Du Ersatz für den Antriebsriemen bekommst.

    Hier ist mein System, das zu der Doku in #8 gehört. Das System habe ich 1994 als Bausatz gekauft und zusammen gebaut; das Display ist eine eigene Ergänzung:



    Von der Bestückung her sieht es vergleichbar aus; vielleicht war das ein Referenzdesign für den 80C535, das dann vielfach übernommen wurde?

    Das besondere an dieser Platine hier ist die Option, statt RS2323 eine MIDI-Schnittstelle für Atari zu bestücken.


    Ist lange her, dass ich damit rumgespielt habe. Ich weiß nicht, welche Entwicklungsumgebung ich benutzt habe, aber eben habe ich auf die Schnelle gesehen, dass es wohl auch einen BASIC-Compiler dafür gab.

    Laut Aufschrift sind diese Exemplare aber von DTC. Sowas habe ich auch in der Festplatte zum ITT 3030 - dort ist der Controller afair direkt unter die MFM-Platte geschraubt.

    Es ist noch was aufgetaucht - sieht aus, als ob das dazu gehört :

    Mmmh, das Entwicklungssystem mit 80C535, zu dem das "Blaue Buch" (sowie afair ein "Rotes Buch) gehören, habe ich auch. Das ist bei mir aber definitiv keine Buskarte, sondern ein einfache Platine. Ich suche gleich mal danach und mach ein Bild davon.

    Hier noch die Anschlussbelegung, die ich vor Jahren identifiziert habe (alle Angaben natürlich ohne Gewähr):


    Pin I/O Funktion

    2 O Read Data

    4 n.c.

    6 O Spur 0 (?)

    8 O Index

    10 I ?

    12 I Step Direction

    14 I Step

    16 I Write Gate

    18 I Write Data

    20 I Drive Select 1

    22 I Drive Select 2

    24 I Drive Select 3

    26 I Drive Select 4

    28 O ?

    30 O ?

    32 O ?

    34 O ?

    36 n.c.

    38 n.c.

    40 I Head Select?

    42 n.c.

    44 O ?

    46 I ?

    48 n.c.

    50 n.c.

    Da ich inzwischen wieder an meine Unterlagen drankomne (Danke für die guten Wünsche, fritzeflink, die haben mich doch nicht da behalten wollen) habe ich mal nachgelesen, was ich dazu rausgefunden habe.


    Nach meinen Aufzeichnungen hat die Platte folgende Parameter:


    Spuren: 200

    Sektoren: 50

    Bytes/Sektor: 256

    Kapazität: 5 MB

    Serial No.: 2203


    Die Sektorgröße habe ich geschätzt oder sogar mit dem Oszilloskop gemessen, das weiß ich nicht mehr.


    Woher kommt die Diskrepanz zu den Angaben in der Übersicht? mikemcbike, hast Du weitere Informationen zu der Platte, auf die sich Deine Aussage stützt? Oder sind die 6MB die damals zumindest bei Disketten übliche Angabe der "unformatierten Kapazität"?


    Und hier noch eine Impression, wie die Platte startet und arbeitet:


    forum.classic-computing.de/index.php?attachment/132514/ (mp4 mit 480x640)


    Für die Kopfbewegungen habe ich damals den Sektorindexpuls genommen. Wenn ich richtig rechne sind das 1,6ms pro Spur. Weiß jemand, welche Spurwechselzeiten bei Systemen dieser Art gängig/möglich waren?

    So ein Teil habe ich auch. Aus dem Krankenhaus komme ich gerade nicht an meine Bilder, aber ich hatte das Teil mal auf dem Kölner Retrotreff ausgestellt:


    Philips Festplatte


    Ich habe die in den 80ern selber aus einem Philips-Rechner ausgebaut, der im Büro eines Bekannten verschrottet werden sollte.

    Damals lief sie noch, und ich hatte eine kleine Schaltung dran, mit der ich den Kopf per Taster bewegen konnte.

    Nach ein paar Jahren hat sich auch bei mir der Gummi des Antriebsriemen verabschiedet. Ich habe dann einen halbwegs passenden Gummiriemen organisiert, der alleine aber viel zu elastisch war. Also habe ich den neuen Gummi in den alten Textilriemen reingeklebt - seitdem dreht die wieder.


    Für das Retrotreff hatte ich dann einen Arduino dran, der den Kopf zufällig hin und her bewegte. Machte ziemlichen Eindruck.


    Ich habe auch mal versucht, etwas von der Platte zu lesen, aber da bin ich bisher gescheitert. Vielleicht ist diese zweite Platte ja jetzt der Auslöser für neue Versuche.

    Ich habe vor paar Tagen einen Wang 2200 in einem sehr schlechten Zustand bekommen.

    Ich bin zwar etwas spät, aber möchte trotzdem gratulieren. Wie Reinhard schon angemerkt hat ist eine 2200, die heute auf Anhieb läuft, eher selten.


    Die Sache mit dem vergammelten Bildschirm habe ich leider auch noch vor mir :(


    Und wegen der Tastenkappen kannst Du Dich mal per PM bei mir melden, vielleicht kann ich Dir da helfen.

    Tja, so vorausschauend war ich damals nicht. Natürlich hatten auch wir unsere WANG-Software auf eigenen Chromdioxid-Kassetten gespeichert, aber Jahre, nachdem ich die Schule verlassen habe, habe ich die Kassette wiederverwendet, um am Dragon 32 eines Kumpels Programme abzuspeichern.


    Mir war damals völlig klar, dass ich nie wieder an einen Computer im Wert von 50.000 DM herankommen werde, geschweige denn einen besitze :fp:

    da ich alle Geräte immer über Regel-Trenntrafo betreibe ist mir aufgefallen, dass die WANG, es ist eine 320SE Baujahr 1968, bei 190 - 200 V AC Eingangsspannung (bis auf 2 Macken, s.u.) tadellos funktioniert ! Tadaa !

    Herzlichen Glückwunsch! Ich finde diese alten Tischrechner mit Zentraleinheit und separaten Bedienkonsolen einfach klasse.

    Ich freue mich schon darauf, die mal in Natura zu sehen.

    Gute Arbeit!