Forum: Mikrocontroller und Digitale Elektronik Cpu 6809 Programm kürzen/ändern - Sample-Player


von Peter G. (peter1957)


Lesenswert?

Hallo,

habe mir einen alten Sample-player - vermutlich einen der ersten - 
beschafft, der damals von einer Fa. namens WERSI als "Orgel" vertrieben 
wurde - Marke "Ein Silbereisen soll uns geschenket werden".
Dieses Gerät verfügt über eine recht umfängliche Rechnerarchitektur - 1 
Master-Cpu (68B09) plus 5 sog. "Slaves", um die shon erwähnten Samples 
"abzuspielen". Als Nebenfunktion werden die Tastatur- und 
Bedienknopfbetätigungen via Midi ausgegeben. Für mich maßgeblich ist 
ausschließlich die Midi-Funktion, die leider mit - scheinbar zufälligen 
- manchmal erheblichen Latenzen daher kommt.
(Ich vermute, daß die Midi-Befehle auf einem Stack vor sich 
hinschlummern und warten müssen, bis "im Vordergrund" die Samples 
gemanagt sind.)
Desweiteren kann ich die Bedientaster nur eingeschränkt nutzen; die 
Bedienpoti-Werte werden überhaupt nicht nach außen weitergereicht.

Ich stehe nun vor der Entscheidung, entweder die gesamte Elektronik 
auszutauschen und durch neue zu ersetzén ( siehe Midibox u.ä. ) oder 
meine alten Assemblerkenntnisse auszugraben und die Software zu 
modifizieren (Jmp beyond Silbereisen). Leider beziehen sich meine 
Assembler-Kenntnisse ausschließlich auf den 6502 und sind lange nicht 
mehr gebraucht worden, da ich recht zügig richtung "Hochsprachen" ging.

Bitte um Anregungen bzw. Empfehlungen zu folgenden Fragen:

Gibt es für den 6809 noch geeignete Disassembler/Assembler für eine 
WinXP-Umgebung?
Welche Eprom-programmer werden heutzutage benutzt, ebenfalls für XP 
geeignet?

Bin für jede Anregung dankbar.

Gruß

Peter

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Naja, wenn Du 6502-Assembler kannst, dann ist es nicht sehr schwer, Dein 
Wissen auf 6809-Assembler zu erweitern. Die beiden sind nämlich recht 
nah miteinander verwandt; der 6502 ist ein vereinfachter Abkömmling des 
6800, der wiederum ein Vorläufer des 6809 ist.

http://www.mikrocontroller.net/articles/Linksammlung#Assembler

von JojoS (Gast)


Lesenswert?

ich kenne den 6809 als recht bequem in Assembler zu programmierenden 
Prozessor, im Gegensatz zum 8080 wo min. 50% des Codes aus Ladebefehlen 
und Registerschiebereien bestand. Der 6809 hatte schon ordentliche 16Bit 
Register und konnte damit einfach auch grosse Tabellen indizieren, beim 
6502 musste man soweit ich weiss immer in 256 Byte Pages arbeiten. Es 
gibt sicher noch Werkzeuge für diese CPUs, aber so ein moderner AVR 
würde das Leben mit C-Programmierung und ISP doch etwas leichter machen. 
Kommt vielleicht auch drauf an wie original die Kiste bleiben soll.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

JojoS schrieb:
> ich kenne den 6809 als recht bequem in Assembler zu programmierenden
> Prozessor

Das würde ich als Untertreibung ansehen; gibt es denn schöner zu 
programmierende 8-Bit-Prozessoren? Die Kombination aus Registersatz, 
Vielfalt an Adressierungsarten und annähernd orthogonalem Befehlssatz 
machten das Ding zu einem wahren Schnuckelchen, dessen Bedeutung 
allerdings vom fast zeitgleich auf den Markt gekommenen 68k überschattet 
wurde.

von Erich (Gast)


Lesenswert?

@Rufus
Deine Lobeshymnen auf den Gurken 6809 langweilen...

Siehe meine Beiträge zu  Beitrag "Oszilloskop - Lüfter leiser bekommen?"
vom  Datum: 19.01.2011 09:24   sowie   Datum: 19.01.2011 10:08

Und nochmals   http://www.amazon.de/gp/product/images/3404604725

von JojoS (Gast)


Lesenswert?

naja, schon damals gab es den Monopolisten Intel der 8080 & Co. in alles 
hineindrücken konnte. Der grösste Krampf war dann der 8086 vs. 68k, aber 
so war es halt.
Also 6809 drin lassen und Eprom Simulator besorgen um wenigstens nicht 
ständig Eproms brennen zu müssen, das wäre mir etwas zu viel Nostalgie.

von Jörg H. (idc-dragon)


