U. ADEL, R. PÖHL

ROM/RAM-Diskette für U-880-Systeme


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.
 

Grundgedanke

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-KROM-Diskette, die die Peripherieadressen C0H ... FFH belegt, dargestellt. 

Bild 1: Stromlaufplan der 16-K-ROM-Diskette

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.
 

Schaltung und Programm

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 Unterprogramin 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.

Tabelle 1: EPROM-Unterprogramm

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. 

Tabelle 2: Abruf von ROM-Diskette
Tabelle 3: Abruf von ROM-Diskette

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.

Tabelle 4: RAM-Testprogramm
 

Bemerkungen für RAM-Diskette

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, 00 H