Software

Vorwort: (Dezember 2024)

2014 hatte ich angefangen die Version x.5 in die moderne Welt zu überführen, so als kleinster gemeinsamer Nenner. Im Laufe der Jahre sind dann etliche Verbesserungen, Tools und Erweiterungen hinzu gekommen z.B. CF-Carte, Intel-Hex Ladeprogramm, Multi-IO-Karte etc. In 2023 kam noch ein kompletter Moppel mit der Monitor Version x.6 aus dem jahre 86/87 hinzu, auch hier wurden die alten Quellen entsprechend aufbereitet und mit dem IDE-Interface ausgestattet. Damit das noch ein wenig unübersichtlich wird, hat jeder unterschiedliche Hardware Ausstattung:

  • Moppel 1 CP/M Rechner, NSC800, CF/IDE-Interface, Multi-IO Karte, 87erV24, Softwarestand x.5n
  • Moppel 2 CPU, 32kRAM, 87erV24, Philips Mini DCR
  • Moppel 3 als CP/M Version (abgegeben)
  • Moppel 4 nur CPU mit HEX-Anzeige und Hexlader, Softwarestand x.5
  • Moppel 5 tragbare CP/M Rechner, IDE-Interface, Multi-IO-Karte, Softwarestand x.5n
  • Moppel 6 CP/M Rechner, NSC800, IDE-Interface mit Softwarestand x.62 (abgegeben)
  • Moppel 7 als CP/M System noch im Aufbau

Es ist also an der Zeit kräftig aufzurämen, denn die vielen unterschiedlichen Versionen und Erweiterungen bedürfen einen zu GROSSEN Wartungsaufwand.

Ziel der ganzen Übung, eine modulare Software-Version die einfach an die eingesetzte Hardware angepasst (Tabelle) werden kann. Zum anderem gibt es immer noch Macken aus 85, z.B. Floppy-Routinen die unter CP/M erst bei intensiver Nutzung auffallen oder in der 6er Version die übertriebene Menüführung mit den ganzen Unterpunkten. Auch fehlt unter CP/M eine standadisierte Behandlung der ESC-Sequenzen.

ToDos:

Hardware:

  • CPU-Karte mit NSC800 – OK ggf. IO-Adressen besser codieren
  • RAM Einsatz von 2 x 32k-Karten – OK
  • Banking auf 8000h erweitern damit das BIOS auch auf 4000-7FFF zugreifen kann – noch zu erledigen
  • Video-Karte Hardwareanpassung „Invers“ und 2. Zeichensatz ASCII – noch zu erledigen
  • Tastatur wahlweise original 87er, paralell über Multi-Io oder über SID/SOD dann kein NSC800 Betrieb möglich – OK
  • 87erV24-Karte DSR abschalten, fest auf +12V, Protokoll auf RTS/CTS – OK
  • 87er Uhrenkarte – OK
  • Multi-IO Karte (dann entfällt die 87er Uhrenkarte) – OK
  • Floppy Interface WD1770 gegen WD1772 tauschen – OK
  • IDE-Karte – OK

Software:

