Mit dem nachfolgend beschriebenen grossen Update der gesamten Netzwerk-Software für CP/M wurden die letzten Altlasten aus der Entwicklungsphase bereinigt und kleinere Fehler beseitigt. Alle bisher eingetroffenen Anregungen und Verbesserungsvorschläge sowie die eigenen Ideen für die Weiterentwicklung der einzelnen Programme wurden natürlich auch umgesetzt.
Letztes Jahr gab es auf dem KC-Treffen diverse Gespräche mit den Anwendern der Netzwerk-Software. Da die allgemeine Nutzung mittlerweile weit über das KC85-System hinausgeht und vor allem unter den CP/M-Anwendern immer mehr an Breite gewinnt, wurde vor ein paar Monaten die vorläufig letzte Überarbeitung der Quelltexte und die Erweiterung diverser Funktionalitäten in Angriff genommen, welche dieser Entwicklung Rechnung tragen sollen. Es ging dann Stück für Stück voran, beginnend bei der Treibereinbindung und -organisation über die Vereinheitlichung der Bezeichnung von Treiberfunktionen und die darauf folgende Überarbeitung und Anpassung jedes einzelnen Netzwerkprogrammes.
In der Summe war das letztendlich etwas mehr Arbeit als gedacht aber nun bin ich der Meinung, dass ich da so schnell nichts mehr ändern muss. In den folgenden Abschnitten gibt es die ensprechenden Informationen zu den vorgenommenen Veränderungen. Die wichtigsten Punkte wurden auch in die vorhandenen Artikel zur CP/M Netzwerk-Software und zum KCNet-Projekt übernommen.
Das veröffentlichte FTP-Programm vom vergangenen Jahr besitzt gegenüber den anderen Programmen ein gewisses Mass an Komplexität bei Funktion und Bedienung. Deshalb war auch eine deutsche Programm-Beschreibung versprochen. Diese wird zusammen mit dem heutigen Update nachgereicht, die Datei FTPxx.DOK befindet sich ab sofort mit in den entsprechenden "KCNet" Software-Paketen.
Quelltexte
Hier gab es vor allem noch ein ziemliches Durcheinander bei der Einbindung und Verwaltung des Low-Level-Treibers. Wenn man durch die Quellen liest, sollte weiterhin die Verwendung von Funktionen des Netzwerktreibers transparenter werden. Daher gab es massive Änderungen bei der Benennung von Low-Level- und Mid-Level-Funktionen, sowie der symbolischen Namen von Hardware-Adressen im KCNet-Interface.
Die definierten Symbole und Konstanten des TCP/IP-Stacks und der Socket-Schnittstelle wurden nicht verändert. Die Namen der Socket-Funktionen des High-Level-Interface wurden ebenfalls beibehalten, da sie den üblichen Bezeichnungen in anderen Programmiersprachen entsprechen.
Die komplette Verwaltung des Low-Level-Treibers und seiner Parameter bzw. Symbole wurde in einen neuen Abschnitt "LOW LEVEL Interface" der Datei KCNET.INC verlagert. Die wird für die Systemanpassung sowieso immer benötigt und eine weitere INC-Datei wollte ich dafür nicht aufmachen, leider kann man mit dem Assembler Include-Dateien nicht verschachteln. Parallel dazu wurden alle Funktionen und Unterprogramme aus den Netzwerk-Programmen entfernt, welche für die Initialisierung und den Test der Hardware notwendig sind, wenn das Netzwerk in Betrieb genommen werden soll.
Diese Aufgaben werden jetzt alle in der gemeinsamen Funktion "N_INIT" der beiden möglichen Hardwaretreiber durchgeführt, welche beim Start von Netzwerkprogrammen einmalig aufgerufen werden muss. Sie gibt anschliessend den Erfolgsstatus in CY zurück. Wenn es gesetzt ist, trat ein Fehler auf und (nur) dann befindet sich in DE die Adresse einer null-terminierten Fehlermeldung, welche das Netzwerk-Programm auf der Konsole ausgeben und sich anschliessend beenden sollte. Mehr gibt es nicht mehr zu tun, im Erfolgsfall können anschliessend alle Funktionen des Netzwerk-Treibers verwendet werden, das sieht daher in allen Programmen jetzt identisch aus, siehe Kommentartext ";try Network init".
Das hauptsächliche Ziel dieser Veränderungen ist damit auch in den Quelltexten deutlich zu sehen, alle Netzwerk-Programme haben jetzt den gleichen Aufbau, egal, welches Netzwerk-Protokoll gerade programmiert werden soll:
- Vorspann mit Informationen zum Programm
- Versionsnummer
- Makros
- Symbole für den Assembler und CP/M
- "Start of Code"-Abschnitt mit:
- Sprung zum Hauptprogramm
- ZCPR-Header für NZCOM
- "KCNet" Treiber Include-Dateien mit:
- Low-Level-Interface (KCNET.INC)
- Low-Level-Treiber (KCN-KC85.INC oder KCN-ZPIO.INC)
- Mid-Level-Treiber (W5100-xx.INC)
- High-Level-Treiber (W5100-xx.INC)
- optionale Include-Dateien mit z.B.:
- Resolver (DNSC-xx.INC)
- Arithmetik (Z8032BIT.INC)
- Symbole und Strukturen für das Netzwerk-Protokoll
- Ablage von Variablen und Texten des Programmes
- Unterprogramme und Funktionen
- Hauptprogramm mit:
- Systemerkennung
- Kommandozeilen-Parser
- Netzwerk-Initialisierung
- TPA-Initialisierung
- Hauptprogramm (-Schleife)
- Programm-Ende
- interne Zwischenablage von Daten
- lokaler Stack
- durch den Linker angefügte Bibliotheksfunktionen
- dynamische externe Zwischenablage von Daten im TPA zwischen Programm und TPA-Ende
Da ich in meinen Programmen für CP/M sehr gern und ausgiebig die Angebote der SYSLIB-Bibliothek nutze und selbst exzessiv Programmfunktionen in Unterprogramme auslagere, damit das Hauptprogramm kurz und übersichtlich bleibt, kann es manchmal etwas verwirrend sein, wenn man im Quelltext beispielsweise einen CALL-Befehl vor sich hat und nicht sehen kann, wo er sich gerade bedient.
Wie bereits geschrieben, gab es aus diesem Grund für die untere und mittlere Treiberschicht des Netzwerk-Treibers einige Änderungen. Alle Symbole und Unterprogramm-Namen wurden konsequent umbenannt und haben jetzt das einheitliche Präfix "N_", so dass man damit ihre Herkunft im Quelltext auf Anhieb erkennen sollte. In der folgenden Aufstellung sind die Merkmale diverser Bezeichner in den Quellen noch einmal zusammengefasst:
Kennzeichen |
Beispiel |
Quelle |
Präfix "N_" |
CALL N_TIME |
|
Suffix "##" |
CALL ISPRINT## |
Unterprogramm oder Symbol der SYSLIB-Bibliothek (siehe Übersicht in der Datei SYSLIB.HLP und Hilfedateien SYSLIB0.HLP bis SYSLIBI.HLP) |
Präfix "_" |
CALL _FYI$OPEN |
im Programm gekapseltes Unterprogramm der SYSLIB-Bibliothek (ist mitunter notwendig, um zusätzliche Register, wie IX und IY, zu retten) |
Alle anderen symbolischen Bezeichner können sich daher nur noch an den folgenden Stellen befinden:
- im jeweiligen Programm selbst als Symbol oder Unterprogramm
- in der Datei W5100-xx.INC im Abschnitt "CONSTANTS TCPIP-Stack"
- in der Datei W5100-xx.INC im Abschnitt "CONSTANTS SOCKET-Interface"
- in der Datei W5100-xx.INC im Abschnitt "Socket Driver : HIGH LEVEL Interface"
Mit diesen Informationen sollte man sich nun in den Quellen besser und schneller zurechtfinden als vorher, wenn man bestimmte Informationen sucht oder einfach nur wissen möchte, wie das ganze System funktioniert und programmiert wird bzw. programmiert werden kann.
Neben den vorgenommenen Strukturänderungen wurde auch noch etwas aufgeräumt. Das Aussehen und der Inhalt des Vorspannes aller Dateien wurde vereinheitlicht und der Treiber für den Hardware TCP/IP-Stack erhielt aufgrund der geänderten Namen eine neue Versionsnummer.
Wichtig: Mit dem heutigen Update sollte man alle älteren Quellen ins Archiv packen oder löschen. Auf keinen Fall sollte man alt und neu irgendwie vermischen - das passt nicht mehr zusammen und wird Probleme bei der Übersetzung machen! Da eigentlich an allen Dateien grössere und kleinere Veränderungen vorgenommen wurden, sollte man ab sofort nur noch mit den heutigen Quelltexten und Versionen arbeiten, wenn man selbst Anpassungen durchführen möchte!
Alle Programme
Wie man im Downloadbereich sehen kann, gibt es mittlerweile einige Varianten von Netzwerkkarten für verschiedene Z80-Systeme. Es fällt daher zunehmend schwerer, die notwendige Anpassung der KCNet-Schnittstelle an die eigene Hardware in den damit entstehenden Varianten der Netzwerk-Programme auseinanderzuhalten. Hat man dann vielleicht noch mehrere verschiedene CP/M-Rechner mit Netzwerk, geht schnell die Übersicht verloren. Irgendwann werden auch die 8 Zeichen im Dateinamen knapp, wenn man dort Versionsnummer und Portnummer der PIO verewigen will.
Während der Umbauarbeiten an den Quelltexten wurde daher versucht, dieses Problem gleich mit zu entschärfen. Wie oben zu sehen, erfolgt nach dem Programmstart zuerst die Systemerkennung, dann werden die Parameter der Kommandozeile ausgewertet und erst dann erfolgt die Initialisierung der Netzwerk-Schnittstelle, wenn sie vorhanden ist.
Dadurch ist man nun immer in der Lage, die Versionsangabe (-v) und die integrierte Programmhilfe (-h) noch vor der Initialisierung der Netzwerk-Hardware auszugeben, wenn das in der Kommandozeile über die entsprechenden Parameter angefordert wurde. Das funktioniert jetzt so mit allen Netzwerk-Programmen bis auf KERMIT 4.11, welches als angepasstes Fremdprogramm nicht beliebig geändert werden kann.
Der entscheidende Mehrwert dieser Vorgehensweise steckt dann in der Versionsmeldung. Diese gibt nun zusätzlich das System und die Anbindung der KCNet-Schnittstelle aus, welche beim KC85 immer das M052 ist und bei den ZPIO-Varianten die in der Datei KCNET.INC eingetragene Portnummer der PIO. Diese Info erhält man auch ohne die eingebaute Netzwerk-Hardware, die einzige Voraussetzung besteht in einem geeigneten CP/M-System. Im Extremfall reicht dafür auch ein Emulator auf dem PC, siehe die folgenden Screenshots, welche mit Z80MU in der Windows-DOSBox gemacht wurden. Der hat ganz sicher keine KCNet-Schnittstelle eingebaut:
Versionsmeldung von FTP11.COM: übersetzt für KC85 mit M052
Versionsmeldung von TFTP14.COM: übersetzt für GNet/K1520Net an PIO-Port 0C0H
Versionsmeldung von CPMNET16.COM: übersetzt für AC1-Multiport-Karte an PIO-Port 088H
Eine weitere generelle Änderung war die Beseitigung eines kleinen Fehlers der KC85-Versionen aller Programme. Beim Start schalten alle Programme den Zeichensatz auf US-ASCII um. Leider klappte aber das auch vorhandene Zurückschalten auf den vorher eingestellten Zeichensatz nicht, da es falsch programmiert war - das sollte jetzt mit allen Programmen richtig funktionieren.
Bei allen Programmen wurde die bisher nicht einheitliche Behandlung von übergebenen Domain-Namen auf den gleichen Stand gebracht. Normalerweise sollen Domain-Namen mit einem Buchstaben beginnen, was aber mittlerweile nicht mehr der Internet-Realität entspricht. Alle Programme gehen jetzt folgendermassen bei der Auflösung eines Namens in seine numerische IP-Adresse vor. Beginnt ein vom Anwender übergebener Domain-Name mit einer Ziffer, versucht das Programm diesen Namen bzw. Text direkt in eine numerische IP-Adresse umzuwandeln. Bringt diese Umwandlung keine Fehlermeldung, wird mit der umgewandelten numerischen IP-Adresse weitergearbeitet. Trat bei der direkten Umwandlung ein Fehler auf, wird der übergebene Name an den Resolver zur Auflösung in seine numerische IP-Adresse weitergeleitet.
Das bedeutet dann im Umkehrschluss aber auch, wenn man eine IP-Adresse direkt übergeben will, sollte man sich nicht vertippen, da alle nicht direkt konvertierbaren Texte dann auch über den Resolver laufen werden, was in der Regel keinen Sinn macht. Es ist aber nun möglich, solche Server, wie "0.de.pool.ntp.org" anzupingen, das ging bisher nicht über den Namen, sondern nur über die direkte Angabe seiner IP-Adresse, wenn man sie kennt :-).
Schliesslich wurde nun auch generell die Beschränkung auf CP/M-Systeme der Version 2.x aufgehoben. Da systemseitig nur Standard-BDOS-Funktionen in den Netzwerk-Programmen aufgerufen werden, sollten diese unter CP/M Plus bzw. CP/M 3 genauso funktionieren. Vor einiger Zeit hat ein CP/M-Anwender mit einer CPU280 Interesse an der Nutzung des Netzwerkes angemeldet. Dort wird CP/M Plus als System verwendet und spätestens nach der Inbetriebnahme des GNet in diesem System werden wir es dann genau wissen ...
Parallel zu den Programmänderungen wurden die entsprechenden Programm-Beschreibungen angepasst. Der Vorspann sieht jetzt immer gleich aus, genauso wie der interne Aufbau. Am Anfang befindet sich eine Kurzbeschreibung zum Sinn und Zweck des Programmes, dann werden die Kommandozeile und ihre Parameter erklärt und nachfolgend gibt es detaillierte Anweisungen zum Gebrauch der einzelnen Funktionen mit ergänzenden Hintergrundinformationen.
Soviel zu den allgemeinen Änderungen, welche alle Netzwerk-Programme betreffen. In den folgenden kurzen Abschnitten dann noch ein paar Bemerkungen zu den spezifischen Umstellungen und Verbesserungen der einzelnen Programme.
CPMNET.COM (Version 1.6)
Hier gab es ein paar kleine kosmetische Reparaturen. Neu sind die drei zusätzlichen Schalter in der Kommandozeile, mit denen man direkt in eines der 3 Programm-Menüs springen kann. Praktisch sind eigentlich nur "-i" für das Interface-Menü und "-t" für das TCP/IP-Menü relevant, da man auch ohne "-n" immer im Netzwerk-Menü landet.
Die Funktion "IP-CONFIG" gibt jetzt auch den DNS-Namen des Rechners aus, wenn er lokal per DNS im Netzwerk aufgelöst werden kann.
Die Funktion "SERVER IP-ADDRESSES" gibt jetzt die Inhalte aller acht Speicherplätze des Interfaces aus, in denen sich IP-Adressen von Servern o.ä. ablegen lassen. Bisher ist dort nur der Platz 0 für den DNS-Server fest vergeben.
Die interne PING-Funktion wurde auf die neue Version 1.3 von PING.COM aktualisiert.
NCFG.COM (Version 1.2)
Hier gab es noch mal eine wichtige Erweiterung. Mit dem neuen Parameter "config name" in der Kommandozeile lassen sich jetzt benannte vordefinierte Konfigurationen aus der Datei NCFG.INI automatisch anwenden. Eine Beispieldatei befindet sich mit in den Programm-Paketen.
Damit löst sich folgendes Problem, auf das mich Daniel Elstner aufmerksam gemacht hat. Er wollte in der DHCP-Konfiguration seinem KC einen Computernamen mit Kleinbuchstaben mitgeben, was nicht funktioniert. An dieser Stelle macht der CCP von CP/M nicht mit, da er bei der Übernahme der Kommandozeile alle Kleinbuchstaben nach gross umwandelt. Die eingegebene Schreibweise von Parametern ist im Programm daher nicht mehr "zu sehen" und kann damit auch nicht an den DHCP-Server übergeben werden.
Mit der neuen Programmversion definiert man jetzt in der Datei NCFG.INI eine Konfiguration, in welcher der Hostname die gewünschte Schreibweise hat. Den Namen dieser Konfiguration gibt man dann NCFG.COM beim Start in der Kommandozeile bekannt. Das Programm liest dann den vordefinierten Hostnamen aus der Datei und übergibt ihn anschliessend unverändert an den DHCP-Server, wodurch das bisher bestehende Problem umgangen werden kann.
Mit der möglichen Ablage von Konfigurationen in einer Datei wird zusätzlich der Komfort bei einer manuellen Konfiguration der Netzwerk-Parameter ohne DHCP oder APIPA erheblich gesteigert. Man muss sich dann nur noch den oder die Namen der Konfigurationen merken und spart beim Aufruf des Programmes jede Menge Tipperei und macht dadurch auch weniger Fehler. Erstaunlicherweise musste ich auch feststellen, dass nicht jeder immer und überall versucht, mit DHCP zu arbeiten, sondern die Netzwerk-Teilnehmer lieber manuell konfiguriert. Solchen Anwendern dürfte diese Verbesserung dann wie gerufen kommen.
Wenn man mit der neuen Konfigurationsdatei arbeitet und NCFG.COM nicht aus seinem eigenen Verzeichnis aufruft, muss man dem Programm auch den Standort der Datei NCFG.INI in der Kommandozeile mitteilen. Der Dateiname der Konfigurationsdatei ist fest vorgegeben, daher wird ihr Verzeichnis vor dem Namen der Konfiguration erwartet, welche anschliessend aus der Datei NCFG.INI geladen werden soll. An dieser Stelle dürfen auch benannte Verzeichnisse unter NZCOM angegeben werden.
Neben einigen Textänderungen bei den Programm-Meldungen wurde noch die bisher fehlende Abbruchmöglichkeit der APIPA-Konfiguration ergänzt, das erfolgt wie üblich mit einer der beiden Tasten BRK oder ESC.
PING.COM (Version 1.3)
Am PING-Programm wurde funktionsmässig fast nichts geändert. Lediglich die Behandlung von übergebenen Domain-Namen wurde wie oben bereits beschrieben auf den neuen Stand gebracht.
TFTP.COM (Version 1.4)
Eigentlich war hier gar nichts mehr geplant aber manchmal gibt es auch externe Gründe, bestimmte Sachen noch einzubauen. Das TFTP-Programm kann ja auch als Server im Netzwerk betrieben werden und das macht vor allem in Emulatoren Probleme, welche nicht immer ungehinderten Zugriff auf die privilegierten TCP/IP-Ports (Portnummern unter 1024) des Betriebssystems haben. TFTP-Server laufen standardmässig auf UDP-Port 69 und andere Ports wurden bisher von TFTP.COM nicht unterstützt.
In der neuen Version 1.4 wurde diese Beschränkung komplett aufgehoben. Der Server kann nun auf beliebigen UDP-Ports betrieben werden, was bereits in der Kommandozeile angegeben oder direkt im Server-Menü eingestellt werden kann. Auf die beiden Clientfunktionen PUT und GET trifft das konsequenterweise auch zu, man kann jetzt auch mit TFTP-Servern kommunizieren, welche nicht auf dem Standard-Port 69 laufen. Durch diese Erweiterung gab es einige kleine Änderungen bei den Anzeigen des Server-Menüs und eine neue Funktion, mit welcher der aktuelle Server-Port in Echtzeit eingestellt werden kann.
Da ich nun einmal am Ändern war, wurde die überfällige Unterstützung für benannte Verzeichnisse unter NZCOM im gesamten Programm ergänzt. Die Namen können jetzt in allen Eingabefunktion statt DU: verwendet werden und die Anzeige von Client- und Server-Verzeichnis im Menü wurde dahingehend erweitert.
Wen man das Server-Menü gestartet hat, besteht unter CP/M kein Zugriff mehr auf andere Programme. Wenn man dann eine Datei zum Server schicken will und den Computer-Namen bzw. die aktuelle IP-Adresse nicht oder nicht mehr :-) kennt, hat man ein Problem. Das bedeutet in der Regel TFTP-Programm beenden, NCFG aufrufen, um Name bzw. IP nachzulesen und TFTP.COM noch einmal starten. Das ist nicht sehr elegant und nun auch nicht mehr notwendig, die Version 1.4 zeigt die lokale IP-Adresse des Servers in der Transfer-Überschrift des Menüs an.
Weitere Änderungen betreffen die Behandlung von Zugriffsfehlern im Dateisystem. Ab Version 1.4 führen BDOS-Fehler unter KC85-MikroDOS und ZSDOS/ZDDOS nicht mehr zum Abbruch von TFTP.COM. Die BDOS-Fehlermeldung des Systems wird angezeigt und man bleibt nach ihrer Bestätigung im Programm.
Wenn ZSDOS/ZDDOS als BDOS-Ersatz verwendet wird, schaltet TFTP.COM vor dem Schreiben von Dateien temporär den Zugriff auf "öffentliche Dateien" aus und stellt anschliessend den alten Zustand wieder her. Damit erledigen sich schlecht nachvollziehbare Meldungen von TFTP.COM, dass eine Datei beim Empfang schon vorhanden wäre, obwohl sie sich gar nicht im eingestellten Verzeichnis befindet. Durch einen aktivierten "öffentlichen Zugriff" wird sie eben auch gefunden, wenn sie über den Suchpfad "gesehen" werden kann, was zu der beschriebenen Fehlermeldung führte.
KERMIT4N.COM (Version 4.11)
Das an die KCNet-Schnittstelle angepasste KERMIT 4.11 mit den KC85 Terminal-Funktionen wurde lediglich mit den neuen KCNet-Quellen übersetzt. Weitere Änderungen sind dort auch nicht geplant. Daher wurden die aktuellen dort benötigten KCNet-Quellen und die angepassten originalen KERMIT-Quellen aus dem KCNet-Quellkodepaket entfernt und in ein eigenes Paket KERMIT4N.PMA ausgelagert. Das fertige Programm wird natürlich nach wie vor zusammen mit den anderen Netzwerk-Programmen verteilt.
WOL.COM (Version 1.1)
Das kleine WakeOnLan-Programm wurde leicht modernisiert. Beim Aufruf von WOL.COM kann für den Standort der WOL.INI der gleiche Mechanismus wie bei der NCFG.INI (siehe oben) benutzt werden. Die Unterstützung für benannte Verzeichnisse unter NZCOM ist ebenfalls ergänzt worden.
Neu ist die Sendung von generell 3 statt bisher immer 1 WOL-Paket ins Netzwerk bei jedem Weckruf. Das ist unschädlich für den (ausgeschalteten) Zielrechner, erhöht aber die Funktionssicherheit des Programmes. Die Prüfung von Kommandozeilen-Parametern wurde weiter verbessert.
NTIME.COM (Version 1.1)
NTIME ist immer dann sehr praktisch, wenn wieder mal die Systemuhr beim Einschalten des KC85 aus nicht nachvollziehbaren Gründen und nach einer völlig "willkürlichen Logik" zurückgesetzt wurde. In der neuen Version gab es daher einige Veränderungen, welche den Kreis der potentiellen Anwender etwas vergrössert, die das Programm auf dem eigenen System verwenden können und wollen.
Das direkte Setzen von Datum und Uhrzeit per BIOS wurde verworfen, da diese Methode nur mit dem KC85-BIOS funktioniert. In der Version 1.1 erfolgt das Stellen einer Systemuhr mit BDOS-Funktionen, das Programm wurde im Abschnitt SETCLK dahingehend neu konzipiert und erweitert:
- unter MikroDOS (nur KC85) wird wie bisher nur die Systemzeit gestellt
- unter ZSDOS/ZDDOS wird die Systemzeit mit BDOS-Funktion 99 gestellt
- unter CP/M Plus und höher wird die Systemzeit mit BDOS-Funktion 104 gestellt
Die zweite Variante ersetzt die bisherige Methode für KC85-Systeme unter MLDOS. Sie wurde auch noch von Ralph Hänsel freundlicherweise auf seinem AC1 getestet. Das dort verwendete CP/M-System benutzt ZSDOS als BDOS-Ersatz und das Stellen der Systemuhr hat dort genauso funktioniert.
Die dritte Variante ist erst ab Version 1.1 möglich. Dazu wurde die Berechnung der Datums- und Zeitstempel für CP/M Plus ergänzt. Das Stempelformat unterscheidet sich geringfügig von der ZSDOS/ZDDOS Variante. Diese Methode wurde bisher noch nicht getestet, da mir kein CP/M Plus zur Verfügung steht.
Bereits letztes Jahr ist Mario Leubner bei einer Benutzung des Programmes einmal aufgefallen, dass es in der Zeitmeldung die Sekunden mit 60 zurückmeldet, was eigentlich nicht geht. Da die Zeit ja nicht stehenbleibt, lässt sich dort ein ev. Fehler gar nicht so einfach finden, der nächste Aufruf bringt wieder eine andere Meldung. Das gleiche Verhalten wurde vor kurzer Zeit dann auch von Jens Müller berichtet. Im Zuge der Überarbeitung bin ich noch einmal auf die Suche gegangen und habe den Fehler schliesslich auch gefunden. Mit der Version 1.1 sollte der Sekundenfehler in der Zeitberechnung nun nicht mehr auftreten.
FTP.COM (Version 1.1)
Für das FTP-Programm hatte ich mir bei der Entwicklung reichlich Zeit bis zur Veröffentlichung der ersten Version gelassen. Daher war diese bereits nahezu vollständig aber noch nicht ganz fertig. Bei einem Programm für die Übertragung von Dateien ist eine durchgehende Unterstützung für benannte Verzeichnisse unter NZCOM natürlich Pflicht aber voriges Jahr fehlte zum Schluss die nötige Energie, das auch noch einzupflanzen :-).
Das wurde jetzt mit der Version 1.1 nachgeholt, alle relevanten Funktionen, wie Eingabe, Anzeige, Protokolle oder Skripts, kommen nun mit solchen Verzeichnisnamen klar, wenn das System dafür eingerichtet ist. Auch im FTP-Standardprompt wird der Name eines benannten Verzeichnisses zusätzlich angezeigt, wenn sich das aktuelle Arbeitsverzeichnis von FTP.COM in einem benannten Verzeichnis unter NZCOM befindet und ein Name verfügbar ist.
Unter ZSDOS/ZDDOS kann man jetzt auf "öffentlich" gekennzeichnete Skript- und Historie-Dateien ausserhalb des aktuellen FTP-Verzeichnisses lesend zugreifen. Alle FTP-Datenübertragungen sind aber nach wie vor, wie in Version 1.0, auf das aktuell eingestellte FTP-Arbeitsverzeichnis beschränkt.
Die Abarbeitung von Befehlen aus einer Skriptdatei kann jetzt jederzeit mit der BRK-Taste bzw. CTRL+C abgebrochen werden, was durch die Ausgabe von zwei Tönen quittiert wird. Man darf das aber nicht verwechseln mit der Ausführung von FTP.COM-Befehlen. Ein einmal begonnener Befehl, wie beispielsweise MGET, wird davon nicht berührt, den kann nur das FTP-Kommando ABORT abbrechen. Auf MGET folgende Befehle in der Skript-Datei werden nach einem quittierten Abbruch der Skriptverarbeitung aber nicht mehr geladen und demzufolge auch nicht mehr ausgeführt.
Schliesslich wurde für FTP.COM auch noch die versprochene deutsche Beschreibung erstellt (FTPxx.DOK) und in die Pakete mit den fertigen Programmen aufgenommen.
Damit wäre alles zu den Änderungen und Neuerungen gesagt. Die "KCNet"-Pakete mit den KC85-Programmen, den Programmen für GNet- und K1520Net-Karten auf Standard-Adresse 0C0H und das Paket mit den Quelltexten wurden aktualisiert und im Downloadbereich zur Verfügung gestellt - viel Spass beim Ausprobieren!
with a Welcome message. Then you're in the interactive command line and can use
the available FTP.COM commands (see below). The following control functions are
available in the command line interface. The function mapping to a key on the
keyboard is set in column 3 of the file KCNET.INC:
SHIFT+Cursor left (^A) - Cursor to begin of line
Cursor left (^H) - Cursor left one char
Cursor right (^D) - Cursor right one char
SHIFT+Cursor right (^F) - Cursor to end of line
Tabulator (^I) - Complete command or show possible commands
Cursor up (^E) - Scroll backward through command history
Cursor down (^X) - Scroll forward through command history
Delete (^G) - Delete character under Cursor and shift left
Clear line (^Y) - Clear command line
Backspace (^_) - Delete character preceding Cursor and shift left
Enter (^M) - Execute command or finish input of parameters
Password input can not be edited, only the Clear line function is allowed. The
Tabulator and Scroll functions through the history are not available during the
input of parameters.
Available commands depend on the program status. Many commands are available
only, when you are connected to a FTP server.
During file transfers the command line remains active. So, for example, the
ABORT command can be sent to the server.
Disallowed commands are acknowledged with an error message.