Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » ROM für Mansfeld Prozess Controller » Themenansicht

Autor Thread - Seiten: -1-
000
27.04.2012, 21:55 Uhr
waldheinz



Wie vor einer Weile schon mal hier im Forum erwähnt arbeite ich an einer MPC4 Emulation. Mit dieser kam ich eigentlich auch stetig voran, mangels Zeit zwar eher langsam, aber immerhin.

Im Moment hänge ich aber leider fest. Ich habe einen Teil des Grafikcontrollers (U82720) implementiert und der Urlader initialisiert diesen auch sinnvoll. Leider wird es danach etwas wild:

Kurz nach dem initialisieren der Grafik werden merkwürde Daten mitten in den Stack geschrieben, ein RET geht daraufhin ins Nirwana statt in die rufende Funktion zurück, der GDC wird in einer Endlosschleife immer wieder initialisiert und ich bin ratlos.

Ehrlich gesagt glaube ich, dass der ROM wie er mir vorliegt (MPC4_EPROM.BIN) nicht korrekt ist: An Bytes 2048 - 4095 steht *exakt* das gleiche wie an Bytes 0 - 2047. Ich glaube nicht, dass diese Redundanz gewollt ist.

Mein ROM ist exakt 4 kib groß und hat die MD5
> aa3de6f1aec78fbf95552da34d092654.

Frage: hat jemand ein anderes ROM zu bieten, von irgend einem MPC? Es steht ein langes WE bevor, und ich hätte gerne was zu tun. :-)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
28.04.2012, 11:13 Uhr
waldheinz



Ich habe ganz weit hinten noch ein ROM gefunden, welches besser aussieht. Aber falls irgendwer noch was zum Thema MPC hat, bin ich immer dankbar.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
28.04.2012, 11:24 Uhr
Rüdiger
Administrator



Zitat:
waldheinz schrieb
Frage: hat jemand ein anderes ROM zu bieten, von irgend einem MPC?

Du hast Post.
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
29.04.2012, 08:03 Uhr
jmueller



Ich hätte auch großes Interesse an Unterlagen zum MPC4
(Schaltpläne, ROM- und Disk-Image, Doku).
Könntet ihr das bitte auch mir schicken?

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
29.04.2012, 12:18 Uhr
waldheinz



Ich danke für die reichlichen Rückmeldungen (insbesondere per Mail). Einige haben mich gefragt, ob ich ihnen das eine oder andere zukommen lassen könnte. Ich habe mich daher entschieden, mein "Archiv" hier:

> https://www.dropbox.com/sh/0xfr5sy8tyl5711/TtchHDD_zi

zugänglich zu machen. Dabei sind insbesondere sehr schöne Schaltpläne von Ingo, ein paar von mir zusammengesuchte Datenblätter (i.d.R. von westlichen Ersatztypen) und ROMs von mir sowie Rüdiger und Annemarie. Ich habe auch noch zwei SCP/M 2.89 Systemdisketten reingetan.

Ich habe zwar noch ein paar mehr Disketten - Images, aber auf denen ist noch potentiell privates drauf. Ich werde diese daher nicht öffentlich zum download anbieten, bis ich mich nicht in meniem Emulator davon überzeugen konnte, dass sie "sauber" sind. Das könnte noch dauern, also lieber nicht die Luft anhalten. :-)

PS: Ist jemand in der Lage, die zwei ROMs genauer zu identifizieren? Version o.ä.? Ich habe mich mit denen noch nicht im Detail beschäftigt, aber schon ein "strings <dateiname>" zeigt große Unterschiede...

PPS: Falls jemand noch weiteres Material zum MPC hat und es mir zukommen lassen mag, würde ich es zu meinen Sachen mit dazusortieren. So haben "alle" was davon. Mir ist zwar auch klar, dass dropbox sicher nicht gerade die super - Archiv - Lösung ist, aber als Arbeitsgrundlage ist es ganz brauchbar.

Dieser Beitrag wurde am 29.04.2012 um 12:24 Uhr von waldheinz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
29.04.2012, 13:44 Uhr
jmueller



@waldheinz:

Dankeschön!

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
29.04.2012, 15:40 Uhr
jmueller



Nachdem ich mir die Schaltpläne des MPC4 etwas genauer angesehen habe,
sind mir doch ein paar Unklarheiten aufgefallen.
Vielleicht hat sich schon mal jemand mit der Materie beschäftigt
und kann da Antworten geben:

1. Speicherverwaltung: ROM-Abschaltung, RAM-Bänke
Hat schon mal jemand genau analysiert, bei welchen Konstellationen
welcher Speicher bzw. RAM-Bank an welchen Adressen eingeblendet wird?
Da spielen ja neben der Ausgabe an PIO Port A auch die IO-Adresse FE,
das DMA-Interrupt-Signal und der Schalter S1.3 mit hinein.

2. GDC IO-Adresse
Die Aktivierung des GDC erfolgt über das Signal X20.
Ich konnte aber nirgends erkennen, wo es erzeugt wird.
Welche IO-Adresse hat denn der GDC?

3. FDC Terminal Count
Das TC-Signal liegt am Steckverbinderanschluss B3 an.
Dieser ist aber laut Schaltplan des CPU-Teils mit DMA-IEO und CTC-IEI verbunden,
irgendwie völlig unlogisch.

4. An welchem SIO-Port wird die Tastatur angeschlossen?

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
29.04.2012, 18:08 Uhr
Mobby5



@jmueller

zu 4. Die Tastatur hängt an SIO 18.1 Kanal B. Anschluß über die Diodenbuchse, Pin's X8.1 bis X8.4. Zu sehen auf Plan Process-Controller 3/5 Blatt 3/2.
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
29.04.2012, 22:29 Uhr
waldheinz



Zu 1)

Ich habe das so verstanden, dass der Eprom immer auf 0xC000 zu sehen ist. Zusätzlich wird er nach dem Reset erst mal ab Adresse 0 eingeblendet, und das wird beim ersten I/O Zugriff abgeschaltet (FF 9.1). Daher macht der Urlader halt auch erst mal einen Sprung nach 0xC000 und kann dann mit "normaler" Adressierung arbeiten.

Was mir im Weiteren noch etwas komisch vorkam ist die Auswahl der RAM - Bank. So ziemlich als erstes wird PIO 13 initialisiert, und zwar so (Log aus meinem Emulator):

> PIO_13 (Port A): set mode 3 ("control" mode)
> PIO_13 (Port A): set IO mask 10000000b
> PIO_13 (Port A): set data 01000000b

Also sind dann am DC 8.3 A0 A1, A2 auf '0' und E3 ist '1'. Das würde dann bewirken, dass Bank 4 ausgewählt ist. Auf dem Plan zur RAM - Karte sind aber nur Bank 0..3 vorhanden, was mir ein kleines Rätsel aufgibt. Ich habe dieses aber erst mal beiseite geschoben und gehe einfach davon aus, dass im gesamten Addressraum RAM vorhanden ist. Wie die Bank nun heißt ist ja eigentlich auch egal. :-)

Wenn S1.3(1) geschlossen ist, dann ist /COM ja gleichzeitig /CE für den Eprom und schaltet über das NAND auf der RAM-256 auch noch Bank 0 "tot", damit hat der Eprom den Bus für sich.Mir hat das erst mal gereicht zum weitermachen. Ich habe das ganze so interpretiert, dass man bei S1.3 noch zusätzliche RAM - Bereiche totschalten kann, indem man noch weitere Kontakte verbindet. Vielleicht für Erweiterungen, die noch ROM mitbringen?

Zu 2)

Der GDC hängt an Port 0x70 / 0x71 (Data/Command), zumindest versucht dort der Urlader mit ihm zu reden, und was da ankommt macht auch Sinn.

Zu 3)

Verzeiht mein Unwissen, aber was ist TC? Ich sollte vielleicht dazu sagen, dass diese MPC - Geschichte mein erster Versuch im Schaltplan - lesen (und Emulator basteln) überhaupt ist, und mein Wissen über die Technik beschränkte sich bis vor kurzem im Wesentlichen darauf, dass ich vor 20 Jahren mal davor saß und es toll fand. Das macht manches nicht unbedingt einfacher zu verstehen...

-Matthias
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
04.05.2012, 21:06 Uhr
jmueller



Nach der Hexenvebrennung am Montag und dem 1. Mai habe ich nun mal wieder
etwas Zeit gefunden für den MPC4:



Zitat:
Was mir im Weiteren noch etwas komisch vorkam ist die Auswahl der RAM - Bank.
...
Das würde dann bewirken, dass Bank 4 ausgewählt ist. Auf dem Plan zur RAM - Karte sind aber nur Bank 0..3 vorhanden, was mir ein kleines Rätsel aufgibt.