Zu allen Hardwaremodulen ist die Software ausgiebig erprobt und OK, was bleibt:

  • Softwareteile in Module mit festen Schnittstellen und deren Beschreibung aufgliedern
  • Monitoreingaben vom Bildschirmspeicher entkoppeln, damit ein Consolenbetrieb möglich wird
  • Monitor auf 8kByte begrenzen (EPROM #0,#1)
  • Speicherbereich 2000h als RAM für nachladbare Software/Treiber
  • Bildschirm (CO) Ausgabe mit Standard ESC-Sequenzen erweitern – in Arbeit
  • BIOS-Routinen, soweit sinnvoll, auf Monitor-Routinen lenken – BIOS ab F000h, Ziel TPA vergrößern

CO mit ESC-Sequenzen (24.01.2025)

Der Moppel hat für ein TEX Schreibprogramm einige ESC-Sequenzen, diese waren schön der Reihe nach von P bis Y.

Bei den „modernen“ Terminals wie ANSI, VT100, TVI950, etc. sieht das nicht so wohlgeordnet aus, somit ist eine mathematische Auswahl schwierig, mit einer Tabelle können beliebige ESC-Sequenzen einfacher dargestellt werden – so auch mein Ansatz. So kann ich ein Teil der TVI950 bedienen, der volle Befehlssatz ist mit der gegebenen Video-Karte z.B. blinken, halbe Helligkeit oder unterstreichen, nicht möglich.

Hier schon mal das Ablaufdiagramm:


CP/M BIOS (30.04.2026)

Es gibt immer noch was zu verbessern, die bisherigen Versionen können zwar mit dem IDE-Interface auf Festplatte/CF-Karte zugreifen aber die Floppyformate sind doch stark eingeschränkt. Hier funktioniert nur das 40/80Track SS und das IT3030 70Tr/DS, für den einfachen Datenaustausch könnten da ein paar mehr sein. Seit dem Zugang von Nr.6 von Manfred Meister gibt es auch ein reines Z80 BIOS von Ingolf Kühn mit vielen Funktionen und eine richtige Terminal Emulation TVI9xx um TurboPascal, Wordstart einfach anzupassen, das Ganze als ladbare Datei COM-Datei.

Dieses IK-BIOS lag mir leider nur als BIN-Datei vor, mit Disassembler und den netten „Kollegen“ aus dem VzEkC e.V. die über das Know-how der KI verfügen, war es schnell analysiert. Lediglich die Datenfelder für DPH, DPB sowie die Zieltabellen der IO-Geräte müssen noch eingepflegt werden…

Stand 05.05.2026

… mit dem lediglich war nicht so ernst gemeint, denn in der Symboltabelle fehlten noch die internen Verknüpfungen mit Speichervariablen und Monitor Routinen. Das hätte man sicherlich auch der KI überlassen können aber mit dem „Muskelmacro“ erhalte ich schon mal einen guten Überblick über das BIOS und verstehe die Zusammenhänge besser. Denn wenn es erstmal läuft wie das Original kann ich die Routinen der IDE-Schnittstelle (CF-Karte als LW A) und meine „Gerätetreiber“ (V24) einfügen – wird aber noch etwas dauern…

Stand 07.05.2026

… nun ist auch die Geraetetabelle vollständig eingepflegt. Nächste Punkt sind die DPH/DPB, diese werden aus den Systemspuren zugeladen und können dynamisch angepasst werde. Da muss ich mir erstmal einen Überblick verschaffen…

Stand 17.05.2026

… DPH/DPB sind vollständig eingepflegt.

Es gibt da noch ein paar Ungereimtheiten, Bufferüberschneidungen fürs Blocking/Deblocking bei FC00h sowie der Parametre für die RAM-Disk (CSV im original auf 0000h).

Nächster Aufgabe ist die Erstellung der Systemdiskette…

Stand 05.06.2026

… der grundsätzliche Quellcode (Stand 17.05.2026) sieht auf den ersten Blick schon recht vielversprechend aus. In Wirklichkeit funktioniert er nicht!

Bootdiskette mit dem „neuen“ BIOS gepatcht, bis zur ersten Systemmeldung sieht es schön aus nur leider keine weiteren Aktionen. Da in diesem Zustand keine Analyse möglich war, den Logic-Analyzer zur Hilfe genommen damit ich sehen konnte wo das BIOS so rumtrödelt. Wie es aussah wollte der CCP auf die Console zugreifen und fand den Treiber nicht. Hier muss ich einflechten das die IO-Geräte ja bei CP/M 2 über den „Vielfachschalter“ sprich IO-Byte gesteuert werden. Hier gab es noch ein Problem mit dem richtigen Einsprung für die IO-Tabellenauswertung. Bereingt in Version 05.06 …

Fehlerbild bleibt, Systemmeldung wird angezeigt aber der Durchstart bis zum Promp hängt !

 

Nächster Punkt:

Für die IO-Geräte bzw. Bildschirmzugriffe muss immer zurück auf Bank 0 geschaltet werden, hierzu gibt es eine zentrale Routine die das bewerkstelligen soll. – In den alten BIOS-Versionen von HMS wurde das für jedes IO-Gerät separat gecodet, schlaue Idee vom Verfasser.

 

 

 

Hier liefert der Logicanalyzer wieder wertvolle Hilfe um die Endlosschleifen zu finden.

Dieses ASM-Segment muss nun über DUMP vom originalem IK-BIOS und meinem Quellcode näher beleuchtet werden, ich vermute eine Fehler in den beiden Stackbereichen für Bank 0 und 1 bzw. in deren Zuordnungen…

Bin gespannt woran es hier liegt – so wird es wohl noch einige Monde dauern bis mein Nachbau wirklich funktioniert…

 

 

Stand 06.06.2026

Fehler gefunden !

Für die Consolen gibt es zwei Eintrittspunkte, einmal werden die Funktionen aus dem HMS-Monitoe (Vx.6), mit Umschaltung auf das EPROM in Bank 0, genutzt. Zum zweiten kommen die Funktionen mit der Terminalemulation (TVI/ADA3), die sich im BIOS befinden zum Zuge. Durch meine falsche Zuordnung kam einiges durcheinander.

Wie man im Startbildschirm sehen kann, bootet das System nun einwandfrei bis zum Prompt durch!!!

Erster Test mit kopieren von Dateien und deren Aufruf funktioniert schon mal  :-]]]

 

