|
CPD3 ist eine Weiterentwicklung von CPD2 und soll nun auch unabhängig vom PC arbeiten können. Dazu wurde das Interface-Protokoll ITP in ITP2 erweitert. Die nun nutzbaren Hardware-Schnittstellen entsprechen prinzipiell den CP/M Schnittstellen (CONIN, CONOUT und FLOPPY). Viele Mikrocontroller gesteuerte Adapter verwandeln das System CPD3 in ein frei konfigurierbaren und sehr flexibel einsetzbaren Computer-Baukasten. |
Inhaltsverzeichnis1. Motivation und Zielstellung2. Das CPD-Konzept 3. Das ITP2-Protokoll 4. Die Hardware 5. Die Software 6. Die Module 7. Die CONSOLE - Anbindung des CPD3 an den PC 10. Bildergalerie |
Wenn man sich andere Projekte zum Thema CP/M ansieht, so folgt nach dem ersten Lauf immer der Anschluss einer Tastatur und eines Bildschirmes oder einer SD-Card direkt an das CP/M-Board (CP/M on breadboard).
Man möchte also weitere Komponenten anschliessen, bis der CP/M-Computer selbständig und ohne PC lauffähig ist.
Nach dem Motto: "Der Weg ist das Ziel" wurde nun der Grundstein für eine weitere Ausbaustufe des CP/M-Computers gelegt.
Die zentrale Komponente des CPD3 ist wie auch beim CPD2 der Z80 Einplatinenrechner. Im Gegensatz zu den klassischen CP/M-Computern, die mit komplizierter Hardware, Erweiterungsbus und Bustreibern versuchten möglichst viele Aufgaben mit dem einen Z80-Computer zu erledigen, ist die Philosophie der CPDX-Computer recht einfach:
einfache Z80-Hardware ohne Erweiterungsbus - alles auf einem Board
keine NMI und INT-Interrupts verwenden (das ist einfacher)
dadurch ist das BIOS einfach und klein
die eigentliche "Arbeit" wird von externen Mikrocontrollern erledigt (möglichst viele Aufgaben an die Perepherie verlagern, die kann es meist schneller und besser)
Kopplung aller externen Komponenten über das ITP2-Interface an die Z80-Hardware
Somit entsteht eine zeitgemäße Symbiose zwischen dem Z80/CP/M-Kern und den Mikrocontrollern in der jeder seine Stärken einbringen kann.
Was kann CP/M in die Symbiose mit einbringen:
CP/M ist zwar ein recht altes, aber sehr leistungsfähiges, dateibasiertes Betriebssystem
es existiert eine große Vielzahl von ausgereiften Programmen und Compilern
die Z80-Hardware ist im Vergleich zu andereren Mikroprozessoren recht leistungsfähig und trotzdem einfach
wen man die Erstellung eines eigenen BIOS erst einmal verstanden hat, kann man CP/M schnell auf einer neuen Hardware zum laufen bringen
die Kopplung zu Mikrocontrollern und zum PC ist einfach möglich
ein so ausgereiftes Betriebssystem gibt es im 8-Bit Mikrocontrollerumfeld nicht (siehe Abgrenzung zu LINUX unten)
die Entwicklung ist aber vor etwa 20 Jahren auf anderen Plattformen fortgesetzt worden
die übliche Taktfrequenz liegt nur bei 6-10 MHz
Was bringen die modernen Mikrocontroller mit ein:
moderne Microcontroller haben eine Vielzahl an speziellen Hardwarekomponenten meist auf einem Chip integriert (CPU, RAM, FLASH, UART usw.)
mit ihnen kann eine Vielzahl unterschiedlicher Hardware angesprochen und unterstützt werden
die Programmierung erfolgt meist in einer Hochsprache (für mich nur PASCAL) und bei besonderen Anforderungen auch in ASSEMBLER
das Einspielen des fertigen Codes für den Mikrocontroller ist mit speziellen Programmiergeräten einfach und schnell möglich
die Geschwindigkeit liegt mit 16-20 MHz etwa doppelt so hoch, wie beim Z80
Das Betriebssystem DOS ist der Nachfolger von CP/M. Für DOS gibt es daher wesentlich mehr Software als für CP/M. Trotzdem findet man kaum Projekte zu Einplatinencomputern mit Intel Prozessoren. Der grund liegt wahrscheinlich in den wesentlich höheren Hardwareanforderungen des Intel-Prozessors. Mit wenigen Schaltkreisen ist hier kaum etwas sinnvolles erreichbar.
LINUX ist im Umfeld von Microcontrollern das mit Abstand am meissten genutzte Betriebssystem. Es ist sehr flexibel und kann auf sehr kleinen Systeme (Raspberry Pi) aber auch auf sehr grossen Systemen (PCs bis Server) genutzt werden. LINUX ist ein Multiuser und Multitasking Betriebssystem und erfordert daher eine anspruchsvolle Hardwareausstattung (MMU - Speicherverwaltung usw., CPU plus SRAM alleine reichen hier nicht). Um das Betriebssystem LINUX auf einer selbst gebauten Hardware zum laufen zu bekommen bedarf es daher viel Hintergrundwissen, das sicher nicht viele Bastler haben.
Am CPD2 hat sich der klein gehaltene Z80-Kern sehr gut bewährt. Auch das "Interface-Transmission-Protokoll" lief schnell und ohne Probleme. Für den Anschluss mehrerer Komponenten (Tastatur, Bildschirm, RAM-Floppy usw.) waren aber 12 Leitungen (8 Daten- und 4 Steuerleitungen) recht viel. Besser wäre, wenn man mit 8 Leitungen auskommen würde. Das wäre dann 1 PIO-Port für je ein Interface. Bei 3 PIOs (ein Port wird für die intere Steuerung benötigt) bleiben dann noch 5 frei konfigurierbare Interfaces übrig.
Also wurde kurzerhand die Anzahl der Datenleitungen von 8 auf 4 verringert. Bei jeder Übertragung eines Bytes muss nun der niederwetige und der höherwertige Teil eines Bytes jeweils separat übertragen werden.
Hardwareseitig sollte für jedes Interface ein 10-pooliger Wannenstecher dienen (4 Datenleitunge, 4 Steuerleitungen, Masse und 5V). Eine Kleinigkeit hatte ich aber bei der damaligen Erstellung dieses Konzeptes nicht beachtet. Es wäre sehr sinnvoll, auch das /RESET-Signal mit zu übertragen. Fast immer ist am anderen Ende des Interfaces ein Mikrocontroller und es ist sehr wichtig, dass er auch ein /RESET bekommt, wenn die Z80 ein /RESET erhält. Somit muss nun eine 2 adrige separate /RESET-Leitung mit verkabelt werden.
Schaltplan des CPD3 Z80 als Eagle-Datei: CPD3.sch
Schaltplan des des CPD3 Z80 als PDF-Datei: CPD3.pdf
Die ITP2-Connectoren (Connector(1) bis Connector(5)) sind priorisiert. Das heisst, dass eine Tastatur an Connector(1) eine höhere Priorität hat als eine Tastatur an Connector(2). Nach dem Start werden alle Connector-Ports abgefragt. Die entsprechende Software des Connectors muss antworten um welchen Connectortyp (DEVCODE) es sich handelt. Momentan werden folgende Connectortypen softwareseitig unterstützt:
DEVCODE_PC_CPM_EMU - Code fuer PC-CP/M-Emulator
DEVCODE_KEYBOARD - Code fuer Tastatur
DEVCODE_DISPLAY - Code fuer LC-Display
DEVCODE_RAMFLOPPY - Code fuer RAM-Floppy
DEVCODE_CONINOUT - Code fuer Tastatur und Display
Quelltexte für Loader: LOADER.ZIP
Quelltexte für BIOS: BIOS.ZIP
Wie schon oben beschrieben, ist der Z80-Kern zwar lauffähig, man kann aber ohne angeschlossene Module nicht mit ihm kommunizieren. Daher wurden mehrere Module entwickelt, die im folgenden vorgestellt werden sollen.
Das Programm mit Quelltext wird unter CONSOLE im Bereich "Programmier-Projekte Lazarus / Free Pascal" beschrieben.
Die Beschreibung folgt in Kürze.