Der 8085A Mikroprozessor

 

 

Der 8085(A) Prozessor war in den 80er und 90er Jahren ein zu vielen Zwecken verwendeter Mikroprozessor.
Er wurde in dieser Zeit von vielen Chipherstellern angeboten.
Heute wird wohl niemand mehr ein 8085 Prozessorsystem produktiv einsetzten, da man mit einem modernen Mikrocontroller viel günstiger und schneller zum Ziel kommt.
Für Schulungszwecke ist ein 8085 Computersystem allerdings gut geeignet, da es recht einfach zu verstehen ist!
Der Prozessor besitzt einen 8 Bit Datenbus und einen 16 Bit Adressbus.

Hier handelt es sich also eher um ein "Retro" oder auch Lernprojekt!

In den frühren 90er Jahren hatte ich mir ein 8085 Übungssystem gebaut, welches sich auch heute noch prima dazu eignet, die Grundlagen der Computertechnik zu demonstrieren.
Leider habe ich irgendwann versehentlich durch anlegen einer falschen Versorgungsspannung alle ICs auf der Platine zerstört.
Jetzt, im Jahr 2023, möchte ich das System wieder in betriebsbereiten Zustand bringen.

Das ist letztlich gelungen, da man alle Bauteile noch gut auftreiben kann.