Nun müssen alle Funktionen umfangreich getestet werden …

Anmerkung: der TFT-Bildschirm verschluckt die letzte Zeile, hier ist noch Blindflug angesagt. Er scaliert die Signale vom FBAS-Eingang nicht korrekt – einer der nächsten Baustellen.

 

Stand 10.06.2026

Nun ist auch der dazu gehörige BOOT-Loader frisch aufbereitet. Er hat die Mittlerrolle zwischen dem Monitor Vx.6 und dem IK-BIOS, auf Monitorbasis 16Sektoren a 256 Byte bei 40/80 Track SS/DD und dem BIOS mit 5Sektoren a 1024 Byte bei 80 Track DS/DD. So war ein „Update“ auf das IK-BIOS möglich ohne die FDC-Software anzupassen. So oder ähnlich machten es damals ja viele System um kompatibel zum Vorgänger zu bleiben.

Hinzu kommen noch die Funktionen für den erweiterten Zeichensatz ASCII/Pseudo Grafik, ladbare Funktions-Code etc.

Hierzu die Übersicht der Systemdiskette:

Im FDC-Monitor gab es schon immer eine Batch Funktion, damit konnte man bis zu 32 automatisch ladbare Daten bzw. Programme starten. Dieser Parametersatz (8Bytes) auf Track 0 Sektor 1 abgelegt.

Der 1. Eintrag ist für den BOOT-Loader eingestellt der ab Adresse 2820h startet, es wird nur ein Sektor ab Sektor 1 auf Track 0 ins RAM ab 2800h geladen.

Der 2. Eintrag erschließt sich mir nicht, startet aber die Monitor FDC-Routinen, im regeneriertem Listing tauchten auch noch Parametersätze für d2 und d3 drei auf, Diese habe ich auf o gesetzt, sowie die „Schmierzeichen“ hinter dem BOOT-Loader.

Ich vermute das dies Reste diverser Kopierversuchen aus alten Tagen sind, ist halt das Dilemma ohne original Quellen…

Im BIOS noch ein wenig Kosmetik betrieben und die Schreib-/Leseroutinen für die RAM-DISK gefunden. Anno 86 brachte die c’t einen Artikel zur  1MB Karte von der Firma Kayser heraus und wurde wohl hier erfolgreich eingesetzt. Das ist wohl der Punkt wo die IDE-Routinen für 8MB CF/Festplatten eingreifen könnten, hierzu muss ich aber noch rund 600Byte Freiraum finden. Vielleicht unter Begrenzung der Laufwerke, ich denke zwei Floppys plus eine „Hard-Disk“ mit 8MB reichen völlig aus und spart eine menge Buffer.

