Funkamateur 10/87 |
In diesem Beitrag wird für U-880-Systeme eine Alternative zum
Magnetbandspeicher und zur Diskette
vorgestellt. Für den Amateur dürfte der Schaltungsvorschlag
von Interesse sein. Durch eine
ROM/RAM-Diskette entstehen für den Anwender eine Reihe von
Vorteilen. Die wichtigsten Vorteile
wären:
- geringe Ladezeit für Programme gegenüber herkömmlichen
Disketten und Magnetbandspeichern;
- Aufruf zum Laden durch einen Kennbuchstaben;
- Funktion ohne Zusatzgeräte (wie Laufwerke).
Nachteile wären:
- relativ hoher Kostenaufwand durch die EPROMs;
- Programmierung der EPROMs.
Im vorliegenden Beitrag wird mehr auf die ROM-Diskette eingegangen, da
die RAM-Diskette analog
zur ROM-Diskette arbeitet.
Bei der vorgestellten ROM-Diskette kommt eine
weniger bekannte Eigenschaft des Mikroprozessors
U 880 D zur Anwendung. Bei den Ein- und Ausgabebefehlen für die
Adressierung der Peripheriebausteine
wird der niederwertige Adreßteil (A0...A7) des Adreßbusses
verwendet. Der Adreßbus besteht aus
16 Adreßleitungen. Bei den Blockeingabebefehlen (INI, IND, INIR,
INDR) sowie bei den
Blockausgabebefehlen (OUTI, OUTD, OTIR, OTDR) wird der
höherwertige Adreßteil (A8...A15) durch
das B-Register belegt. So ist es möglich, über eine
Peripherieadresse 256 Byte zu adressieren.
Dabei bildet das B-Register (A8...A15 des Adreßbusses) den
niederwertigen Adreßteil der ROM-Diskette
(A0...A7) und das C-Register (A0...A7 des Adreßbusses) den
höherwertigen Adreßteil, aus dem auch
die Selektierung der ROM-Schaltkreise gewonnen wird. Im Bild ist die
Schaltung einer
16-K-ROM-Diskette, die die Peripherieadressen C0H...FFH belegt,
dargestellt. Die ROM-Diskette
kann somit von C000H bis FFFFH durch die Blockeingabebefehle (für
RAM-Diskette auch
Blockausgabebefehle) adressiert werden.
Durch eine zweite ROM-Diskette, die die Peripherieadressen 80H bis BFH
belegt, können insgesamt
32 KByte adressiert werden. Dabei ist zu beachten, daß in diesem
Peripherieadreßbereich keine
Unterbrechungen durch andere Peripherien entstehen, denn das würde
zu einem erhöhten Softwareaufwand
führen.
Das Bild
zeigt die Schaltung der ROM-Diskette. Die Strichpunktlinie bildet die
Schnittlinie zwischen
Mikrorechnerbus (links) und Busplatine (rechts). Da das B-Register
abwärtszählend arbeitet, ist es
erforderlich, die Adresse zu negieren, damit die Programme von der
nieder- zu höherwertigen Adresse
abgerufen werden können.
Für die Programmierung der EPROMs für die ROM-Diskette
bestehen keine Besonderheiten. Die Arbeitweise
des in Tabelle 1 abgedruckten
Unterprogramms ist folgendermaßen.
Dem Unterprogramm sind folgende Parameter zu übergeben:
BC = Adresse des Programms in der ROM-Diskette,
(B = niederwertiger Adreßteil),
(C = höherwertiger Adreßteil);
DE = Anzahl der abzurufenden Bytes;
HL = Adresse im RAM-Bereich.
Das Kernstück des Unterprogramms, der INI-Blockeingabebefehl,
bewirkt ein Abwärtszählen des
B-Registers, so daß in den Zeilen 03 bis 06 die Negierung des
B-Registers erfolgen muß und ein
Aufwärtszählen des HL-Registerpaares. Die Zeilen 07 bis 13
dienen dem im Vergleich des
DE-Registerpaares auf 0000H, um einen Rücksprung zu
ermöglichen. Die Zeilen 14 bis 17 realisieren
die Erhöhung des C-Registers, um einen nahtlosen Übergang der
Adressierung (z.B. von C0FFH zu C100H)
zu erreichen. Die Zeilen 18 bis 24 führen einen Vergleich des
DE-Registerpaares auf 0000H durch,
und gewährleisten den Rücksprung in das Hauptprogramm nach
Abruf der geforderten Byte-Anzahl.
Die Tabellen 2 und 3
beinhalten einen Vorschlag
für den Abruf der Programme von der ROM-Diskette
über einen Kennbuchstaben. Dabei bildet:
- aaaa = die Adresse des Feldes;
- bbbb = die Adresse in der ROM-Diskette;
- cccc = die Adresse im RAM-Bereich;
- dddd = Anzahl der abzurufenden Bytes;
- eeee = die Adresse zum Start des Programms.
Dabei muß im A-Register der ASCII-Kode des Kennbuchstabens
enthalten sein. Zum besseren Verständnis
drei Beispiele (s. FA 11/86 bis 1/87):
- Feldbeginn 1F00H;
- Kennbuchstabe A "Editor/Assembler";
- Kennbuchstabe F "Falsche Bytes";
- Kennbuchstabe R "RAM-Testprogramm", s. Tabelle 4.
Wie oben bereits erwähnt, arbeitet die
RAM-Diskette analog zur ROM-Diskette. Der Abruf der Daten
erfolgt mit dem Ansprung auf Zeile 04 (s. Tabelle 1).
Dabei ist zu beachten,
daß das Programm auf
Adresse BC + 1 beginnt, bei mehrmaligem Aufruf erfolgt die Adressierung
durchgängig. Zum
Beschreiben der RAM-Diskette sind nur Zeilen 13/14 folgendermaßen
zu ändern:
- Zeile 13 EDA3 A1 OUTI
- Zeile 14 3E00 LD A,00H
101 KByte | 66 KByte | 25 KByte |
Bild 1 | Tabelle 1 | Tabelle 2 |
71 KByte | 29 KByte |
Tabelle 3 | Tabelle 4 |
Funkamateur 04/88 |
Die Systembusadresse A0 in Bild 1 bildet die Adresse A8 und
nicht die Adresse A0 der ROM-Diskette. Die Zeile 01 der Tabelle 3
muß
richtig lauten:
in Register A ASCII-Kode des Kennbuchstaben