MS-DOS Speicheroptimierung auf dem Monotech NuXT Turbo PC

Vor gut zwei Jahren hatte ich meinen Monotech NuXT Turbo PC vorgestellt. Ein Design für einen Turbo XT aus dem Jahr 2019 nach aktueller ATX-Spezifikation mit wahlweise Intel 8088 oder NEC V20 CPU, Intel 8087 FPU, eingebauten XT-IDE Controller, und und und! Ausgestattet ist es aber auch mit 832 KiB RAM aufgeteilt auf zwei ICs in DIP-Gehäuse.

englischdeutsch
UMAUpper Memory Areaoberer Speicherbereich
HMAHigh Memory Areahoher Speicherbereich
Vollständige Nutzung des konventionellen Speichers

In der Zeit bis jetzt hatte ich den PC unter MS-DOS ausschließlich mit den 640 KiB konventionellen Speicher genutzt, was bedeutete, dass das gesamte DOS-Betriebssystem, sowie alle aktiven Treiber nur diesen verwendeten und im Zweifel für Anwendungsprogramme, beziehungsweise für Spiele nicht mehr ausreichend RAM zur Verfügung steht. Jetzt habe ich mich aber mal hingesetzt und den noch zur Verfügung stehenden, sogenannten Upper Memory Area (kurz UMA, deutsch: ‚oberen Speicherbereich‘) aktiviert, konfiguriert, sowie versucht zu optimieren, damit mehr konventioneller Speicher für Programme und Spiele zur Verfügung steht. Schließlich hat Monotech Vintage PCs auf der mit MS-DOS vorinstallierten, sowie mitgelieferten CompactFlash-Karte auch gleich die passenden Treiber und Tools wie USE!UMB und DOSMAX beigefügt.
Abzüglich der 640 KiB konventionellen Speicher stehen mir also von den physischen 832 KiB grundsätzlich noch 192 KiB Upper Memory Area zur Verfügung. Dieser ist wiederum in sechs 32 KiB große Upper Memory Blocks (UMB) aufgeteilt. Über den auf dem NuXT Mainboard aufgelöteten 6-fach Dip-Switch lassen sich die einzelnen Blöcke stufenweise aktivieren. Allerdings muss ich hier beachten, dass es Erweiterungskarten für den ISA-Bus gibt, die auch den oberen Speicherbereich nutzen. Das wären neben Speichererweiterungskarten, Netzwerkkarten mit oder ohne Boot ROM, Karten mit eigenen Option ROMs wie HDD-/FDD-Controller auch EGA und VGA Grafikkarten wie die auch bei Monotech Vintage PCs mitgelieferte ‚Onboard PC/104 VGA Card‘. Das heißt, dass ich den ersten 32 KiB Block UMB nicht aktivieren kann, da es sonst zu einem Konflikt kommt und ich keine Grafikausgabe bekomme. So bleiben mir also effektiv nur fünf Blöcke mit zusammen 160 KiB als oberen Speicherbereich. Wirklich mehr als genug um die ersten 640 KiB konventionellen Speicher zu entlasten.
Dank der kurzen Anleitung im ‚NuXT Turbo PC‘ Handbuch, den originalen Dateiversionen der autoexec.bat und config.ays, sowie etwas Selbstoptimierung habe ich den verfügbaren Speicher für ausführbare Programme nun von 548 auf 625 KiB erhöht. Dies habe ich erreicht, in dem ich erst einmal überhaupt mit dem USE!UMBS.SYS Treiber den oberen Speicherbereich für MS-DOS zur Verfügung gestellt habe. In diesen wurden dann bereits einige Teile vom MS-DOS Betriebssystem, der Teriber für den USB2ISA Adapter und der Maus SYS-Treiber verschoben.

Systemteile und Treiber wurden in hohen und oberen Speicherbereich verlagert

Neben dem oberen Speicherbereich (UMA) kann in der config.sys auch noch der hohe Speicherbereich (HMA = High Memory Area) aktiviert werden. Das Programm DOSMAX sorgt dafür, dass weitere Teile des MS-DOS Betriebssystems nun in den zusätzlich zur Verfügung stehenden hohen Speicherbereich geladen werden. DOSMAX selber wurde natürlich zuvor in den oberen Speicherbereich geladen. Für den hohen Speicherbereich wird anscheinend aber wieder ein Teil des oberen Speicherbereichs genutzt. Zumindest werden mir mit dem Programm mem.exe wieder nur 123 KiB gesamt UMA angezeigt, der HMA wird leider nicht aufgezeigt.
Bei immer noch so viel zur Verfügung stehenden oberen Speicher habe ich mir auch mal das MS-DOS eigene Programm doskey.exe gegönnt und in die Startkonfiguration hinzugefügt. doskey.exe ist ein kleines Programm, welches eine Commandline-History für die aktuelle DOS-Sitzung seit Systemstart bietet.