Lesenswert?

Ich habe damals auch mit dem 6809 angefangen. Zu seiner Zeit war das 
vielleicht der schönste und schnellste 8Bitter. Wie alle damals hat er 
aber kaum Register.

Mein erster Homecomputer war ein Dragon 32, darin tickte das Ding mit 
knapp einem Megaherz. Später ein Dragon 64, dann ging es in der Familie 
nicht weiter, der Spielzeughersteller war pleite. In USA war der fast 
baugleiche Tandy-Radioshack Color Computer verbreitet.
Aber es gab OS9, ein Betriebssystem was den Usern und der Maschine 
voraus war. ;-)  Multitasking und Multiuserbetrieb waren möglich.

Um auf den OP zurückzukommen, vielleicht gibt es in dem Zuge Cross-Tools 
und Emulatoren.

Jörg

von Peter G. (peter1957)


Lesenswert?

Vielen Dank für die Hinweise; komme aber im Moment nicht weiter. Gibt es 
vielleicht jemanden, der mir die vorhandenen EProms (2Stück) auslesen 
könnte - gegen Entgelt versteht sich? dann könnte ich anhand einer 
Disassemblierung noch immer entscheiden, ob ich mich an eine Änderung 
des Codes heranwage.

Gruß

Peter

von karadur (Gast)


Lesenswert?

Hallo

erzähl mal welche Eproms. Typ?
Auslesen könnte ich machen gegen Rückporto.

von R. F. (rfr)


Lesenswert?

http://john.ccac.rwth-aachen.de:8000/as/

hostet eine Assembler, der das kann. Disassembeln anscheinend nuicht, 
aber da findet sich sicher was,notfalls schreib was selbst, siehe 
LEX/Yacc oder sowas.

Bei sourceforge <habe ich auch mal was gesehen, such mal da.

Gruss
Robert

von Peter G. (peter1957)


Lesenswert?

@karadur

Vielen Dank für das Angebot, komme gerne darauf zurück. Die 
Typenbezeichnungen lauten: TMM27128D (16kx8 nMOS)
                           MSL27256k (32kx8 nMOS)
Beide mit je 28Pin.
Gibt es vergleichbare , aktuelle EEProms, die ich ersatzweise verwenden 
könnte oder steigt dann die CPU aus?

@Robert

Danke für die Ref-Adresse. Werde mir den Assembler sicher anschauen, 
auch wenn ich gegenüber den "DieKannAllesSoftWaren" skeptisch bin. Meine 
mich dunkel erinnern zu können, mir bei 
"EierlegendenWollmichSauKühen"-Projekten das ein- oder andere Magen- und 
Darmgeschwür geholt zu haben.

Gruß  Peter

von karadur (Gast)


Lesenswert?

Hallo

werde ich morgen prüfen, sollte aber gehen.

Kontakt: such mal nach xedoc. Ist meine firma.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Disassembliern kann man alles mögliche prima mit "IDA Pro". War das 
nicht sogar frei verfügbar?

von karadur (Gast)


Lesenswert?

Hallo

das sind alte Standart-Eproms. Gibt es heute als CMOS. Wobei die langsam 
auch vom Markt verschwinden. Es gibt Flashroms die pinkompatibel sind.

Lassen sich mit meinem GALEP4 alle bearbeiten.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Hallo
Ich habe den Wersi-Synthesizer MK1 von 1986, da arbeiten zwei 6809 
teilweise mit dem selben Adressraum (einer heißt 68E09 oder so ähnlich). 
Ich habe das mal vor Jahren ausgelesen und disassembliert, weiß nicht 
mehr mit welchem Programm. Außerdem sind noch 21 Z8-Prozessoren damit 
beschäftigt, 20 Schwingungen zu erzeugen und einer für die 
Tastenabfrage.
Christoph

von Bernhard R. (barnyhh)


Lesenswert?

Peter G. schrieb:
> Danke für die Ref-Adresse. Werde mir den Assembler sicher anschauen,
> auch wenn ich gegenüber den "DieKannAllesSoftWaren" skeptisch bin. Meine
> mich dunkel erinnern zu können, mir bei
> "EierlegendenWollmichSauKühen"-Projekten das ein- oder andere Magen- und
> Darmgeschwür geholt zu haben.

Ich habe diesen Assembler seit kurzem in Benutzung (die aktuelle 
"BETA"-Version). Auf mich macht er einen recht guten Eindruck. 
Insbesondere die Dokumentation - Stiefkind vieler Software - wirkt auf 
mich sehr positiv.

Bernhard

von R. F. (rfr)


Lesenswert?

Die Möglichkeit, den asm auf neue Chips zu erweitern, gefällt mir sehr.
Gruss
RFr