Die ersten Tests mit kopieren zwischen den beiden Laufwerken gehen ratz fatz, deutlich schneller als mit den originalem HMS-BIOS – gefühlt fast wie der Prof180x. Auch das „mitgelieferte“ Formatierprogramm  (von Bernd Noichl, Nicolaus Seibel und Ingolf Kühn) läst wohl kaum Wünsche offen. Dazu gibt es noch ein Editierprogramm für Diskettenparameter um auch exotische Formate abbilden zu können.

Einfach Klasse was die Autoren damals auf die Beine/Bytes gestellt haben – im Nachgang betrachtet habe ich meinen Moppel wegen dem Prof180x viel zu früh in Rente geschickt…

Nun sind erstmal eingehende Tests mit all seinen Möglichkeiten angesagt bevor ich das BIOS mit meinen Routinen ergänze – schauen wir mal dann sehen wir schon 😉

 

 

 

 

Bild: Hier wartet schon das IDE-Interface für den Moppel Nr.7, darüber ist der CP/M Moppel für die Generierung der Systemdisketten und unter dem Schreibtisch schlummert der Prof 180x.

Stand 14.06.2026

Derzeit gab es bei den ganzen Versuchen nur einen Fehler, betrifft die BDOS Error Behandlung. Hier sollte der Fehlerort (LW, Side, Track, Sektor) ausgegeben werden. Durch die vereinfachten Meldetexte ohne ESC-Sequenzen ist bei meiner Umsetzung der Bezug zu den Adressen verloren gegangen. Aber auch in der „originalen BootDisk“ wird die Track-Nr. nicht vollständig angezeigt“.  Ist aber nur ein kleiner Schönheitsfehler.

Zeigt aber das noch nicht alle Verweise per Label deklariert sind, spätestens bei der Ergänzung mit den IDE-Routinen fliegt einem sowas um die Ohren…

Stand 17.06.2026

… BIOS, der Schönheitsfehler von oben ist erledigt, alle noch vorhandenen fixen Adressbezüge auf Label umgerüstet und aufgeräumt.

Damit ist die Rekonstruktion erstmal abgeschlossen und die Funktionalität der original Version erreicht.

Resümee: 

Anfangs hätte ich nicht gedacht das die Analyse der BIN-Datei wirklich eine brauchbare Quelldatei hervorbringt. Dank der Helfer und mit etwas „KI“ ging es doch recht flott von der Hand. Nun kann ich die weitere „Entwicklung“ vorantreiben:

  • IDE Interface
  • V24 „Treiber“ verbessern (bis zu 19200Bd, Zeitüberwachung, per Interuppt empfangen) alles aus meinem CP/M-Moppel
  • Grundsätzlich über die Struktur der Zeichengeräte RDR, PUN, LST mit verbesserter Umschaltung über das IO-Byte
  • sowie die Floppy/IDE Treiber ins Monitor zu legen
  • BIOS einkürzen und auf Startadresse F000h bringen, größere TPA

Ob das alles Sinn macht sei dahingestellt, es macht aber eine menge Spaß sich mit diesen Dingen zu beschäftigen…

21.06.2026

… noch einen Fehler in den ESC-Routinen gefunden:

; 16.06.2026 22:00 Rekonstruierung abgeschlossen
; 20.06.2026 18:00 Fehler in Routine ESC3
; – falsche Adresszuordnung 2fb2 DSPBuffer
; – richtig 2fb0h OK
; hierdurch falsche Cursorsteuerung in Mformat
;

Schauen wir mal was Fritz noch so alles findet…

IK-BIOSV4.0 als ZIP Stand 20.06.2026:

IK-BIOS-40


Beschreibungen:

IK-bios_3x

BIOS-1

BIOS-2

Disk-Management


Quellen:

Moppel-IO-Adressen

Moppel-ASM-Dateien-Vx6

HMS-BIOS

Moppel-ASM-Dateien-Vx.5