Seit Aktivierung der Upper Memory Area zeigt das DOS-Programm mem.exe als insgesamt zur Verfügung stehenden Speicher nun 1024 KiB an. Dies stimmt insofern, als DOS mit dem entsprechenden aktivierten Speicherbereich die Menge auch verwalten und nutzen kann, allerdings kommuniziert DOS – zumindest beim NuXT – nicht mit dem BIOS, sodass der Wert nicht mit dem physisch zur Verfügung stehenden Speicher korrespondiert. Es geht stattdessen nur davon aus, dass 1024 KiB RAM zur Verfügung steht. Sieht man sich das Board Layout des NuXTs unter Verwendung des Handbuchs an, so scheint der physisch zur Verfügung stehende Arbeitsspeicher aus zwei 512 KiB D-RAM Speicherbausteine zu bestehen. – Was in Summe 1024 KiB sind. Da aber über die DIP-Schalter nur bis zu sechs UMBs à 32 KiB zusätzlich zu dem konventionellen Speicher zugeschaltet werden können, können praktisch auch nur maximal 832 KiB Gesamspeicher genutzt werden. Das ist MS-DOS hier nicht in der Lage exakt zu prüfen. Außerdem werden laut dem NuXT Handbuch noch Teile des UMAs für den Video-RAM (MDA, CGA, EGA oder VGA), für das XT-IDE Universal BIOS, sowie für das System BIOS genutzt. Der Power On Self Test zählt unabhängig davon trotzdem nach wie vor nur den gesamten konventionellen Speicher von 640 KiB hoch. Der zusätzlich konfigurierte hohe, sowie obere Speicherbereich – sprich die gesamten 832 KiB – sieht das BIOS anscheinend gar nicht.

Aufschlüsselung, welche Programme im konventionellen, sowie oberen Speicherbereich liegen.

Links:

Lagacy Workarounds für Dateisysteme unter macOS

Software entwickelt sich mit der Zeit weiter und oft werden auch Komponenten, Funktionen oder auch alte Kompatibilitäten entfernt. So unterstützt Apples Festplattendienstprogramm (englisch: Disk Utility) seit einigen Jahren nicht mehr das im Jahr 1980 eingeführte Dateisystem FAT12, sowie das 1984 eingeführte Dateisystem FAT16. Für mich als Retro-Computer-User, der mit Wechseldatenträger wie 3,5″ Disketten und USB-Sticks über entsprechende Seriel-Controller unter (MS-) DOS Systemen hantiert sehr ärgerlich. Obwohl das grafische Festplattendienstprogramm und auch das entsprechende Kommandozeilenprogramm diskutil einem suggeriert, dass es mit der Option FAT (MS-DOS), beziehungsweise mit dem Parameter MS-DOS FAT16 ein Medium zu formatieren, ist es am Ende doch das modernere FAT32. Ganz zu schweigen von FAT12 für Disketten. Einziger Wermutstropfen ist, dass im derzeitig aktuellen macOS immer noch das alte Kommandozeilenprogramm newfs_msdos enthalten ist. Und so müssen der Formatierungsprozess auf zwei Programmbefehle inzwischen aufgeteilt werden.

Als Beispiel sei ein USB-Stick genommen, auf dem die FAT16 Partition erstellt werden soll. Mit dem Befehl diskutil list wurde herausgefunden, dass es sich um das physische Geräte /dev/disk2 handelt. Zuvor wurde mit diskutil list die physische Datenträgernummer ermittelt.

sommteck@MacBook-Pro ~ % diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         500.0 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +500.0 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD - Data     154.9 GB   disk1s1
   2:                APFS Volume Macintosh HD            11.2 GB    disk1s2
   3:              APFS Snapshot com.apple.os.update-... 11.2 GB    disk1s2s1
   4:                APFS Volume Preboot                 2.4 GB     disk1s3
   5:                APFS Volume Recovery                1.3 GB     disk1s4
   6:                APFS Volume VM                      1.1 GB     disk1s5

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *4.1 GB     disk2
   1:                 DOS_FAT_32 USB-DRIVE               4.1 GB     disk2s1