von Michael E. (cuby)


Lesenswert?

Christoph Kessler (db1uq) schrieb:
> Ich habe den Wersi-Synthesizer MK1 von 1986, da arbeiten zwei 6809
> teilweise mit dem selben Adressraum (einer heißt 68E09 oder so ähnlich).

Der 68E09 konnte mit einem externen Takt versorgt werden. WERSI hat da 
die Eigenschaft der 68xx (und auch 65xx)-CPUs ausgenutzt, dass nur in 
der ersten Hälfte des Takts auf den externen Bus zugegriffen wurde. 
Damit können sich zwei 6809 den Bus teilen, wenn der Speicher schnell 
genug ist (ähnlich wie Videozugriffe beim Apple II oder C64, die IIRC 
auch die inaktive Busphase des 6502/6510 nutzen). Der zweite 6809 muss 
dann aber mit dem invertierten Takt des ersten versorgt werden - und das 
ist eben das Besondere am 68E09. Habe auch noch ein paar WERSI-Platinen 
hier rumliegen... der Werksverkauf bei WERSI war immer toll.

Die WERSI-Ingenieure haben da eine Menge Aufwand reingesteckt, was 
leider auch den Preis der Hardware "leicht" in die Höhe getrieben hat 
(Transputer in späteren High-End-Orgeln). Einer der Gründe, warum es die 
Firma leider nicht mehr gibt :-(. Wenn man sich anschaut, wie wenig 
Hardware eigentlich in einem aktuellen Synthesizer drinsteckt, ist das 
schon erschreckend. Der MicroKorg kommt z.B. mit einem Renesas H8S/2320 
als Steuer-CPU und einem Motorola DSP56362 für die Signalverarbeitung 
aus.

Aber der 6809 war zum Rechner selbst bauen in den 80ern wirklich klasse 
:-).

-- Michael

von rogie (Gast)


Lesenswert?

Michael Engel schrieb:
> Einer der Gründe, warum es die
> Firma leider nicht mehr gibt :-(.

Wieso? Gibts doch noch: http://www.wersi.net/

Böhm gibt es nicht mehr.

von Michael E. (cuby)


Lesenswert?

rogie schrieb:
> Wieso? Gibts doch noch: http://www.wersi.net/
>
> Böhm gibt es nicht mehr.

Naja, die Marke WERSI ist vom MusicStore in Köln übernommen worden. Das 
war's dann aber leider auch schon. Siehe auch 
http://www.jazzhooves.com/2010/03/the-end-of-the-road-for-wersi/

In der Zentrale in Halsenbach sitzt jetzt ORLA/Keyswerk/Lowrey: 
http://www.yourhobby.nl/forumorgel/index.php?topic=5257.0;wap2

-- Michael

von rogie (Gast)


Lesenswert?

Ok, das erklärt natürlich deine erste Aussage. ;-)

von Peter G. (Gast)


Lesenswert?

Ich muss das Thema nochmals aufgreifen, da die Disassemblierung mich 
bisher nicht weiterbringen konnte. Das Problem besteht nicht so sehr 
darin, daß ich die einzelnen Befehlskonstrukte nicht entschlüsseln 
könnte - die Cpu ist ausreichend dokumentiert und so weit weg vom 6502 
ist der Befehlssatz beileibe nicht. Ich habe mich bisher am "CWAI"- 
Befehl orientiert (Clear CC and wait for interupt), da ich vermute, daß 
die Inputs über die Interupt-Steuerung laufen. Es gibt etwa 10 Sequenzen 
mit CWAI- Befehlen. Um deren Relevanz ausloten zu können, müsste ich 
aber Ausgaben auf das Display machen können. Leider ist es mir bisher 
nicht gelungen, die Teile zu identifizieren, die die Display-Steuerung 
übernehmen. Auch nicht die im Klartext vorhandene Begrüssungsmeldung hat 
mich da weitergebracht; ich habe keine Code-Position gefunden, die 
diesen Speicherbereich referenziert. Im Moment sehe ich nur die 
Möglichkeit, mich mit ein paar Loop-Konstrukten durch die Memory-Map zu 
hächeln, um dann irgendwann eine Ausgabe auf dem Display zu bekommen. 
Ich liste hier Teile der Memory-Map auf. Vielleicht hat jemand eine 
Idee, wo ich am besten ansetze:

6800-69FF DCS
6A00-6BFF ADC
6C00-6DFF Timer
6E00-6FFF I/O
     6E00 Bank, 6E01 Peradr, 6E02 Panclk, 6E03 Potadr, 6E04 Keybin,
     6E05 Pan in, 6E06 Setres, 6E07 Retres
7000-77FF RAM 1
7800-7FFF RAM 2
8000-FFFF ROM 1