Ich hatte das System damals auf einer Lochrasterkarte in Fädeltechnik aufgebaut.
Trotz des chaotischen Aufbaus läuft das System mit 2 MHz Takt völlig stabil.
Das System besteht aus dem absoluten Minimum:

  • 8085A CPU
  • 2764 Eprom
  • 8 Kilobyte RAM Baustein mit Pufferbatterie
  • 8155 I/O Baustein als Interface für die Schalter, die LEDs und den Parallel Port.
  • Dazu noch zwei TTL Bausteine als Adressdecoder, ein RS232 Pegelwandler und ein Latch zur Trennung des kombinierten Adress- und Datenbus des 8085A.

    Die Steckkarte passt in einen 19" Baugruppenträger, den ich damals im Rahmen meiner Berufsausbildung gebaut hatte.
    An die RS232 Schnittstelle kann ein Terminal angeschlossen werden, über welches der Computer programmiert werden kann.
    Die parallele Schnittstelle ist so verdrahtet, dass ein Drucker angeschlossen werden konnte.

    Der 8155 ist ein auf den 8085 Prozessor zugeschnittener Peripheriebaustein.
    Er ist hier nicht als I/O Schnittstelle angeschlossen, sondern liegt im Speicherbereich des Prozessors.
    Die Register des Bausteins sind ab der Adresse C000H erreichbar, der interne RAM und Timer werden nicht genutzt.
    Die acht Kippschalter sind mit Port A des 8155 verbunden und die LEDs mit Port B.

    Das Schaltbild habe ich im Rahmen der Reparatur gezeichnet.
    Ohne Gewähr auf Vollständigkeit!

    Im Eprom befindet sich ein Monitorprogramm, welches ich damals weitestgehend aus dem Buch "Mikrocomputertechnik mit dem Prozessor 8085A" (Oldenbourg Verlag) übernommen hatte.
    Ein Backup des Eprom-Inhaltes habe ich zum Glück noch gefunden.

    Das Monitorprogramm ermöglicht es, Daten im RAM im HEX Format zu editieren und mehr nicht!
    Es nutzt zur Kommunikation die integrierte serielle Schnittstelle des Prozessors (Anschlüsse SOD/SID).
    Das lastet den Prozessor zwar zu 100% aus, ist aber im Programmiermodus kein Problem.
    Die Programmierung erfolgt direkt in Maschinensprache!

    Eigene Programme können im RAM Speicher ab der Adresse 2000H abgelegt werden.
    8 KB RAM ist für ein Maschinenprogramm sehr viel!

    Assemblerprogramme oder gar Compiler für "Hochsprachen" waren damals für mich nicht zugänglich.
    Seinerzeit hatte ich die HEX Zahlenwerte der wichtigsten Befehle im Kopf und konnte halbwegs flüssig ein Maschinenprogramm eintippen.

    Wie funktioniert so ein Computer?
    Ganz grob der Ablauf:
    Nach dem Reset wird der Programmzähler auf 0000H gesetzt und das an dieser Adresse gespeicherte Byte aus dem Speicher gelesen.
    Meist wird das System so aufgebaut sein, dass der Speicherbereich von 0000H - ????H von einem Festspeicher (EPROM) belegt ist.
    Es wird also das erste Byte gelesen und, vom Prozessor dekodiert und eine entsprechende Operation ausgeführt.
    Liegt kein Sprungbefehl vor, erhöht der Prozessor den Adresszähler um eins und liest das in Adresse 0001H gespeicherte Byte.
    So geht das abhängig vom vorliegenden Programm immer weiter.

    Die Programmierung in Maschinensprache ist einfach oder auch nicht!
    Einfach, da es nur sehr wenige Befehle gibt!
    Beim 8085 sind das 255, von denen viele nur Abwandlungen sind.
    Es gibt z.B. alleine 63 Varianten des "MOV" Befehls, also bewege Register A nach B oder Register A nach C.

    Schwierig, da die Befehle nur sehr einfache Operationen ermöglichen.
    Viele Operationen beschränken sich auf das Verschieben von Daten zwischen Registern, Vergleichen von Registern, addieren / subtrahieren von 8 Bit Werten.
    Der Prozessor kann z.B. zu einem 8 Bit Zahlenwert einen weiteren 8 Bit Wert addieren oder subtrahieren, mehr nicht!
    Aufwändigere Berechnungen müssen in kleinere Teilschritte aufgeteilt werden.

    Ein simples Maschinenprogramm sieht so aus:

    Adresse
    (HEX)
    Kommentar
    20003A01C0Lade die Daten von Adresse C001 (Port A des 8155) in den Akkumulator.
    2003D601Subtrahiere "1" vom Akkumulator.
    20053202C0Speichere den Inhalt des Akkumulators in Adresse C002 (Port B des 8155).
    2008C30020Spinge zum Anfang des Programms an Adresse 2000.

    Meine Buchempfehlung zum Thema:
    Einige wichtige Tabellen:

    Tabelle mit HEX Werten der Befehle.

    Befehle mit deutscher Erklärung Teil 1

    Befehle mit deutscher Erklärung Teil 2

    Teil 1 + 2 auf einem Blatt

    Alles zusammen als .zip

    Tatsächlich würde ich heute keinen Computer mehr in Fädeltechnik bauen.
    Damals standen mir allerdings keine anderen Möglichkeiten (Platinenherstellung) zur Verfügung.
    Dennoch bin ich froh, dass der Rechner wieder funktioniert.

    Neubau eines 8085 Einplatinencomputers!

    Zufällig bin ich auf ein Projekt von Sergey Kiselev gestoßen Link.
    Er hat unter dem Namen MiniMax8085 eine kompakte Platine entworfen, auf der ein komplettes 8085 Mikrocomputersystem Platz findet!
    Wer sich mit dem 8085A Prozessor beschäftigen möchte, dem kann ich diese Platine empfehlen.
    Sie wird derzeit unter Anderem bei E-Bay für kleines Geld angeboten.

    Im Gegensatz zu meinem System findet auf der Platine noch eine "echte" serielle Schnittstelle in Form eines 8251 Platz.
    Leider hat die Platine keine parallele Ein- oder Ausgabeschnittstelle.
    Dafür ist aber der Datenbus über eine Stiftleiste herausgeführt und erlaubt eigene Erweiterungen.

    Einziger Nachteil meiner Meinung: Um Platz zu sparen, wird als Ersatz für diverse Logikgatter ein GAL eingesetzt.
    Der Baustein ist scheinbar schlechter beschaffbar wie der antike 8085 Prozessor.
    Weiterhin benötigt man ein Programmiergerät, welches mit den Dingern umgehen kann.

    Ich hatte bei E-Bay Glück und mein TL866II Plus Programmiergerät kann den GAL programmieren.
    GALs sind übrigens wiederbeschreibbar, weshalb man sie auch gut gebraucht kaufen kann!

    So sieht das Platinchen fertig aus:

    Der 8085A Prozessor und der 8251 Schnittstellenbaustein sind Bauteile aus Altbeständen.
    Der Rest ist weitestgehend handelsüblich und kann für kleines Geld beim Elektronikhändler seines Vertrauens erworben werden.

    Wie schon vorher erwähnt kann der GAL16V8 eine Herausforderung sein!
    Man sollte zuerst prüfen, ob man den beschaffen und auch programmieren kann, sonst scheitert das gesamte Projekt!

    Auf der Github Seite (Link) wird die Datei mon85-tinybasic-8kbasic.bin zum Download angeboten.
    Damit hat man einen Monitor, und zwei Basic Varianten in einem ROM!

    0x0000 - 0x0FFF - MON85 Monitor
    0x1000 - 0x17FF - Tiny BASIC
    0x1800 - 0x3FFF - IMSAI 8K BASIC

    Es startet immer der MON85, aber mit G -Adresse- kann man in eine der Basic Varianten springen.

    Die RS232 Schnittstelle hat eine "Host" Belegung.
    Für den Anschluss eines PCs ist also ein Nullmodemkabel erforderlich.
    Weiterhin würde ich die Handshakeleitungen RTS/CTS Brücken, wenn man sich nicht sicher ist, ob der PC seitig verwendete RS232 Anschluss Hardware Handshake unterstützt.

    Viel Spaß beim Basteln!

     

     

    Zuletzt aktualisiert: 03/2023
    © klaus(at)taeubl.de