Mit diskutil muss trotzdem erst einmal Partitionsschema erstellt werden.:

sommteck@MacBook-Pro ~ % diskutil partitionDisk /dev/disk2 1 MBR MS-DOS FAT16-USB 1G

Mit newfs_mnsdos wird dann die Partition formatiert.:

sommteck@MacBook-Pro ~ % sudo newfs_msdos -F 16 -v "FAT16-USB" -c 32 /dev/disk2s1

Am Ende ist bei einer Cluster-Größe von 32 Sektoren eine etwa 1 Gigabyte große FAT16 entstanden. Der Parameter für die Cluster-Größe ist prinzipiell optional, aber muss ein realistischer Wert angegeben werden, wie physische Speicherkapazität des Mediums größer als die maximal unterstützte Größe des zu verwendeten Dateisystems ist. Mit dem Befehl diskutil /dev/disk2s1 info lässt sich das Ergebnis noch überprüfen.


Ein anderes Problem, welches ich mit einem USB-Stick neulich hatte, war, dass das darauf enthaltene Dateisystem FAT32 scheinbar korrupt war und macOS sich weigerte das Medium einzubinden. Der Trick ist, den Mount-Prozess unter macOS manuell durchzuführen. Im Verzeichnis /Volumes werden in macOS alle interne Datenträger, sowie die Wechseldatenträger eingebunden. Der problematische USB-Stick bekam also erst sein eigenes Unterverzeichnis und mit dem alten Unix-Programm mount_msdos wurde es händisch eingebunden. – Auch wurde zuvor mit diskutil list die physische Datenträgernummer ermittelt.

sommteck@MacBook-Pro ~ % mkdir /Volumes/Testvolume
sommteck@MacBook-Pro ~ % sudo mount_msdos /dev/disk2s1 /Volumes/Testvolume

Danach konnten die Dateien von dem inkonsistenten USB-Stick herunter kopiert und anschließend das Medium erst einmal neu formatiert werden.


Links:

8-Bit USB2ISA Adapter für Retro-PCs

Clint Basinger hat in seinem zweiten YouTube-Kanal „LGR Blerbs“ vor gut zwei Jahren den USB2ISA Adapter vorstellt gehabt. Dieser Adapter ist eine 8-Bit ISA Erweiterungskarte, die es erlaubt USB Flash-Laufwerke – also im Wesentlichen die klassischen USB-Sticks – in alte DOS PCs mit ISA-Bus zu betreiben. Das zentrale Herzstück dieser Erweiterungskarte ist der von ‚Win Chip Head‘ (kurz: WHC) entwickelte Seriell-Controller CH375B. Das ursprüngliche Board-Design geht vermutlich nach dem Erstellungsdatum der Treibdateien bis in das Jahr 2005 zurück und ist eine reine chinesische Entwicklung für die produzierende Industrie in diesem asiatischen Raum. Man muss sich wohl vergegenwärtigen, dass vor fast zwanzig Jahren noch viel mehr Industrie-Anlagen von bereits alten DOS gesteuerten Computern betrieben wurden. Also wurde eine praktikablere Art nötig, Dateien für Produktion sowie Wartung der eingesetzten Software zu transferieren, als die bereits vorhandenen Diskettenlaufwerken mit ihren hinsichtlich der Speicherkapazität sehr beschränkten, magnetischen Speichermedien boten. – Lange bevor es die sogenannten Floppy-Emulatoren in Hardware zum Einbauen an den existierenden Floppy-Controllern der Computer gab, welche auch die zunehmend wegsterbenden Originallaufwerke und Medien ersetzten. – Da diese ISA-Adapterkarte eine vielleicht sehr schnelle Lösung für die eigene chinesische, Produkt-fertigende Industrie war, sorgt dieses Produkt, welches auch seit einiger Zeit nun in der Retro Computer Community angekommen ist, anfangs doch etwas zu Kopfzerbrechen.

USB2ISA Card + driver CD

