001
16.05.2018, 09:51 Uhr
mtx500
|
Zitat: | Allerdings habe ich mir sagen lassen, dass CP/M an Adresse 0000 hex freies RAM haben moechte. |
Richtig.
Zitat: | wie wird diese Sache in der Regel geloest? |
Es gab da unterschiedliche Ansätze.
1. Ziemlich einfach: Das EPROM ist im Adressraum zweimal eingeblendet, einmal unten und einmal oben. Als erstes erfolgt ein Sprung nach oben, dann folgt eine OUT-Befehl, der das untere Abbild des EPROMs aus dem Adressraum entfernt und dort RAM hinlegt.
2. Oder: EPROM ist nach dem Reset unten eingeblendet, der Rest des Adressraums ist mit RAM belegt. Am Beginn des EPROMs steht eine Routine, die den Inhalt des EPROMs in den hohen Adressbereich, also ins RAM, umkopiert und dann dorthin springt. Dort steht dann als eine der ersten Anweisungen ein OUT-Befehl, der das EPROM aus dem Adressraum entfernt und dort RAM hinlegt.
3. Komplizierter: Wie 1, aber statt eines OUT-Befehls erfolgt die Umschaltung automatisch, indem nach dem Reset durch eine Schaltung die Speicher-Zugriffe mitgezählt werden und bei Erreichen einer bestimmten Zahl das EPROM unten weggeblendet wird. Die Zahl muss halt so hoch sein, dass der Sprung nach oben erfolgt ist. Eine andere Variante davon ist, dass nicht die Adress-Dekodierung verändert wird sondern die Adresse selbst. Also der Prozessor greift zwar auf Adresse 0000 zu, aber die wird für eine bestimmte Anzahl von Zyklen auf z.B. E000 umgebogen. Kommt aber auf das Gleiche hinaus. |