Auch ich finde keine Lösung für dieses Rätsel, außer dass der Plan falsch beschriftet sein könnte.



Zitat:
Ich habe dieses aber erst mal beiseite geschoben und gehe einfach davon aus, dass im gesamten Addressraum RAM vorhanden ist. Wie die Bank nun heißt ist ja eigentlich auch egal. :-)

Sicherlich ist von Anfang an RAM eingeblendet, sonst würden ja die CALL-Befehle nicht funktionieren.
Aber spätestens wenn ein Programm die Bänke umschaltet, muss es dann schon passen.
An der Stelle ergibt sich übrigens das nächste Unlogische für mich: So wie ich es sehe,
werden immer die kompletten 64K umgeschalet, d.h., bei der Umschaltung sägt das
gerade laufende Programm sich selbst den Ast ab, auf dem es sitzt.
Das Programm würde ja ab da mit undefinierten Code weiterlaufen.
Bei anderen Computern wird deshalb der Adressraum in Pages eingeteilt,
die separat umschaltbar sind.



Zitat:
Verzeiht mein Unwissen, aber was ist TC?

TC heißt Terminal Count. Mit diesem Signal wird eine laufende IO-Operation des FDC beendet.
Wenn man TC nicht auslöst, läuft der FDC in einen EOT-Fehler (End Of Track).
Es gibt zwar Computer, die ohne TC arbeiten (CPC, KC compact), aber dann muss die
Software ein EOT als Erfolgszustand behandeln.
Im Normalfall, und ich glaube, da gehört auch der MPC4 dazu, wird TC verwendet,
und dann muss man es auch auslösen können.
Solange die TC-Problematik nicht geklärt ist, braucht man eigentlich mit einer Emulation
gar nicht anfangen, da man schon das Booten nicht hinbekommen wird.



Zitat:
...mein erster Versuch im Schaltplan - lesen (und Emulator basteln)...

Ich finde dich sehr mutig!
Neben der genauen Kenntnis des zu emulierenden Systems ist die genaue Funktionsweise
der hochintegrierten Schaktkreise notwendig. Der Z80-Prozessor ist sehr gut erforscht
und dokumentiert. Da gibt es auch genügend Beispielcode. PIO und CTC gehen auch noch.
Bei den anderen Peripherieschaltkreisen sieht das aber schon anders aus.
Meistens ist nur der übliche Erfolgsfall dokumentiert.
Emulieren muss man aber auch das links und rechts davon mögliche,
denn es gibt garantiert Programme, die dort hineinlaufen.
SIO, DMA und GDC bieten sehr weite programmtechnische Freiräume
und sind deshalb für die Emulation hoch komplex.

Ich selbst habe nach mehrjähriger Arbeit im JKCEMU "gerade mal" die Schaltkreise
CPU, PIO, CTC und FDC vollständig umgesetzt.
GDC ist nur partiell realisiert und die SIO sogar nur rudimentär.
Dort wo im JKCEMU die GDC-Emulation zur Anwendung kommt (A5105 und Z1013)
werden die Grafikfunktionen des GDC nicht benutzt.
Deshalb konnt ich mir das sparen. Aber der MPC4 scheint diese Funktionen zu verwenden.

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
13.05.2012, 23:11 Uhr
waldheinz



Ich habe mir die Sache mal noch ein wenig angeschaut und das mit dem TC jetzt glaube so weit verstanden: Der Datentransfer von der Diskette wird schlicht über den DMA abgewickelt, und der DMA ist auf Interrupt-Betrieb programmiert. Wenn also von der Diskette gelesen werden soll, dann wird dem DMA gesagt wo er hinschreiben soll, und dem FDC von wo er lesen soll, und dann machen die beiden das erst mal untereinander aus. Wen der DMA die gewünschte Anzahl Bytes gelesen hat, meldet er das der CPU über einen Interrupt und wird dabei auch seinen IEO auf low ziehen. Und das ist eben auch gleich der TC für den FDC.

Damit kann man den DMA im IRQ - Betrieb also nur zusammen mit dem FDC benutzen, oder man darf halt nicht gleichzeitig mit dem FDC arbeiten, wenn der DMA noch was anderes erledigen soll. Eigentlich keine sehr große Einschränkung, oder?

Ob das ganze tatsächlich so abläuft kann ich mitteilen, wenn ich DMA und FDC beigebracht habe, miteinander zu reden. Im Moment kann im Emulator leider nur die CPU mit der Peripherie sprechen, für die anderen Fälle muss ich mir mal noch was nettes einfallen lassen, wie ich das im Detail umsetze.