Grundsätzlich funktioniert diese Karte nur unter DOS-basierten Betriebssystemen, da es nur einen Treiber für DOS gibt. Also zum Beispiel FreeDOS, MS-DOS und den auf DOS aufbauenden Windows 95 und Windows 98. Es lassen sich nur Datenträger mit einfachen Flash-Speicher an dem USB-Port betreiben. Keine Eingabegeräte wie Maus oder Tastatur, Kameras, Audio-Gerät, aber auch keine externen Datenträger wie externe Festplatten, USB-Diskettenlaufwerke, weil nicht genügend Strom zur Verfügung gestellt werden kann oder Mehrfachkartenleser, weil diese mehrere Laufwerke zur Verfügung stellen. Aber nicht jeder USB-Stick funktioniert mit der Karte.
Möchte man die Karte für den Einbau in einem PC nun konfigurieren, so stehen hardwareseitig Jumper für I/O-Speicheradresse zur Verfügung. … Aber am Besten ist es man verändert an diesen nichts! Über alle Versionen der Platinen in den letzten zwanzig Jahren ist die Beschriftung jetzt falsch aufgedruckt und man hielt es nicht für nötig dies zu korrigieren. Ich hatte bisher mit der Voreinstellung keine Probleme gehabt.
Ist die Adapter-Karte eingebaut, muss lediglich die Datei ch375dos.sys auf das zu Boot-Laufwerk kopiert werden, sowie ein Eintrag in der bereits vorhandenen config.sys mit dem Verweis zu Treiber SYS-Datei hinzugefügt werden. Dabei soll man laut Dokumentation den Interrupt definieren. Schaut man sich die Pads an der ISA-Kontentorleiste aber genauer an, so wird man feststellen, dass keiner der für einen Interrupt vorgesehenen Pads mit den auf der Karte verbauten Bauteilen verbunden ist. Diese Karte in ihrer Form benötigt schlicht keinen Interrupt, sodass die Option in der CONFIG.SYS weggelassen werden kann.
Ein Wert, der in der Treiberkonfiguration in der CONFIG.SYS aber durchaus von Bedeutung ist, ist der für die Input-/Output-Geschwindigkeit. Er kann im Bereich von 0 bis 255 definiert werden und ist eine Art Geschwindigkeitsbegrenzer für sehr alte, langsame Systeme. Gibt es keine Probleme mit der Karte, so kann man diesen Wert bei 0 lassen, was für die volle Übertragungsgeschwindigkeit steht. Je höher der Wert, desto langsamer wird die Datenrate. Bei diesem USB2ISA-Adapter darf man sowieso keinen hohen Durchsatz erwarten. Dies bedingt durch die 8-Bit breite Busanbindung. Bei meinem NuXT mit den fast mit 10 Megahertz getakteten NEC V20 Prozessor sowie dem onboard-verbauten XT-IDE Controller gab es keine Probleme.
Das Stichwort Treiber ist bei dem Hardware-Produkt auch noch einmal ein Thema für sich. Mit dem USB2ISA Adapter wird noch eine kleine, gebrannte CD mitgeliefert, deren Dateninhalt aber nicht speziell auf diese Adapterkarte redaktionell zusammengestellt wurde. Stattdessen hat man das Gefühl, dass jemand alles, was er aus den letzten zwanzig Jahren zu dem CH375B Chip von ‚WHC‘ im Internet gefunden hat, vollständig auf die CD gebrannt. Dokumentation und Treiber sind lediglich in chinesischer und englischer Sprache getrennt sortiert. In der Dokumentation ist aber zu erkennen, dass der Seriell-Controller-Chip CH375 auch auf Erweiterungskarten anderer PC-Busse implementiert wurde. Dies ist wahrscheinlich auch der Grund, weshalb die Dokumentation bezüglich der Treiberkonfiguration für die Adapterkarte so irreführend ist. Im Unterordner speziell für diese USB2ISA Adapterkarte befinden sich aber gleich drei unterschiedliche Versionen der Treiberdatei ch375dos.sys. Die älteste ist mit 2,9 Kilobyte die kleinste und zeigt die Version 2.08 an. Diese Version funktioniert prinzipiell, kann aber nur mit Flash-Laufwerken von maximal 512 Megabyte umgehen. Die 5,0 Kilobyte große Treiberdatei zeigt die Version 2.0A an, funktioniert aber überhaupt nicht. Sie ist daher völlig nutzlos. Am besten fährt man also mit der 4,2 Kilobyte großen Treiberdatei, welche die Version 1.9 anzeigt.
Die Installation der ISA-Adapterkarte ist also schlussendlich recht einfach. Nachdem die Karte selber im PC in einen freien ISA-Slot eingebaut ist, wird die 4,2 Kilobyte große ch375dos.sys an einem passenden Ort auf dem Systemlaufwerk kopiert. Ich habe für sie ein entsprechendes Treiber-Unterverzeichnis erstellt. Danach wird in der CONFIG.SYS folgender Eintrag hinzugefügt.:

…
DEVICE=C:\DRIVER\USB2ISA\CH375DOS.SYS @260 %0

