Funkamateur 02/90 |
Oft benötigte Programme wie z.B. Textverarbeitung, BASIC-Interpreter, Druckertreiber u.a. sollten stets verfügbar sein, um schnell auf sie zugreifen zu können. Neben der Diskette ist für diesen Zweck die Speicherung im EPROM zweckmäßig; hier besteht dazu noch der Vorteil eines schnelleren Zugriffs.
Die in diesem Beitrag vorgestellte ROM-Floppy ermöglicht den Aufbau einer bis zu 512 KByte großen EPROM-Bank. Prinzipiell ist diese an allen Z80-Rechnern einsetzbar, da sie eine interne Adressierung enthält und lediglich das Bedienprogramm anzupassen ist. Der Einsatz am AC1 bedingt folgende Hardwarevoraussetzungen: 32-Zeilen-Bildschirm, minimal 16 KByte Arbeitsspeicher, Betriebssystem nach FA 1/85 und 1/86.
Die Konfiguration der ROM-Floppy bedingt den Einsatz von EPROMs
gleicher Speicherkapazität auf allen Steckplätzen.
Die Adressierung der EPROMs erfolgt durch eine auf der Platine
integrierte PIO. Port A enthält dabei den
niederwertigen und Port B den höherwertigen Adreßteil der
EPROM-Adressen. Ein Portadressendekoder erzeugt die
Portadresse (in Viererblöcken) für die PIO und die für
die Lesekanäle der EPROMs.
Bei der Arbeit mit einer 512-KByte-Bank wird der gesamte
Speicherbereich in acht 64-KByte-Blöcke eingeteilt.
Dazu stellt der Portadressendekoder zwei zusammenhängende
Viererblöcke als Lesekanäle bereit. Man benötigt also
insgesamt 12 Portadressen bzw. drei Viererblöcke für eine
512-KByte-Bank.
Ein zweiter DS 8205 erzeugt aus den internen EPROM-Adressen (bei
Bänken über 64 KByte zusätzlich aus den
Adressen A0 bis A2 des AC1) deren Chipselect-Signale. Entsprechend den
zum Einsatz gelangenden EPROMs wird die
Dekodierung in Stufen zu 2-, 4-, 8-, 16-, 32- und 64-KByte-Stufen
realisiert. Bei Bänken unter 64 KByte ist
keine vollständige Dekodierung erforderlich. Die Begrenzung der
Bankgröße erfolgt durch die Software.
Ein DS 8286 entkoppelt den Rechnerbus von der EPROM-Bank. Die
Umschaltung der Datenrichtung erfolgt durch das
negierte RD-Signal. Das /OE-Signal entsteht durch Verknüpfung
mittels zweier Gatter eines DL 086 aus dem
Chipselect-Signal der PIO und den Portadressen der Lesekanäle der
EPROM-Bank.
Zum Bohren der Leiterplatte sollte man möglichst einen 0,8-mm-Bohrer verwenden. Vor dem Bestücken ist eine sorgfältige Kontrolle auf Schlüsse und Haarrisse durchzuführen. Danach erfolgt zunächst das Einlöten aller Durchkontaktierungen und Drahtbrücken entsprechend dem eingesetzten EPROM-Typ (Vergleich mit Stromlaufplan und Tabelle der Brücken). Die Durchkontaktierungen sollten sehr flach ausgeführt werden, da sie zum Teil unter den Schaltkreisen und Fassungen liegen. Die Verbindungen von der PIO (L28, L29 usw.) zum DS 8205 sind nach Vergleich von Stromlaufplan und Bestückungsplan nach dem Bestücken der Leiterplatte einzulöten. Nach dem vollständigen Bestücken untersuche man die Platine noch einmal auf Zinn brücken und vergessene Lötstellen hin.
Nach dem Anstecken der Baugruppe an den AC1-Bus (noch ohne EPROMs!)
ruft man das Programm "ROMCOPY" (siehe
Listing) auf. Nach einigen Sekunden muß dann die Ausschrift
"Keine Programme im EPROM gefunden" erscheinen.
Nun wird ein EPROM (Platz 1) gesteckt und das Programm erneut
aufgerufen. Beim Stecken der EPROMs beachte man
unbedingt, daß die Typen 2716 und 2732 "kürzer" als die
EPROMs höherer Speicherkapazität sind und daher so in
die Fassung zu stecken sind, daß sich Pin 1 des EPROMs im Kontakt
3 der Fassung befindet (also "unten" einsetzen!).
Bei ordnungsgemäßer Funktion erscheint nun auf dem
Bildschirm die Liste der gefundenen Programme. Dieser Vorgang
wird anschließend mit allen Steckplätzen wiederholt.
Erkennt der Computer kein Programm im EPROM, sollte zunächst die
Funktion des Bustreibers geprüft werden. Dabei
ist festzustellen, ob die Umschaltung des Datentransports (/DIR)
ständig erfolgt und die Freigabe der Ausgangsstufen
(/OE - Signal nur während des Aufrufs des Steuer-Programms
nachweisbar) gewährleistet ist. Dabei leistet ein
Oszilloskop gute Dienste. Eine weitere Fehlerquelle kann die
Unterbrechung einer Datenleitung zwischen EPROM und
Bustreiber sein. Das Fehlen des /CE-Signals zeigt ein mehrmaliges
Auslesen des Dateninhalts nur eines EPROMs an.
Beim Aufbau der Baugruppe innerhalb einer Versuchsserie gab es keine
wesentlichen Probleme außer Haarrissen und
vornehmlich auf der Bestückungsseite vergessenen Lötstellen.
Bei der Erprobung trat an einem AC1 ein Problem auf,
das die CP/M-Umschaltung betrifft. Beim Lesen der EPROMs schaltete der
AC1 auf CP/M um und war nur noch durch
RESET zu befreien. Dies hängt offensichtlich von der jeweilig
realisierten Hardwarekonfiguration ab. Sollte
dieser Fehler auftreten, so ist Abhilfe zu schaffen, indem man wie
folgt verfährt:
- IOSEL7 vom Eingang T des DL 074 der CP/M-Erweiterung trennen
- IOSEL7 und WR (CPU Pin 27) an ein Gatter eines DL 002 führen
- den Ausgang des Gatters an den Eingang T des DL 074 legen.
Damit ist eine einwandfreie Funktion auch in diesem Ausnahmefall
gewährleistet, man lese dazu auch im Heft
4/89, S. 169, nach!
Wird die EPROM-Bank nicht vollständig mit EPROMs bestückt,
kann es zu Lesefehlern beim Kopiervorgang kommen.
In diesem Fall ist der interne Datenbus entsprechend der Empfehlung aus
[1] mit Widerständen abzuschließen.
Das Steuerprogramm belegt den Speicher von 0800H
bis 0FFFH des AC1 (ehemals Platz des Mini-BASIC). Die Zellen
0803H bis 0806H enthalten eine Steuertabelle zum Programmablauf:
#0803H enthält das Steuerbyte für Bankgrößen
über 64 KByte. Dabei gilt folgende Belegung:
00H - Bank bis 64 KByte,
08H - Bank bis 128 KByte,
0CH - Bank bis 256 KByte,
0FH - Bank bis 512 KByte,
88H - Bank bis 128 KByte mit automatischer Suche in der eingestellten
Bankgröße,
8CH - Bank bis 256 KByte mit automatischer Suche,
8FH - Bank bis 512 KByte mit automatischer Suche.
Alle anderen als die hier aufgeführten Bytes führen zum
Programmabbruch.
#0804H - 63H: Portadresse der PIO - Steuerwort Kanal B
#0805H - 64H: Niederwertigste Portadresse für Lesekanäle
Die hier angeführten Bytes gelten als Beispiel und können vom
Anwender selbst, entsprechend der jeweiligen
Dekodierung, geändert werden.
#0806H - enthält das Steuerbyte für die Bankgröße
unter 64 KByte:
00H: Bank bis 64 KByte,
0CH: Bank bis 48 KByte,
80H: Bank bis 32 KByte,
40H: Bank bis 16 KByte,
20H: Bank bis 8 KByte.
Auch hier kann der Anwender die Bytes entsprechend der aktuellen
Bankgröße selbst eintragen.
Die Zelle 0809H (original belegt mit FFH) ermöglicht den Eintrag
eines eigenen Kennbuchstabens zum Start mit
diesem. In diese Zelle ist das Eintragen des gewünschten
ASCII-Kodes vorzunehmen.
Nach dem Start mit J 800 oder dem Kennbuchstaben
entsprechend Eintrag werden die PIO initialisiert und der
Bildschirm in drei Bereiche geteilt. Der obere Teil enthält den
Titel und Angaben für den Nutzer. Der untere
Bildschirmteil, dient als Bedienerführung. Im mittleren Teil steht
ein Puffer von 17 Zeilen zum Eintragen der
in der Bank vorhandenen Programme (maximal 16) zur Verfügung. Wird
die Anzahl von 16 Programmen überschritten,
wird die Suche unterbrochen. Nach einer Quittung rollt der mittlere
Bildteil nach oben. Dabei geht das erste
eingetragene Programm für das Kopieren verloren, da dies aus dem
Bildschirm heraus geschieht. Darum ist es bei
der Bedienung zweckmäßig, den Suchvorgang vor dem Rollen
abzubrechen ^C). Das gewünschte Programm ist in den
RAM zu kopieren und erst danach die Suche bei Bedarf fortzusetzen.
Bei Bankgrößen ab 128 KByte bietet das Programm die
Möglichkeit, nur in einer der 64-KByte-Bänke oder in allen
Teilbänken zu suchen.
Die Suche erfolgt nach einem ähnlichen Verfahren wie im Monitor
des AC1. Es werden vier Kennbytes gesucht,
die Bestandteil des Programmkopfes (Headers) sind. Die darauf folgenden
Daten zum Programm gelangen in den
Inhaltspuffer und die Suche nach einem neuen Header wird fortgesetzt.
Diese beginnt immer ab EPROM-Adresse 0000H.
Das Kopieren der Programme in den RAM erfolgt aus dem Inhaltspuffer.
Dies geschieht durch Eingabe der zugehörigen
Programmnummer. Nach Bestätigung erfolgt das Kopieren des gesamten
Programms in den RAM. Bei Programmen mit
Autostart kann man zwischen Kopieren mit oder ohne Autostart
wählen. Bei verschiebbaren Programmen fragt das
Steuerprogramm vor dem Kopiervorgang die Zieladresse im RAM ab, die es
im Hex-Format erwartet. Eingaben unter
1900H ignoriert das Steuerprogramm. Nach ENTER erfolgt das Kopieren.
Nach dem Kopieren ohne Autostart können
weitere Programme aus dem Puffer in den RAM kopiert oder die Suche
fortgesetzt werden. Das Kopieren und die
Suche sind mit ^C jederzeit abzubrechen.
Der Header enthält alle zur Funktion des
Kopierprogramms erforderlichen Angaben des Nutzerprogramms. Deshalb hat
er unmittelbar vor dem Nutzerprogramm im EPROM zu stehen. Das bringt
einen unmittelbaren Vorteil bei Änderungen
und Erweiterungen, da dann nur der betroffene EPROM zu ändern ist.
Nur bei Erweiterungen der EPROM-Bank sind im
Steuerprogramm die entsprechenden Kennbytes neu zu programmieren. Im
Header ist ebenfalls festgelegt, ob das
Programm selbststartend oder verschieblich ist. Damit beeinflußt
der Programmkopf gleichzeitig den Ablauf des
Steuerprogramms. Das Abspeichern von Programmen ist somit lückenlos
über den gesamten Bereich möglich. Ebenso
können sich Programme über mehrere EPROMs oder über
mehrere Teilbänke erstrecken. Dabei ist zu beachten, daß
die Länge eines einzelnen Programms nicht 64 KByte
übersteigt!
Das Steuerprogramm ermittelt die im Inhaltspuffer angegebene
EPROM-Adresse selbständig, dabei gibt die erste
Ziffer die Banknummer an, die vier folgenden den Speicherplatz im
EPROM, auf dem das Nutzerprogramm beginnt.
Im folgenden sei ein Beispiel zum Erstellen des Headers
ausführlich beschrieben.
1. Die Kennbytes für die Suchroutine sind 00H, 09H, EDH und 42H.
Sie stehen in dieser Reihenfolge zuerst
im Header.
2. Für den Programmnamen sind 16 Bytes vorgesehen. Der
Programmname ist als ASCII-Kode einzugeben.
Beispiel:
Basic 8K
426173696320384B2020202020202020
Nicht benötigte Zeichen sind mit Leerzeichen (20) aufzufüllen.
3. Die Angabe der Adressen erfolgt ebenfalls im ASCII-Kode als Hex-Zahl.
Beispiel:
Anfangsadresse 4 0 0 0
34303030
Endadresse 5 F F F
35464646
Startadresse 4 0 0 0
34303030
4. Programme ohne Autostart erhalten als Startadresse 0000H.
5. Verschiebbare Programme erhalten die Anfangsadresse 0000H.
Als Endadresse wird dann die Programmlänge angegeben (siehe
Beispiel Berechnung der relativen Startadresse).
6. Sollen verschiebbare Programme mit Autostart kopiert werden. ist als
Startadresse die relative Startadresse
+ 1 einzutragen. Die relative Startadresse wird folgendermaßen
bestimmt:
4003H - Programmstart
-4000H - Programmanfang
0003H - Relative Startadresse
+0001H
0004H - einzugebende Adresse
Ohne Autostart gibt man als Startadresse ebenfalls 0000H an. Alle
Angaben erfolgen ohne Zwischenraum.
Als abschließendes Beispiel noch ein kompletter Header für
den DEB 31:
0000 0009ED42444542203331202020202020
0010 20202020303030303138363130303031
Es handelt sich hierbei um ein verschiebbares, selbststartendes
Programm. Ab der Speicherplatzadresse 0020H
muß dann das Programm DEB 31 folgen. Entsprechend der Länge
von 1861H Byte endet das Programm dann auf Adresse
1881H. Der Inhalt von 0000H bis 1881H wird dann auf die freien
Speicherzellen in den EPROM programmiert.
Ab EPROM-Zelle 1882H beginnt der nächste Header.
Im Zuge des Aufbaus der Versuchsserie sind bereits
vorab Leiterplatten zu dieser Baugruppe hergestellt worden.
Diese enthalten das Layout für den 90poligen Steckverbinder und
sind sofort bei der Firma Berkenkamp (Bestellung
bitte mit der Bezeichnung "AC1-ROM-Floppy", Preis etwa 25 M)
erhältlich. Über unsere Redaktion ist eine Version
aus der ersten Serie für 10 M erhältlich, die allerdings
einige Deckungsfehler der beiden Ebenen enthält, aber
durchaus verwendbar ist. Im Heft 3 erscheint das Layout der Platine
zusätzlich für 58poligen Steckverbinder
(für K1520- oder Z 1013-Besitzer) auf der 3. US.
Die Redaktion wartet auf den Z 1013-Freak, der das vorliegende
AC1-Bedienprogramm für den Z 1013 umschreibt,
um diese Platine auch für diesen Computer nutzbar zu machen.
Kontakte über unsere Redaktion.
[1] | Zellner, U.; Jürgens, W.-R.; Heyder, F.: AC1 mit
320-KByte-Speicher, FUNKAMATEUR 38 (1989), H.9. S.428 |
[2] | Kramer, M.: Praktische Mikrocomputertechnik, Militärverlag der DDR (VEB), Berlin 1987 |
145 KByte | 69 KByte | 415 KByte |
Bild 1 | Brücken | Listing |
255 KByte | 380 KByte | 212 KByte |
Bild 2 | Leiterseite | Bauelementeseite |
Funkamateur 05/90 |
Der Kondensator im Stromlaufplan links unten ist der Stützelko
für
die Betriebsspannung.
In der Brückentabelle ist beim 27512 folgendes zu berichtigen:
L19 an L27, sowie L20 an L26.
Funkamateur 06/90 |
Die Brückentabelle ist aufgrund eines Zeichnungsfehlers wie folgt
zu ändern:
27128: 21-26 in 21-27,
27256: 20-26 in 20-27 und 21-27 in 21-26.