Netzwerk
Grundlage für die Netzwerkschnittstelle des M052 bildet das Projekt "KCNET", welches im Projektbereich der Website ausführlich beschrieben wird. Das M052 enthält dafür eine zweite PIO, an der die KCNET-Hardware angeschlossen ist, welche sich nun auf der Modulplatine befindet.
Genauso wie bei der USB-Ankopplung erfolgt über die Z80-PIO die parallele Ein- und Ausgabe von Daten. Kanal A wird wieder bidirektional für die Byteaus- und Eingabe der Daten zum/vom KCNET verwendet. Kanal B muss wieder im Bitbetrieb programmiert werden.
Wenn die PIO-Kommunikation im Polling erfolgt, kann die KC Software mit Bit 0 bzw. 7 von Kanal B das Handshake der Aus- bzw. Eingabe von Datenbytes abwickeln. Mit der Ausgabe eines Datenbyte über Kanal A zum KCNET wird Bit 0 von Kanal B gesetzt und nach der Übernahme des Byte durch das KCNET zurückgesetzt, anschliessend kann der KC das nächste Byte ausgeben. Der Empfang eines Datenbyte vom KCNET wird durch ein gesetztes Bit 7 von B signalisiert. Nachdem die KC Software Kanal A gelesen hat, wird Bit 7 von B wieder 0 und das KCNET kann das nächste Byte senden.
Die KCNET-PIO kann aber auch voll interruptgesteuert im KC-System betrieben werden. Der Quelltext des CP/M Treibers NETKI.MAC für das D001 zeigt eine mögliche Programmierung für die PIO-Kommunikation per Interrupt.
Für die KCNET-PIO sind die folgenden I/O-Adressen im KC85 System reserviert:
I/O Adresse PIO Kanal Bedeutung 28 H A Datenwort 29 H B Datenwort 2A H A Steuerwort 2B H B Steuerwort
Detaillierte Angaben zur Programmierung der Z80-PIO und der KC85 Netzwerkschnittstelle kann man den folgenden Quellen entnehmen:
- Datenblatt der Z80-PIO bzw. entsprechende Fachliteratur
- KCNET-Protokoll als PDF-Dokument im Downloadbereich (Beschreibung der zulässigen Befehle und Parameter der Hardware-Schnittstelle des KCNET)
- Assembler Include-Datei M052NET.INC (CAOS-Treiber für KCNET-Schnittstelle des M052 mit Polling)
- Assembler Include-Datei NETKP.MAC (CP/M Koppel-Treiber D001 für KCNET-Schnittstelle des M052 mit Polling)
- Assembler Include-Datei NETKI.MAC (CP/M Koppel-Treiber D001 für KCNET-Schnittstelle des M052 mit Interrupt)
- Assembler Include-Datei NETDP.MAC (CP/M DRV-Treiber D001 für KCNET-Schnittstelle des M052 mit Polling)
- Assembler Include-Datei W5100-xx.INC (allgemeiner Z80 TCPIP- und Socket-Treiber für das KCNET-Interface)
- Assembler Include-Datei DNSC-xx.INC (allgemeiner Z80 DNS-Client nach RFC 1034 für das KCNET-Interface)
- Datenblatt des WIZnet W5100 (Hardware TCPIP-Stack) von www.wiznet.co.kr
- Beispielprogramme (application notes) der Firma WIZnet für den W5100 von www.wiznet.co.kr (zu finden im Bereich LIBRARY -> DOWNLOAD CENTER der Website)
- Quelltexte der Netzwerk-Software für das M052 im Downloadbereich.
Der Hardware TCPIP-Stack W5100 ist fest verdrahtete Hardware und kann im Gegensatz zum USB-Controller auch nicht aktualisiert werden.
Der AVR-Controller ATmega 162 des KCNET-Interface enthält keinerlei Netzwerksoftware, er hat im Wesentlichen 2 Hauptaufgaben. Einerseits realisiert er die einfache Ankopplung an ein beliebiges Z80-System mit Hilfe einer PIO. Die Software im AVR implementiert dazu das Handshake Protokoll einer Z80-PIO direkt, so dass auf der Z80 Seite kein weiterer Aufwand erforderlich wird. Zweitens dient er als "verlängerte Werkbank" des Z80-Systems, indem er Lese- und Schreibbefehle des Z80 auf den TCPIP-Stack vollkommen transparent 1:1 weiterleitet.
Auf diese Art und Weise kann der KC85 den W5100 vollkommen frei programmieren, als ob er direkt am Systembus angeschlossen wäre. Sämtliche Software für die Nutzung der TCPIP-Funktionalitäten des W5100 läuft daher im Z80 System und mittlerweile ist die Programmierung der Basis-Software für den Betrieb des KC85 im TCPIP-Netzwerk per Ethernet abgeschlossen.
Der KC verfügt über ein getestetes dreistufiges Treibersystem zur Programmierung von Netzwerkprogrammen auf der TCP/UDP-Transportschicht eines TCPIP-Stacks unter CAOS oder CP/M. Die logische Schnittstelle bilden die von anderen Betriebssystemen bekannten Socket-Funktionen, welche vom High-Level-Treiber zur Verfügung gestellt werden.
Zum heutigen Zeitpunkt steht fertige Netzwerksoftware für die Konfiguration der Netzwerk-Einstellungen, ein PING-Programm und TFTP-Software für die Datenübertragung im lokalen Netzwerk zur Verfügung. Unter CAOS befinden sich diese Programme direkt im EEPROM des M052, unter CP/M werden sie von der Kommandozeile als normale COM-Programme gestartet.
Speziell für den Test der Netzwerkschnittstelle gibt es auch noch ein Programm für CAOS oder CP/M, welches bei Problemen zahlreiche Test-Funktionen auf allen drei Treiberebenen zur Verfügung stellt. Damit sollte der Aufbau und die Inbetriebnahme der Netzwerk-Hardware des M052 schnell und einfach zu erledigen sein.
Mit einem frei programmierbaren TCPIP-Stack stehen dem KC85 System damit theoretisch alle Möglichkeiten offen, wie sie von anderen Betriebssystemen bekannt sind. Praktisch sind natürlich nur Netzwerkanwendungen bzw. Dienste sinnvoll, welche mit einem Z80, 64 kByte RAM und 4 gleichzeitig nutzbaren Sockets (Hardware-Limit des W5100) programmierbar sind.
Viele Standard RFC-Netzwerk-Protokolle basieren auf einem Austausch von einfachen Textnachrichten, das ist auch für den KC85 kein Problem. Das Netzwerk lässt sich auch für eigene Kreationen benutzen, denn Ethernet ist sehr schnell. Die Übertragungsgeschwindigkeit der Schnittstelle im M052 beträgt Brutto auf dem TCP/UDP-Layer fast 30 kByte pro Sekunde!
Da Netzwerk-Protokolle in der Regel systemunabhängig sind, eröffnet das M052 dem KC85 System eine universelle Möglichkeit zu kommunizieren. Das trifft auf alle Teilnehmer eines TCPIP-Netzwerkes zu, welche das gleiche Protokoll beherrschen. Wenn es ein funktionierendes KC85-Programm für ein bestimmtes Netzwerk-Protokoll gibt, kann man mit allen Netzwerk-Teilnehmern, per Internet auch weltweit, kommunizieren. Die TFTP-Software ermöglicht beispielsweise einen Datenaustausch mit Windows-PC's, Linux-PC's, Unix-PC's UND AUCH ANDEREN KC85-Systemen mit M052 (als TFTP-Server zur Zeit nur unter CP/M).
Auch vom Test des anderen Prototypen dann noch zwei Fotos, wo er zum Beispiel gerade zeigen muss, ob dass Handshake zwischen PIO und KCNET auch richtig funktioniert.