Mit den Optionen @260 wird die I/O Speicheradresse definiert und %0 die maximale Geshwchwindigkeit ohne Beschränkung.

Das Tolle an dem USB2ISA-Adapter ist aber, dass er im gebooteten DOS, sowie mit einem Windows-Aufsatz Hotplug-fähig ist. Man kann also entweder vor Systemstart, wie auch hinterher einen USB-Stick hineinstecken oder wechseln, ohne dass das System einfriert oder abstürzt. Einzig während der Norton Commander von Symmantec gestartet ist, friert dieser ein, sobald eine Änderung am USB-Port geschieht.
Bei Windows 98 erscheint die dann die Meldung, dass der Treiber die Leistung das System bremsen kann. Ich selber habe diese Karte nicht unter Windows 98 installiert und eingerichtet, hatte aber auch diese Warnmeldung unter Windows 95, als ich den Treiber nachträglich installierte, weil ich das Windows selber nur mit der dazugehörigen Startdiskette direkt von CD-ROM installiert hatte. Die bessere Verfahrensweise ist, erst MS-DOS zu installieren, anschließend CD-ROM Treiber und Treiber der USB2ISA Adapterkarte, und zum Schluss Windows 95.
Die USB2ISA Adapterkarte bietet zusätzlich auch die Option für ein Boot-ROM, wie es auch bei vielen älteren Netzwerkkarten möglich ist. Ich denke aber, dass davon abzuraten ist, da ein von IDE oder XT-IDE gestartetes System deutlich schneller ist. Außerdem entfällt dann die Hotplug-Fähigkeit.

Bestellt man sich eine USB2ISA-Karte, so wird die Karte immer ohne einem Slot-Braket zur sicheren Montage in das PC-Gehäuse geliefert. Aber hier hat die 3D-Druck-Community bereits reagiert und ein entsprechendes 3D-Modell für den eigenen Druck zur Verfügung gestellt. Auf dem Foto ist erst einmal ein 3D-gedrucktes in blauer Farbe – auch zur besseren Veranschaulichung – zu sehen, um aber der schwarzen Optik des PC-Gehäuses gerecht zu werden, werde ich ein Erneutes aus schwarzem Filament drucken.

Für ausführlichere Informationen kann ich dazu das Video „USB to ISA Card Surrounded by Issues But Still Works Well“ von Shelby seinem YouTube-Kanal Tech Tangents empfehlen.

Links:

Norton Editor von 5,25″ Diskette

Ein Arbeitskollege hatte beim Aufräumen zu Hause noch den Norton Editor von Symantec in der Version 2.0 für den PC aus dem Jahr 1990 gefunden. Sicherlich hatte er ihn auch in dieser Zeit Anfang der 1990er Jahre gekauft. Da er die nun inzwischen historische Software in der Boxed-Version nicht mehr benötigt, hat er sie unserem kleinen IT-Service Computer-Museum auf der Arbeit überlassen.
Von der 3,5″ Diskette hatten wir noch ein Image gemacht, daher konnten wir sagen, dass sie noch funktionierte. Die 5,25″ Diskette stattdessen benötigte er nie, da er nie selber ein entsprechendes Laufwerk besaß. Ich meine mich aber zu erinnern, dass er sagte, dass es ihn dennoch interessieren würde, ob sie noch funktioniert. Deswegen habe ich sie auf meinen NuXT PC mal ausgelesen und so selber den Norton Editor von Symantec ein wenig ausprobiert.

Direktlink

Links:

    Unboxing New old Stock 360 KB 5,25″ Diskettenbox

    Für ein kleines Vorhaben im Bereich Vintage Computing bin ich meiner Einschätzung nach auf physische 5,25″ ‚Double Density‘ (DD), beidseitig beschreibbare Disketten mit 360 Kilobyte Speicherkapazität angewiesen. Also musste ich mir bei eBay Angebotene besorgen. Zum Glück habe ich noch eine original eingeschweißte Box mit zehn Stück erstehen können. Darum habe ich mir gedacht, ich mache mal ein kleines Unboxing-Filmchen. Im Resultat ist im Bild ein deutliches Rauschen wahrzunehmen. Der Grund ist schlicht, dass einerseits die Beleuchtung bei mir recht dürftig ist, und zum Anderen ich das Bildmaterial mit meinem über fünf Jahren alten iPhone 8 aufgenommen habe, welches eben für ein Smartphone dieses Alters nur einen kleinen Bildsensor besitzt. – Es ist eben nur ein kleines Experiment.

    Direktlink