Der KC85 bekommt eine Ethernet TCPIP-Schnittstelle und betritt die Welt der Netzwerke und das Internet.


  • 01/2008 nachdem die Hard- und Firmware des KCNET-Interface ausgiebig getestet war, wurde es langsam ernst - mit Hilfe der selbstdefinierten Protokollbefehle für das Lesen und Schreiben im Adressraum des AVR-Controllers konnte der TCP/IP-Stack des W3150A+ programmiert werden und ich war in der Lage den vollständigen Treiber von Wiznet in Z80-Assemblercode umzusetzen, was gleich nach der Weihnachtspause erfolgte,
    diese Phase war eigentlich die interessanteste Stelle, denn nun musste sich herausstellen, ob die ganze Geschichte, welche vielleicht für Aussenstehende etwas umständlich und kompliziert aussah, funktionieren würde, nun sollte der KC85 endlich Daten über das Ethernet-Netzwerk transportieren ...

    HEUREKA am 06.01.2008

    Mein KC85/5 kommuniziert mit Hilfe des KCNET-Interface unter CP/M per TCP und Ethernet mit einem Windows- oder Linux-PC, ich konnte eine TCP-Verbindung zum Gegenüber aufbauen und Textnachrichten hin- und herschicken

  • 01/2008 Weiterentwicklung von CPMNET als Testprogramm sowohl für die Schnittstelle des KCNET-Interface als auch für den TCPIP-Stack des W3150A+,
    durchspielen der Betriebsarten des Stacks laut Datenblatt und Implementierung geeigneter Programmteile, um diese Funktionalitäten mit dem KC85 testen zu können:

    • Betrieb auf Ethernet-Schicht
    • Betrieb auf IP-Schicht
    • Betrieb auf UDP- bzw. TCP-Schicht

    am Ende dieser Experimentierphase war ich in der Lage, alle Schichten des TCPIP-Stacks anzusprechen und zu benutzen, insgesamt nicht ganz unkompliziert aber das Datenblatt und die vollständigen "C"-Quellen von Wiznet waren bei dieser Arbeit sehr hilfreich und ohne wesentliche Fehler

  • um die Programmierung von Netzwerk-Software über TCPIP zu erleichtern, existieren in gängigen Betriebssystemen genormte Schnittstellen, fast alle haben die Socket-Schnittstelle von BSD-Unix irgendwie kopiert und übernommen, das ist quasi der Standard,
    auch Wiznet bildet in seinem "C"-Treiberpaket einen grossen Teil dieser Schnittstelle ab und  damit ich später nicht noch einmal die gesamte KCNET-Software überarbeiten müsste, wurden von Mitte bis Ende Januar nahezu alle wichtigen Socket-Funktionen im Treiber implementiert,

    25.01.2008 die Socket-Schnittstelle für das KCNET-Interface war fertiggestellt, lediglich die beiden DNS-Funktionen GET HOST BY ADRESS und GET HOST BY NAME hatte ich zunächst weggelassen, da sie zu diesem Zeitpunkt noch nicht benötigt wurden,
    für die komfortable Programmierung von Netzwerksoftware standen damit erst einmal die folgenden 18 Funktionen zur Verfügung:

    Init und Status: SOCKET, BIND, SELECT
    Verbindungsaufbau:LISTEN, ACCEPT, CONNECT
    Datenübertragung:SEND, RECEIVE, SEND TO, RECEIVE FROM
    Verbindungsabbau:SHUTDOWN, CLOSE
    Verwaltung:GET PEER DATA, GET LOCAL DATA
    Konvertierung:HTONS, NTOHS, HTONL, NTOHL












    anschliessend konnten diese Funktionen bei der Umstellung und Überarbeitung von CPMNET.COM auf die Socket-Schnittstelle ihre Tauglichkeit unter Beweis stellen, natürlich waren auch einige Änderungen zum Entwurf einzuarbeiten und kleinere Fehler auszubügeln aber innerhalb einer Woche war alles erledigt und die TCPIP-Testroutinen des Programmes griffen ausschliesslich auf die Socket-Funktionen zu und benötigten keine Aufrufe der darunterliegenden speziellen Treiberroutinen mehr

  • 02/2008 nachdem nun die programmtechnischen Grundlagen für die erste richtige Netzwerk-Applikation gelegt waren, konnte es ja eigentlich losgehen,
    am meisten nervte mich zum damaligen Zeitpunkt die händische Konfiguration der Netzwerk-Parameter, es stand ja im Netzwerk ein DHCP-Server zur Verfügung - also wurde als  erste Anwendung ein DHCP-Client in CPMNET.COM integriert, welcher nach 10 Tagen funktionierte und so aussieht:


    DHCP-Client 1.0


  • 02/2008 um einen praktischen Nutzen aus der ganzen Mühe zu ziehen, musste als nächstes ein Programm zur Dateiübertragung her, hier bot sich als Einstiegsprojekt das auf den ersten Blick unkomplizierte TFTP-Protokoll an und am 18.02.08 konnte ich dann bereits die erste Datei vom PC (Client) an den KC85 (Server) schicken,
    da dies zunächst auch recht einfach war, wurde beschlossen mal ein wenig Schwierigkeit in die ganze Angelegenheit zu bringen, der W3150A+ hat 4 Sockets, die können auch parallel betrieben werden und so wäre per TFTP auch der simultane Client/Server-Betrieb mit bis zu 3 gleichzeitigen Dateitransfers (ein Socket bleibt immer für den Server reserviert) in alle Richtungen möglich und der WIZnet-Stack würde so auch mal ausgereizt werden,
    die Idee an sich war nicht schlecht, hat aber etwas mehr Arbeit und Kopfzerbrechen bereitet, als erwartet, das lag vor allem am verwendeten UDP-Protokoll von TFTP und an der fehlenden Multitasking-Fähigkeit von CP/M, alle Ereignisse, laufenden Vorgänge und nichtlaufenden Vorgänge (Timeouts) müssen in EINER zum Schluss recht kompliziert aussehenden Schleife abgearbeitet werden - es hat dann auch bis zum 02.03.08 gedauert bis die volle Funktionalität mit TFTP SERVER & CLIENT 1.0 erreicht war, die erste Standardanwendung für den Transport von  Daten im Netzwerk stand damit zur Verfügung, wobei 3 Transfers gleichzeitig laufen können:


    TFTP Server & Client 1.0


    im unteren Bereich des Screenshots sieht man die laufenden Übertragungen, von 192.168.0.20 wird RUMPI.KCC zum KC85 geschickt, 192.168.0.10 holt sich ALL-KC.SSS vom KC85 ab und der KC85 holt sich BOULDER.KCC von 192.168.0.2 ab

  • 03/2008 was brauchte man noch - ein Diagnosewerkzeug zur Überprüfung anderer Netzwerkteilnehmer, die dritte Anwendung war dann im März der obligatorische PING CLIENT in der Version 1.0, zunächst noch ohne DNS-Namensauflösung, das fehlte ja noch bei den Socket-Funktionen, es wurde aber schon mal vorsorglich mit in das Menü aufgenommen:


    PING-Client 1.0


    der PING funktionierte naturgemäss bereits für Internet-Adressen hinter dem Router, wenn man die IP-Adresse des Servers angab, die Gateway-Adresse des Routers wird vom DHCP-Client ermittelt und der WIZnet-Stack entsprechend automatisch konfiguriert, also echtes Plug and Play mit dem KC im Netzwerk

  • 03/2008 alle drei genannten Applikationen wurden in das damit stark erweiterte CPMNET.COM 1.3 integriert, welches Ende März soweit fertiggestellt war, dass es zum bevorstehenden KC-Clubtreffen demonstrieren konnte, dass mit Hilfe des KCNET-Interface ein reibungsloser Betrieb des KC85 in einem Ethernet TCPIP-Netzwerk möglich war, zu diesem Zeitpunkt präsentierte das Programm alle Funktionen in 2 Menüs:


    CPMNET 1.3 / Menü 1


    Menü 1 CPMNET.COM 1.3 für die TCPIP-Funktionen und Applikationen


    CPMNET 1.3 / Menü 2


    Menü 2 CPMNET.COM 1.3 für die Interface-Funktionen und manuelle Netzwerk-Konfiguration

  • 03/2008 nach dem vorläufigen Abschluss der Weiterentwicklung von CPMNET.COM hatte ich noch etwas Zeit bis zum Clubtreffen und diesmal wurde für den dort geplanten Vortrag zum KCNET 2008 etwas vorgesorgt, ich zeichnete mir mit UNIPIC 2.0 eine Diashow mit 20 Bildern, um während der Erläuterung von Theorie, Hardware und Software des KCNET einen roten Faden zu haben:

     
    Image


    da die ganze Thematik recht umfangreich und komplex ist, war das auch ganz gut so - die Diashow bildet den Stand des Projektes zum Zeitpunkt Ende März 2008 ab und befindet sich für Interessenten auch im Downloadbereich

  • 04/2008 im Jahr 2007 fielen die Preise für Flash-Speicher fast ins Bodenlose und so stolperte ich Ende März zufällig über ein schon lange erwartetes Angebot - eine bezahlbare Solid State Disk als IDE-Festplattenersatz für den KC, durch den Wegfall der Mechanik wäre der gesamte KC damit endlich wieder lautlos und die verwendete Technik des "Wear-Leveling" gewährleistet die festplattenähnliche Sicherheit der Daten, die SSD benötigt auch nur noch eine Betriebsspannung von 5V bei 15 mA Strombedarf und arbeitet im Gegensatz zu den Festplatten verschleissfrei,
    der Preis für das 256 MB SSD IDE-Modul lag bei 18 EUR und im Datenblatt standen auch die Angaben für den Betrieb des Moduls im CHS-Mode, so wie das für den KC benötigt wurde, also sollte alles passen und ich bestellte das Modul sofort:


    SSD IDE Flash


    Anfang April wurde dann der erste Test durchgeführt, also am GIDE im D004 anschliessen und mit GIDETEST.COM auslesen, das funktionierte, so dass es mit der Erstellung eines Test-CP/M-Systems weiterging bis zum Boot-Test von der SSD - ich hatte keine nennenswerten Probleme, so dass beschlossen wurde, die alte 210 MB IDE-Festplatte im Laufe des Jahres durch das SSD-Modul zu ersetzen

  • 04/2008 vom 04.04. bis 06.04.2008 fand das vierzehnte Klubtreffen des KC-Club wieder mal an einem neuen Ort statt - wir versammelten uns in Ballenstedt im Harz im "EBZ", der ehemaligen Jugendherberge, der Organisator vor Ort war Götz Hupe,
    wie schon 2007 zeichnete sich bereits vorab eine richtige Vortragsflut ab und die Anzahl der angemeldeten Teilnehmer lag ähnlich wie im vorangegangenen Jahr,
    ebenso ermutigend waren die angekündigten Themen der Vorträge, welche eine gesunde Mischung aus KC85 Projekten, einigen Kleincomputerthemen und über Robotron-Technik bildeten,
    ich war, wie schon 2007, für meine Verhältnisse ziemlich beladen und hatte zwecks Vortrag wieder den PC und die komplette KC85/5 - Anlage dabei:


    KC85/5 in Ballenstedt


    im grossen Raum machten sich vor allem die KC85, KC87, AC1, Z1013 und andere Kleincomputer breit, die Robotron-Technikfreunde mussten wegen Platzmangel fast komplett mit dem kleineren Zimmer vorlieb nehmen, dort fanden auch die meisten Vorträge am Sonnabend wegen Beamer und Leinwand statt,
    das Treffen hatte zwei Besonderheiten, erstens wurden alle 8 angekündigten Vorträge auch gehalten und wir hatten zum ersten Mal Zugang zum Internet über den DSL-Anschluss im Haus und ein entsprechend langes Netzwerkkabel:


    Internet KC-Treffen

     
    ich habe am Sonnabend gegen Abend meinen Vortrag zum KCNET 2008 gehalten und am Sonntag dann noch kurz die SSD am KC85/5 demonstriert, ausser der Funktion gab es ja damit nicht so viel zu zeigen,
    mit 52 Teilnehmern war auch dieses Treffen gut besucht und es waren mehrere echte KC85 Highlights zu sehen, wie Netzwerkanschluss und Betrieb per Ethernet, Anschluss und Betrieb handelsüblicher USB-Sticks als Massenspeicher am KC85 und die Vorstellung eines funktionstüchtigen KC85/4 Grundgerätes mit auf 3,55 MHz verdoppelter Taktfrequenz

  • 05/2008 erste Überarbeitung und Erweiterung des „KC85 Labor“, die Menüstruktur wurde bereinigt und vereinfacht, genauso wie der Downloadbereich und ab sofort konnte man sich in das neue Gästebuch eintragen, ausserdem wurde das Aussehen der Startseite etwas abgerundet

  • 05/2008 nach der Absolvierung des KC-Treffens war erst mal eine kurze schöpferische Pause beim KCNET-Projekt notwendig, zum Einen weil man ab und zu wirklich mal eine Pause benötigt und zum Zweiten musste ich das Ganze erst mal "sacken" lassen, um etwas Abstand zu gewinnen und dann unvoreingenommen und kritisch genug den erreichten Stand und die vorhandenen Mängel beurteilen zu können,
    Ende Mai ging es dann weiter, zunächst wurden die abschliessenden Arbeiten an der Firmware des AVR-Controllers durchgeführt und die endgültige Fassung 1.2 von Hard- und Software erstellt, die PIO des KC konnte nun auch im Polling bedient werden und mit den 5 zusätzlichen Servicefunktionen in der Firmware sollten sich alle noch unbefriedigend gelösten Probleme der Z80-Netzwerksoftware in den Griff bekommen lassen

  • 06/2008 danach ging es gleich mit dem TCPIP-Treiber weiter, die beiden kompliziertesten Socket-Funktionen RECVFR und SENDTO waren noch nicht fehlerfrei - es kostete zwar ziemliche Überwindung dort noch mal etwas zu ändern aber halbfertige Sachen sind auch nicht so schön - nach einigen Stunden Fehlersuche und vielen "Trial and Error"-Aktionen konnte ich den TCPIP-Stack aber schliesslich davon überzeugen, dass zu machen, was ich wollte und nicht er ...

  • 06/2008 damit waren dann auch endlich die letzten Hürden beseitigt, welche einer Verbesserung und Weiterentwicklung der KC-Software im Wege standen - ein grosses Manko unter CP/M war die Benutzung der Koppelschnittstelle mit seiner extrem langsamen byteweisen Übertragung von Daten aus dem D004 zur PIO-Schnittstelle im KC-Grundgerät, es musste also ein neuer Treiber her, welcher das besser kann, Ende Juni funktionierte KCNET.DRV mit Blockübertragung von je 255 Bytes auf einmal und brachte 500% Steigerung, nun war die Datenübertragung schneller als RAM-Floppy oder Festplatte beim Lesen bzw. Schreiben und ich zufrieden

  • 07/2008 die neue Firmwareversion und nun 2 möglichen KC-Treiber unter CP/M, die DRV-Variante geht nur auf einem ZAS-fähigen KC85/4, erforderten natürlich auch umfangreiche Änderungen und Erweiterungen des CP/M-Testprogrammes für das Interface, welche teilweise schon im Juni, danach im Juli aber verstärkt programmiert wurden,
    CPMNET.COM erhielt ein drittes Menü und alle Funktionen wurden logisch sinnvoller neu verteilt, der DHCP- und PING-Code wurde verbessert und erweitert, die gesamte Treibereinbindung wurde neu strukturiert und vor dem Start eine ganze Reihe von Systemtests integriert,
    durch die neue Treibereinbindung war es anschliessend auch möglich, Interface und Software in anderen CP/M 2.x kompatiblen Systemen unverändert nachzunutzen, zumindest theoretisch,
    Mitte Juli wurde die gesamte Optimierung mit der Durchführung von umfangreichen Tests an Hard- und Software erst einmal abgeschlossen und in einem umfangreichen Artikel zum KCNET 1.2 mit CPMNET 1.4 veröffentlicht

  • 08/2008 danach war der Weg frei für die CAOS-Software, das Interface befindet sich dort direkt im Bussystem der Z80-CPU des KC85-Grundgerätes D001 und nur dort lässt sich die maximale Übertragungsgeschwindigkeit erreichen, was mich schon interessierte,
    der TCPIP-Treiber kann ohne Anpassung auch unter CAOS verwendet werden aber für alle Systemaus- und -eingaben war in CAOSNET.KCC nun noch einige Handarbeit notwendig, um die CP/M-spezifischen Programmteile zu ersetzen, Ende August funktionierte schliesslich das Netzwerk auch unter CAOS und mit dem TFTP-Client von CAOSNET 1.4 konnte ich endlich ohne Umwege auch unter CAOS Daten im Heimnetzwerk transportieren:


    CAOS-TFTP


    als Quelle bzw. Ziel ist in beiden Richtungen neben Diskette/HDD des D004 auch die Kassette möglich - man kann also Kassettenaufzeichnungen direkt per Netzwerk von/auf TFTP-Server kopieren, welche auf einem KC85 unter CP/M oder einem PC mit Windows, Linux oder anderen Betriebssystemen laufen können, wobei sich die Software auch automatisch um die notwendigen Anpassungen der *.SSS- und *.TTT-BASIC-Dateien kümmert, damit bleiben alle Dateien D004 kompatibel und lassen sich per Internet problemlos tauschen

  • 08+09/2008 Übersetzung aller Quellen und Programmtexte von CPMNET 1.4 ins Englische aufgrund einer Diskussion in und folgenden Anfragen aus der Newsgroup "comp.os.cpm",
    Dokumentation und ausführliche Vorstellung des Projektes "KCNET" im KC85 Labor,
    Übernahme der Archivbeiträge aus amerikanischen Computerzeitschriften der 80er von "www.cpmwelt.de" in das KC85 Labor auf Wunsch von Jörg Linder,
    Aufbereitung aller KC-News Artikel zu meinen Grafik-Programmen für den KC85 und Veröffentlichung auf dieser Webseite

  • 10/2008 bis zu diesem Zeitpunkt konnten Netzwerk-Hosts ausschliesslich per IP-Adresse adressiert werden, was für den Test und die Nutzung innerhalb eines kleinen Heimnetzwerkes auch vollkommen ausreichte, für die Nutzung von Internet-Diensten kommt man allerdings ohne einen DNS Client kaum aus, welcher im Oktober dann in Angriff genommen wurde,
    da dieses RFC-Protokoll wahrscheinlich integrierter Bestandteil jedes KC-Netzwerk-Programmes sein würde, war allerdings eine sehr kompakte Programmierung notwendig, um so wenig wie möglich Speicher zu verbrauchen - nach ca. 3 Wochen war es vollbracht, der KC war in der Lage per QUERY bzw. INVERSE QUERY des DNS-Servers Domain-Namen in IP-Adressen bzw. umgekehrt aufzulösen und der Client benötigt genau 802 Bytes des wertvollen Z80-Arbeitsspeichers

  • 11/2008 damit war auch die letzte Lücke der KCNET-Basis-Software geschlossen und es konnte ins Finale gehen, zunächst wurde der PING-Code vollendet, mit DNS gab es danach keine funktionellen Unterschiede mehr zu anderen Betriebssystemen,
    auch die Socket-Testfunktionen in CPMNET.COM und CAOSNET.KCC wurden DNS-fähig gemacht, mit einem geeigneten DNS-Server im Heimnetzwerk lassen sich die anderen Netzwerkteilnehmer dann auch per Host-Name adressieren,
    abschliessend wurden die Funktionen 1:1 angeglichen - geplanter Sinn und Zweck war von Anfang an der Test und die Diagnose aller Interface- und TCPIP-Funktionen und nur das blieb auch drin,
    mit der Version 1.5 beider Programme stand dann sowohl für CAOS als auch CP/M ein identisches Programm für die Inbetriebnahme der TCPIP-Schnittstelle des KC85-Systems zur Verfügung und die gesamte Grundlagenarbeit konnte abgeschlossen werden

  • 11/2008 Enrico Grämer gelingt mit einem alten DDR-Bürocomputer (K8924) mit dem CP/M 2.x kompatiblen SCP1526 und einer selbstgebauten K1520-Karte mit der geklonten KCNET-Hardware die erste erfolgreiche Nachnutzung des Projektes auf vollkommen anderer Hardware:


    KCNET K1520-Karte


  • 12/2008 der Abschluss dieses sehr KC-lastigen Jahres bestand dann im Dezember darin, erst einmal für CP/M die fertigen Codebestandteile in einzelne Netzwerk-Programme auszulagern, welche per Kommandozeile aufgerufen und parametriert werden können,
    den Anfang machte NCFG.COM, welches das Netzwerk automatisch beim Systemstart konfiguriert, so dass man sich nach seiner einmaligen Einrichtung um nichts mehr kümmern muss:


    CP/M Netzwerk-Konfiguration


     
    vor der Weihnachtspause wurde auch noch die Kommandozeilen-Version PING.COM fertig, welche sich jetzt im Netzwerk und Internet uneingeschränkt einsetzen lässt, im folgenden Screenshot wird beispielsweise ein Google-Server vom KC85 "belästigt" Winken:


    CP/M PING.COM