Bin für jede Anregung dankbar.

Peter

von Jörg H. (idc-dragon)


Lesenswert?

Sehr vielleicht könntest du das Programm in einem Debugger mit 
CPU-Simulator laufen lassen?

So habe ich mich in einem anderen System mal vorgetastet. Der Lauf im 
Simulator scheitert natürlich schon recht früh an aller möglicher nicht 
vorhandener Hardware. Aber so habe ich diese Codestellen identifiziert 
und  "rausgeNOPt". In einem Debugger kann man Breakpoints auf 
Speicherzugriffe setzen, wie deine Begrüßungsmeldung.

Das ganze Unterfangen per Reverse Engineering eine optimierte Firmware 
für solch ein Gerät zu erstellen erscheint mir sehr, nun ja, 
ungewöhnlich und mühsam, Hut ab. Neu entwickeln ist wahrscheinlich 
einfacher, statt der Bastelzeit z.B. bei McDonalds Burger braten und vom 
Verdienst was Neues kaufen allemal. Was ist das Besondere an dem Gerät?

Jörg

von Peter G. (Gast)


Lesenswert?

@Jörg

"Was ist das besondere an dem Gerät ..."

Ich spiele über das Gerät div. Pfeifenorgel- und Hammond-Emulationen, 
die es mittlerweile in unglaublicher Qualität für PC gibt. Das besondere 
an dem Gerät ist, dass - aus Sicht des Spielgefühls - alles passt. Zwei 
Vollmanuale, Vollpedal mit passender Sitzbank, Endstufen mit ausreichend 
Leistung (Ich  führe das Ausgangssignal der PC-Soundkarte zurück auf die 
Endstufe der Console) und - verbesserungswürdiger, aber brauchbarer 
Klangabstrahlung. Und so ganz neben bei sitze ich an einem Spieltisch, 
der noch aus "richtig Holz" gefertigt wurde. Das SpielGEFÜHL passt eben, 
das stellt sich bei über einander gestapelten Plastik-Midi-Keyboards 
einfach nicht ein.

"Reverse Engeneering ..."

So hoch möchte ich die Geschichte nicht hängen. Nach 25 Jahren 
IT-Geschäft (in anderen Zusammenhängen) sehe ich mich eher bei "Es wird 
noch immer mit Wasser gekocht - man muss nur die Stellen finden, wo die 
richtigen Feuerchen gemacht werden."

"Neuentwicklung ..."

Wenn ich die Elektronik durch eine andere austauschen würde, müßte ein 
PIC-Baustein programmiert werden. Ob ich nun PIC oder 6809 programmiere 
-
das bleibt sich gleich. Beim Austausch der Elektronik sehe - nach aller 
Erfahrung - noch ganz andere Probleme auf mich zukommen.

Der Tipp über einen Simulator der Display-Routine auf die Schliche zu 
kommen, ist doch schon mal ein Ansatz. Gibt es Empfehlungen für bewährte 
Simulatoren?

Einstweilen

Gruß

Peter

von BlackyJack (Gast)


Lesenswert?

Hi,

Um einen Programmanfang zu finden, mußt Du nur wie die CPU selbst 
vorgehen.
Diese holt sich den RESET Vector aus den Adressen FFFE und FFFF.
(Aber auch die anderen Interrupt etc. Vektoren welche die
CPU kennt!)

Aus der MEMORY-Map ist ja leicht zu erkennen, dass in diesem
Bereich das EPROM liegt.
Um diesen Offset des EPROMS sind daher auch Zugriffe auf den Speicher
zu korrigieren.

... und los geht's ...

Gruß
Rainer

von MCUA (Gast)


Lesenswert?

>Wie alle damals hat er aber kaum Register.
Mehr braucht man auch nicht.

>Der MicroKorg kommt z.B. mit einem Renesas H8S/2320 als Steuer-CPU und
>einem Motorola DSP56362 für die Signalverarbeitung aus.
Und heute geht das mit nur einem Chip


68HC11,12 haben ebenfalls 2 zusammenfassbare 8bitAkkus und 
X,Y-Index-Reg.
68HC16 hat davon noch etwas mehr, sogar MAC.
M377xx-Controler haben 2 Akkus, die unabhängig voneinander für 8 oder 16 
bit benutzt werden können.
Auch mit M16C (einige Data/Adr-Register) könnte man ähnlich (sogar noch 
besser, ua echte Mem-Mem-Befehle(!)) programmieren.
ST6,7, STM8 sind auch Akku-basierend, allerd. nur mit 1 8bitAkku.
Fujitsu hat ebenfalls welche (8,16bit), die akkubasiert sind, mit 
Registerbänken.

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
Noch kein Account? Hier anmelden.