Den GDC verwendet der MPC tatsächlich im Grafikmodus, und mangels Zeichensatz-ROM wohl auch ausschließlich. Ich habe von dem Teil auch erstmal nur die Funktionalität umgesetzt, die zur Ausgabe der Boot - Meldungen notwendig ist:

> http://waldheinz.de/experiments/mpc/

Freue mich aber schon darauf, dann mal dieses Grafik - Demo - Programm starten zu können und am GDC rumzubasteln bis es passt. :-)

Und noch was anderes: Kann mir jemand mit Doku zum Protokoll der K7672.03 Tastatur auf die Sprünge helfen?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
14.05.2012, 18:14 Uhr
Mobby5




Zitat:
waldheinz schrieb
Kann mir jemand mit Doku zum Protokoll der K7672.03 Tastatur auf die Sprünge helfen?

Schon, fragt sich nur, mit welchem Befehlscode die Tastatur angesteuert wird (oder auch nicht?)
Entweder wird sie, wie vom A7100 angesprochen, dann wären diese Unterlagen interessant. Oder eben (zumindest in Teilen), wie vom A7150. Dafür müsste man die A7150-Dokus nehmen.
Beide male wären das (jeweils für den oben genannten Rechner):
-Band 1 Rechner und Geräte
-Anleitung für den Bediener Teil 1 - Hardware

Versuch mal rauszufinden, ob und was nach dem Einschalten zur Tastatur gesendet wird.
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
14.05.2012, 18:19 Uhr
Rüdiger
Administrator



Zitat:
Mobby5 schrieb
Entweder wird sie, wie vom A7100 angesprochen,

Das wird sicher so sein.
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
14.05.2012, 19:24 Uhr
Mobby5



Wieso wird das sicher so sein?
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
18.05.2012, 11:06 Uhr
waldheinz



Nachdem ich jetzt dazu gekommen bin, mal wieder ein bisschen am MPC zu basteln, kann ich sagen:

* das der SIO nur zum Empfangen programmiert wird,
* keine Bytes an die Tastatur zur Initialisierung geschickt werden,
* der Empfang 8 Daten / 1 Stopbit erwartet und
* der IV wird auf 0x0 gesetzt.

Letzteres kam mir zwar etwas komisch vor, aber da alles andere aber sinnvoll ist, wirds wohl so sein. Einfach mal gucken, ob's funktioniert. :-)

Was sollte ich denn von der Tastatur an den SIO senden, um sagen wir mal "LA<RETURN>" einzugeben? Ist das A7100 oder A7150? Kann mir jemand die entsprechende Doku zur Verfügung stellen?

Dieser Beitrag wurde am 18.05.2012 um 11:10 Uhr von waldheinz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
18.05.2012, 11:36 Uhr
Mobby5



Grundsätzlich werden erstmal die ASCII-Codes der entsprechenden Tastenfunktion an den Rechner gesendet. Bei Drücken von Control+Taste der entsprechende Controll-Steuercode: z.Bsp: C=43h; c=63h; Ctrl-C=03h; Ctrl-c=03h

LA<Return>=4Ch,41h,0Dh

Ist zwar für den A7150:

http://www.tiffe.de/Robotron/A7150/Band1_Rechner_und_Ger%e4te.pdf

Für Dich ist dann aber NUR Seite -107- (im AdobeReader Seite 108) und Seite -44- (im AdobeReader Seite 45) obere Tabellen interessant. Die anderen Seiten bitte ignorieren!
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden

Dieser Beitrag wurde am 18.05.2012 um 11:37 Uhr von Mobby5 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
18.05.2012, 13:45 Uhr
waldheinz



Besten Dank für die Auskunft, das funktioniert so weit! Damit kann ich nun mit dem Urlader im ROM "spielen". :-) Sehe ich das also richtig, dass die Tastatur (zumindest im vom MPC verwendeten Modus) nur "Buchstabe wurde eingegeben" schicken kann, aber nicht "Taste runter" und "Taste hoch"?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
18.05.2012, 18:37 Uhr
Mobby5




Zitat:
waldheinz schrieb
Sehe ich das also richtig, dass die Tastatur (zumindest im vom MPC verwendeten Modus) nur "Buchstabe wurde eingegeben" schicken kann, aber nicht "Taste runter" und "Taste hoch"?

Ja.
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek