Hallo, ich bin jetzt mal wieder an dem alten HD6309-Selbstbau-System von meinem Vater am arbeiten. Wir wollen dem Gerät nun eine Festplatte verpassen. Auch wenn ein SASI-Busadapter mit auf dem Floppycontroller ist, an dem SCSI-Platten eigentlich laufen sollten noch, möchten wir das Gerät mit IDE und einer CF-Card ausstatten. Nachdem meine erste Version ala TTL-Grab das Timing versaut hat und falsche Werte in falschen Registern landeten (IOWR ging zu spät auf High, da hatte die CPU schon Adressen und Daten vom Bus genommen), hab ich jetzt eine CPLD-Karte entworfen die ich die Tage aufbauen und testen werde .. die hält das gespecte Timing auf beiden Seiten mit 1,5-3facher Sicherheit ein. Hierzu benötige ich natürlich auch eine passende Treibersoftware. Das Betriebssystem ist FLEX9, eigentlich ein reines Diskettenbetriebssystem, das aber prinzipiell nicht auf ein Medienformat festgeschrieben ist, bzw. es außer beim Formatieren garnicht kennt (es wird beim Formatieren der Diskette eine sog. "Free-Chain" angelegt, dies ist eine einfach verkettete Liste in der sämtliche verfügbaren Sektoren eingetragen sind, beim Schreiben von Dateien werden die Sektoren dann aus dieser Liste entnommen .. damit ist die Einhaltung der Geometrie implizit gegeben). Sektor und Spur sind jeweils ein Byte, damit sind 256 Spuren mal 256 Sektoren möglich. Jeder Sektor hat 256 Byte. Es werden 4 Laufwerke unterstützt. Dies muss ich nun auf die deutliche größere CF-Card abbilden die dazu noch über 512 Byte Sektoren verfügt. Dazu möchte ich auf der CF-Card eine Reihe von erweiterten Partitionen <= 16MB (256 Sektoren*256 Spuren*256 Byte) anlegen und diese mittels Treiber-Software wählbar auf die 4 Laufwerke "mounten". Wenn ich LBA benutzen kann, wird das mappen sehr einfach. Ich würde dann einfach die Anforderung von FLEX (Spur und Sektor) zu einer 16bit Zahl zusammenfassen, das LSB als Auswahl des oberen oder unteren 256Byte-Blocks benutzen und die oberen 15bit auf den Startsektor der Partition addieren um den gewünschten LBA Sektor zu erhalten. Mit CHS wird das ein relativ mühsames Mapping und ich muss dem Treiber immer die Geometrie bekannt machen.. bei LBA muss ich nur die höchste Sektornummer irgendwo ablegen als Sicherheit. CF-Karten sind erstmals in der ATA-4 genormt (ja ich weiss die CFA hat früher was, aber die wollen Geld ..) und schon in ATA-3 ist LBA Pflicht für alle Devices. So, jetzt endlich zur konkreten Frage: Hat jemand Erfahrungen mit realen Karten, ob man sich auf das Vorhandensein von LBA verlassen kann .. oft werden Normen ja großzügig ausgelegt und solang es in PC und Digicam trotzdem immer geht interessiert es niemanden, selbst wenn mal eine Karte Probleme macht wird das als gegeben hingenommen meist. Gruß, Christian
Christian Erker schrieb: > Das Betriebssystem ist FLEX9 Schön, mal wieder von jemandem zu hören, der das verwendet. Lang ist's her ... da hab ich mir mal einen Rechner selbstgebaut, auf dem auch Flex lief. Mit einer kombinierte RAM- und ROM-Disk und zwei Diskettenlaufwerken, dank der ROM-Disk war das System sogar recht flott, da das OS, Dienstprogramme und der damals von mir verwendete Pascalcompiler darin untergebracht waren. LBA müsste in CF-Karten ab einer bestimmten Größe eigentlich immer vorhanden sein (wenn sie im TrueIDE-Modus betrieben werden), wenn Du also nicht gerade welche unter 512 MB verwendest, sollte das eigentlich funktionieren. Das ist allerdings nur eine Vermutung. Besonders schnell wird die Angelegenheit allerdings nicht werden, nicht nur, weil Du der 256-Byte-Sektoren wegen die Hälfte der Kapazität nicht nutzt, sondern wegen der Eigenheiten des Flex-Dateisystems mit der Sektorverkettung. Die Gesamtkapazität der CF-Karte dürfte annähernd völlig irrelevant sein, da es mehr als ein paar MB Software für dieses Betriebssystem kaum geben dürfte. Wie sehen Eure Pläne für das IDE-Interface aus?
Rufus Τ. Firefly schrieb: > Christian Erker schrieb: >> Das Betriebssystem ist FLEX9 > > Schön, mal wieder von jemandem zu hören, der das verwendet. Lang ist's > her ... da hab ich mir mal einen Rechner selbstgebaut, auf dem auch Flex > lief. Mit einer kombinierte RAM- und ROM-Disk und zwei > Diskettenlaufwerken, dank der ROM-Disk war das System sogar recht flott, > da das OS, Dienstprogramme und der damals von mir verwendete > Pascalcompiler darin untergebracht waren. 2 Diskettenlaufwerke haben wir auch, leider nur in Single Density da die CPU bei 1MHz kein Double-Density schafft. Der 6309 könnte zwar prinzipiell 3MHz, aber da käme wegen des synchronen Businterfaces der 6800 Reihe die einige Peripherie nicht mit (z.B. der EF9367 Grafikcontroller). Das ganze System ist übrigens mehr oder weniger ein auf 6x09 adaptierter EC65 (Elektor Computer, eigentlich 6502). Hier ein paar Bilder: https://lh5.googleusercontent.com/-fXSYDgzZdYs/TorgIIQqjQI/AAAAAAAAA0s/zDykaTMQ5bU/s576/IMG_5470.JPG https://lh6.googleusercontent.com/-MhNnb0se5nU/Ton-VZpLa6I/AAAAAAAAAzY/D0A6t8evRyM/s640/IMG_5412.JPG > Besonders schnell wird die Angelegenheit allerdings nicht werden, nicht > nur, weil Du der 256-Byte-Sektoren wegen die Hälfte der Kapazität nicht > nutzt, sondern wegen der Eigenheiten des Flex-Dateisystems mit der > Sektorverkettung. Ich hatte in Erwägung gezogen, immer 2 Sektoren in einen 512 Byte Sektor zu mappen. Das geht beim Lesen noch ohne Aufwand, beim Schreiben wird es etwas lästig da ich den Sektor komplett lesen muss, den jeweiligen Teil überschreiben und komplett zurückschreiben. Wobei sich natürlich ein wenig die Frage nach dem Sinn stellt, ich könnte natürlich auch einfach 256 Worte mit MSB = 0x00 schreiben. Die halbierte Kapazität sollte nicht weiter stören. > Die Gesamtkapazität der CF-Karte dürfte annähernd völlig irrelevant > sein, da es mehr als ein paar MB Software für dieses Betriebssystem kaum > geben dürfte. Wenn ich denn mal den GCC für 6809 von William Astle (http://www.boxofdoom.net/2011/09/22/how-to-compile-gcc-for-the-6809-processor-gcc6809/) ans laufen bekomme (da hakt es noch an einigen Ecken) will ich es mir ev. antun mich an einem Contiki-Port zu versuchen .. aber bisher hab ich da so einige Probleme .. der Linker scheint keine Symbole für den Anfang und die Länge der Sections zu erzeugen, was ich aber im Startupcode benötigen würde .. ev. muss ich den Herrn Astle einfach mal anschreiben. Das dann eben als ein Betriebssystem das ev. auch mal die eingebaute Farbpixelgrafik nutzt. Aber erstmal FLEX auf IDE anpassen.. der Rest kommt später. > Wie sehen Eure Pläne für das IDE-Interface aus? Momentan ist die Idee ein XC95108 CPLD welches das komplette Interface enthält, inkl. Timinganpassung, 16bit Multiplexing .. hierzu habe ich mir eine Idee von jemand anders abgeschaut (leider find ich den Quelle nicht mehr): Ein Lesezugriff auf Register 0 bewirkt das die ganzen 16bit gelesen werden, das MSB auf den Bus gelegt und das LSB gelatcht. Das LSB wird dann im darauffolgenden Zugriff auf 0x01 gelesen (hierbei wird temporär das Error/Feature-Register überdeckt) .. beim Schreiben wird entsprechend beim Zugriff auf 0x00 erst das MSB gelatcht und dann beim Zugriff auf 0x01 zusammen mit dem LSB geschrieben. Dies hat den Vorteil das ein 16bit Zugriff einfach ein LDD oder STD ist, aber bedingt eben etwas Aufwand. Die erste Version mit TTL-Logik war wie gesagt ein Reinfall, da ich /WR für IDE aus E und RW erzeugt habe .. allerdings war die Durchlaufverzögerung zu hoch, so dass /WR erst auf High ging als die CPU schon die Adressen und Daten vom Bus genommen hatte .. damit landete statt 0xEF in 0xE307 .. 0xED in 0xE305 oder so in 50% der Fälle. Das CPLD nutzt nun den Q-Takt als Referenz mit, so das /WR deutlich vor der fallenden Flanke von E, aber bei schon sicher gültigen Daten und Adressen auf High geht. Lesen war mit dem alten Interface problemlos, da /RD ja ebenfalls verzögert war und damit das Timing zum positiven verschoben hat (es war noch sicher Low an der Fallenden Flanke von E). Das ist ein Problem der unterschiedlichen Businterface von 6800 und 8086, der 8086 hält die Daten deutlich länger auf dem Bus nach der steigenden Flanke von /WR (je nach Takt 40-90ns). Gruß, Christian
Christian Erker schrieb: > Momentan ist die Idee ein XC95108 CPLD welches das komplette Interface > enthält ... Das klingt ziemlich gut, damit dürfte sich 16-Bit-IDE tatsächlich recht flott umsetzen lassen. Allerdings: Wenn Du sowieso ein CPLD verwenden möchtest, wäre dann nicht vielleicht die Verwendung von SD-Karten einfacher? Deren Interface ist nicht ansatzweise so verdrahtungsintensiv, es ist recht gut dokumentiert (zig Leute verwenden SD-Karten an irgendwelchen µCs) und es dürfte für einen mit nur 1 MHz getakteten '09 auch mehr als ausreichend schnell sein. > GCC für 6809 Uiuiui. Ich hatte einen nativen K&R-C-Compiler namens "introl C", der kannte halt kein C89 (das war, als ich mich damit beschäftigte, auch noch nagelneu). Mit C konnte ich aber damals nicht sonderlich viel anfangen. Hier übrigens gibt es einiges an Material zu Flex: http://www.flexusergroup.com/flexusergroup/fug1.htm > Das ganze System ist übrigens mehr oder weniger ein auf 6x09 > adaptierter EC65 Meines war weitestgehend auf Lochrasterplatinen gefädelt und nutzte einen 68B09E mit 2 MHz Takt und einem daran angeschlossenen ebenfalls mit 68B09E aufgebautem Text-Terminal (mit 68B45 als Timingcontroller), nachdem ich eine Zeitlang auch ein Graphikterminal genutzt hatte (in der c't 1984 vorgestelltes Selbstbauprojekt "Grip" mit Z80 und 6845, hatte eine Auflösung von 720x280 Pixeln). Die Textdarstellung des Graphikterminals gefiel mir nicht sonderlich, also gabs dann den Selbstbau mit einer 9x12-Fontmatrix, mit 96 Zeichen pro Zeile und 25 Zeilen ... oder sogar 50 im (flacker!) Interlacemodus.
Rufus Τ. Firefly schrieb: > Allerdings: Wenn Du sowieso ein CPLD verwenden möchtest, wäre dann nicht > vielleicht die Verwendung von SD-Karten einfacher? Deren Interface ist > nicht ansatzweise so verdrahtungsintensiv, es ist recht gut dokumentiert > (zig Leute verwenden SD-Karten an irgendwelchen µCs) und es dürfte für > einen mit nur 1 MHz getakteten '09 auch mehr als ausreichend schnell > sein. Das klingt jetzt ein wenig "seltsam", aber ich möchte ungern "Grundlagen"-Technologien einführen die es damals so nicht gab, eine Realisierung mit heutigen Mitteln ist OK .. eine CF-Karte statt einer echten Festplatte z.B. IDE gab es damals schon, zumindest in den Anfängen. > Uiuiui. Ich hatte einen nativen K&R-C-Compiler namens "introl C", der > kannte halt kein C89 (das war, als ich mich damit beschäftigte, auch > noch nagelneu). Mit C konnte ich aber damals nicht sonderlich viel > anfangen.# Der GCC ist selbstverständlich ein Crosscompiler, den würde ich benötigen um ein angepasstes Contiki zu übersetzen. Introl und "McCosh" hab ich beide für direkt auf FLEX. > Hier übrigens gibt es einiges an Material zu Flex: > http://www.flexusergroup.com/flexusergroup/fug1.htm Ich bin schon auf deren Mailingliste und hab diese auch schon genutzt .. auf deren FTP Server liegt so einiges an SW, ja. >> Das ganze System ist übrigens mehr oder weniger ein auf 6x09 >> adaptierter EC65 > > Meines war weitestgehend auf Lochrasterplatinen gefädelt und nutzte > einen 68B09E mit 2 MHz Takt und einem daran angeschlossenen ebenfalls > mit 68B09E aufgebautem Text-Terminal (mit 68B45 als Timingcontroller), > nachdem ich eine Zeitlang auch ein Graphikterminal genutzt hatte (in der > c't 1984 vorgestelltes Selbstbauprojekt "Grip" mit Z80 und 6845, hatte > eine Auflösung von 720x280 Pixeln). > Die Textdarstellung des Graphikterminals gefiel mir nicht sonderlich, > also gabs dann den Selbstbau mit einer 9x12-Fontmatrix, mit 96 Zeichen > pro Zeile und 25 Zeilen ... oder sogar 50 im (flacker!) Interlacemodus. Spezifikationen zu diesem System: HD63C09 CPU, 48KB RAM, 8KB ROM Elektor-VDU Karte mit 6845 für Textgrafik 80x24, erweitert mit Attribut-RAM Floppycontroller WD2797, SASI-Interface (nur paar Bustreiber) Grafik "Kolorator" mit EF9367: 512x256 Pixel, 16 Farben Soundchip YM2203C Sprachaufzeichnung/Wiedergabe mit FX709 CODEC Der Soundchip kann offenbar so einiges wenn man ihn korrekt programmiert: http://www.youtube.com/watch?v=HqjQV1JUxjM (nur so als Beispiel) .. Gruß, Christian
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.