Mikroprozessortechnik 03/88

 

RAM-Disk für K-1520-Systeme

Wolfram Kammer, Wolfgang Spindler
VEB Elektronische Bauelemente Teltow

RAM-Disks sind nützliche Einrichtungen, die wohl besonders von denjenigen sehr geschätzt werden, die an Rechnern mit Kassettenbandspeichern ihre Geduld üben müssen. Aber auch im Vergleich zur Diskette kann die RAM-Disk erstaunliche Geschwindigkeit bieten. Wer schon einmal in längeren Assemblerquellen mit einem Textverarbeitungsprogramm wie TP herumgesucht hat, weiß ein Lied davon zu singen. Hier wird nun eine konkrete Schaltung einschließlich Layout vorgestellt, die außer einer RAM-Disk von 256 KByte auch noch einen kompletten Hauptspeicher sowie eine MEMDI-Erzeugung enthält. Bild 1 zeigt die Schaltung. Die eigentliche RAM-Disk wird über IN- und OUT-Befehle bedient und tangiert den Hauptspeicher nicht.

Funktion der RAM-Disk

Zum Adressieren von 256 KByte werden 18 Adreßbits benötigt. Die niederwertigsten 8 Bit stellt ein vom Programm mittels OUT-Befehl ladbarer Adreßzähler (2 x 74LS193) bereit. Die nächsthöheren 8 Bit müssen vom Programm in ein Oktallatch (DS8282) geladen werden. Die restlichen 2 Bit stecken in der Peripherieadresse, unter der das Bedienprogramm anschließend die RAM-Disk liest oder beschreibt. Nach jedem Zugriff inkrementiert die Zugriffslogik der RAM-Disk den o.g. Adreßzähler. Damit sind INIR- und OTIR-Befehle für das Umladen der Daten bestens geeignet. Die RAM-Disk belegt insgesamt 8 E/A-Adressen nach folgendem Schema:
Grundadresse plus
0 = Lesen/Schreiben Bank 1
1 = Lesen/Schreiben Bank 2
2 = Lesen/Schreiben Bank 3
3 = Lesen/Schreiben Bank 4
4 = nicht benutzen
5 = nicht benutzen
6 = mittlere 8 Adreßbit laden
7 = niedrigste 8 Adreßbit in den Zähler laden.
Die Grundadresse kann man in gewissen Grenzen frei wählen, indem man das Wickelfeld 0 entsprechend verdrahtet.

Funktion des Hauptspeichers

Der Hauptspeicher umfaßt volle 64 KByte. Damit außer ihm auch noch andere Baugruppen (Urlader, Bildschirm usw.) im Speichervolumen betrieben werden können, besitzt er eine Einrichtung zum Entadressieren.
Dazu besitzt die Baugruppe einen Eingang für das K1520-Bussignal READY. Aktiviert bei einem Speicherzugriff eine andere Baugruppe diese Leitung, so tritt der Hauptspeicher in dem Bereich, den die andere Baugruppe belegt, in den Hintergrund, indem der Lese- oder Schreibzugriff in einen Refreshzyklus umgewandelt wird. Dafür stehen bei Lesezyklen ca. 100 ns und bei Schreibzyklen etwas mehr als 1 Systemtakt zur Verfügung. Schaltet man mittels MEMDI-Signalen die anderen Baugruppen ab, so kommt automatisch der Hauptspeicher wieder hervor. Dieses Verfahren erleichtert die Speicherverwaltung ganz erheblich.
Um den Hauptspeicher auch bei 4 MHz Systemtakt ohne die lästigen WAIT-Zyklen betreiben zu können, schaltet die Zugriffslogik das RAS-Signal ca. 50 ns nach Aktivwerden des CAS-Signales ab. Damit wird den Speicherschaltkreisen genügend Zeit zum Rückschreiben der Information in die Matrix verschafft. Das ist besonders wichtig für die sehr kurze Zugriffslücke zwischen M1- und Refreshzugriff beim Befehlsholezyklus des U880.

Funktion der MEMDI-Erzeugung

Dieser Schaltungsteil besteht aus 4 Flipflops, die über 8 OUT-Adressen einzeln gesetzt und gelöscht werden können. Die von den OUT-Befehlen ausgegebenen Daten sind dabei belanglos. Durch Systemreset werden alle vier Flipflops gelöscht. Welche MEMDI-Signale dabei gesetz/gelöscht werden, kann man durch DIL-Schalter oder Wickelbrücken frei wählen. Leider war auf der Leiterplatte nicht mehr genügend Platz, so daß der Koppelbussteckverbinder entfallen mußte. Deshalb müssen die MEMDI-Signale am Wickelfeld C abgegriffen werden.

Zum Aufbau

Auf der Leiterplatte sind einige Stützkondensatoren (33 nF Epsilan sowie Elkos 47 µF/6,3 V) vorgesehen. die im Stromlaufplan nicht extra angegeben wurden. Sie sind mit Cs bezeichnet.
Alle Logikschaltkreise (außer Bustreiber und Dekoder) sind Low-Power-Schottky-, also 74LSxxx-Typen. Im Stromlaufplan wird nur die Typnummer (also 193 entspricht 74LS193) angegeben.
Als Speicherschaltkreise können alle U2164-Typen eingesetzt werden.
Die Verzögerungsglieder in den RAS/CAS-Schaltungen wurden zu 390 pF und 100 ... 180 Ω gewählt.

Einbindung der RAM-Disk in das BIOS

CP/M und ähnliche Plattenbetriebssysteme bestehen im wesentlichen aus 3 Teilen:
1. dem BIOS (Basis-Ein/Ausgabesystem)
2. dem BDOS (eigentliches Plattenbetriebssystem)
3. dem CCP (Kommandoprogramm).
Zur Einbindung der RAM-Disk muß das in Bild 2 gezeigte Bedienprogramm in das BIOS eingefügt werden. Bei den meisten Systemen findet man im BIOS zwei oder drei Tabellen, in denen die Adressen der Disk-Parameter-Header (DPH) sowie die Adressen der zugehörigen Lese- und Schreibroutinen stehen. Dort muß man die eingefügten Programmteile eintragen. Wer mehr als 256 KByte RAM-Disk einbauen will, muß allerdings den Disk-Parameter-Block (DPB) ändern. Da das BIOS jedes Laufwerk in maximal 256 Blöcke aufteilt, ist bei größeren Speichern die Blockgröße entsprechend Bild 3 im DPB zu vereinbaren. Wenn die RAM-Disk richtig ins BIOS eingebaut ist, so ergibt die Überprüfung mit STAT DSK:
folgende Antwort:

E: Drive Characteristics
2048: 128 Byte Record Capacity
256: Kilobyte Drive Capacity
64: 32 Byte Directory Entries
0: Checked Directory Entries
128: Records/Extent
8: Records/Block
16: Sectors/Track
0: Reserved Tracks


651 KByte 283 KByte 40 KByte
Bild 1 Bild 2 Bild 3
Schaltplan Bedienprogramm Blockgrößen


303 KByte 633 KByte 440 KByte
Bild 4 Bild 5 Bild 6
Bestückungsplan Lötseite Bauelementeseite