{"id":17920,"date":"2025-02-06T12:05:44","date_gmt":"2025-02-06T11:05:44","guid":{"rendered":"https:\/\/www.bernd-leitenberger.de\/blog\/?p=17920"},"modified":"2025-02-06T12:45:11","modified_gmt":"2025-02-06T11:45:11","slug":"die-technik-hinter-cpm","status":"publish","type":"post","link":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/02\/06\/die-technik-hinter-cpm\/","title":{"rendered":"Die Technik hinter CP\/M"},"content":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_17920\" class=\"pvc_stats all  \" data-element-id=\"17920\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.bernd-leitenberger.de\/blog\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p>So, weiter geht es mit einer Serie von Artikeln zu historischen Computerthemen. Nachdem ihr schon etwas &uuml;ber die Geschichte von CP\/M erfahren habt, habe ich die letzte Woche an einem ziemlich langen Artikel &uuml;ber die Technik von CP\/M gearbeitet, den es auch <a href=\"https:\/\/www.bernd-leitenberger.de\/cpm-technik.shtml\">komplett auf der Website gibt.<\/a> Die weiteren Teile findet ihr hier in den n&auml;chsten Tagen. Also <a href=\"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/02\/07\/die-technik-von-cpm-2\/\">morgen den zweiten Teil<\/a>.<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vg01.met.vgwort.de\/na\/8bfaf333375144aea6698219c17e0d09\" alt=\"\" width=\"1\" height=\"1\" \/><\/p>\n<p>Hier alle Teile die in den n&auml;chsten Tagen erscheinen:<\/p>\n<p><a href=\"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/02\/06\/die-technik-hinter-cpm\/\">Teil 1 behandelt den Aufbau des Speichers und des Dateisystems<\/a><\/p>\n<p><a href=\"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/02\/07\/die-technik-von-cpm-2\/\">Teil 2 behandelt den Aufbau einer Diskette und des Rechners, Bildschirm und Tastatur<\/a><\/p>\n<p><a href=\"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/02\/08\/die-technik-hinter-cpm-3\/\">Teil 3 behandelt die BDOS-Funktionen, den Kommandointerpreeter, User Befehl und die Ger&auml;te.<\/a><\/p>\n<p><a href=\"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/02\/09\/die-technik-hinter-cpm-4\/\">Teil 4:\u00a0 &Uuml;ber CP\/M 3, andere Versionen und warum es heute noch neue CP\/M Rechner gibt.<\/a><\/p>\n<p><!--more--><\/p>\n<p>CP\/M \u2013 Control Program for Microcomputers \u2013 besteht aus drei Teilen, man k&ouml;nnte auch sagen drei Schichten. W&auml;hrend dies heute normal ist (Internetdatenverkehr besteht zum Beispiel aus bis zu sieben Schichten), war dies damals eine revolution&auml;re Neuerung. Vorher waren Betriebssysteme mehr oder weniger monolithisch. Die drei Schichten bauen aufeinander auf und sind:<\/p>\n<ul>\n<li>CCP: Console Command Processor: die Eingabeschnittstelle mit der der Benutzer Befehle eintippen kann.<\/li>\n<li>BDOS: Das BASIC Disk Operation System enth&auml;lt eine Sammlung von 41 Routinen, mit denen man Dateien verwalten kann, aber auch Dinge auf dem Bildschirm oder Drucker ausgeben kann und Zeichen von der Tastatur einlesen kann.<\/li>\n<li>BIOS: Das BASIC Input \/ Outputsystem k&uuml;mmert sich vor allem um den physikalischen Zugriff auf Diskettenlaufwerken.<\/li>\n<\/ul>\n<h2 class=\"western\">Speicheraufbau<\/h2>\n<p>Beim Start werden die drei Teile an das Ende des Speichers geladen. Das \u201eEnde\u201c muss nicht der Maximalspeicherausbau sein. Zum einen l&auml;uft CP\/M auch mit weniger Speicher \u2013 die letzte Version von CP\/M, 2.2 die ohne Bankswitching arbeitete, mit minimal 20 KByte \u2013 zum anderen k&ouml;nnen sich oben noch Speicherbereiche befinden, die zur Hardware geh&ouml;ren, bei den Amstrad PC belegte z.B. der Bildschirmspeicher die letzten 16 KByte, darunter kamen Betriebssystemdaten (die des ROM-Betriebssystems), sodass nur etwa 44 KByte &uuml;brig blieben. Die Reihenfolge ist aber fix: ganz oben ist das BIOS, dann folgt das BDOS und zuletzt der CCP. Diese Reihenfolge ist so gew&auml;hlt, weil ein Programm, nachdem es geladen wurde den CCP &uuml;berschreiben kann. Er wird bei einem R&uuml;cksprung ins BDOS automatisch neu von der Diskette geladen.<\/p>\n<p>CP\/M lieferte das Programm Movcpm mit. Dieses konnte den Start von CP\/M in Vielfachen einer Page (256 Bytes) verschieben, wenn man zum Beispiel einen Speicherbereich f&uuml;r ein Programm brauchte, der persistent war, also auch nach Programmende die Daten behielt. Das waren meist Treiber f&uuml;r zus&auml;tzlich erworbene Hardware.<\/p>\n<p>Ganz am Anfang des Speichers findet man zum einen die Restarts: Das sind beim 8080\/<a href=\"https:\/\/www.bernd-leitenberger.de\/z80.shtml\">Z80 Prozessor<\/a> Routinen, die mit einem Befehl ohne Adressangabe angesprungen werden k&ouml;nnen. Sie werden f&uuml;r h&auml;ufige Softwareroutinen genutzt, z.B. um das Betriebssystem-ROM einzublenden oder f&uuml;rs Bankswitching. Einige Restarts nutzte CP\/M selbst. Danach folgten einige Verwaltungsinformationen, so z.B. ab Adresse 80H (128 dezimal, im Folgenden arbeite ich meist mit Hexadezimalziffern, weil diese meist gerade sind) die Eingabezeile aus der ein Programm die Startparameter wie &uuml;bergebene Dateien herausfischen konnte.<\/p>\n<p>Den Bereich zwischen 100H und dem Anfang des CCP bezeichnete man als TPA \u2013 Transistent Programm Area, weil wenn ein Programm beendet war dieser Bereich wieder frei war. Die Gr&ouml;&szlig;e der TPA legte fest wie viel Arbeitsspeicher Anwendungsprogramme zur Verf&uuml;gung hatten. In ihr wurden sie ausgef&uuml;hrt.<\/p>\n<p>Ein Programm f&uuml;r CP\/M wurde immer an die Adresse 100H geladen. CP\/M erkannte ein ausf&uuml;hrbares Programm an der Endung \u201e.com\u201c. Es konnte dann den ganzen Speicher bis zum Anfang des BDOS nutzen. Viele Implementierungen gaben diesen Speicher auch beim Start aus:<\/p>\n<p><span style=\"font-family: Courier New, monospace;\">MinZ_C #47 &#8211; Z8S180 @ 33.333MHz 1MB RAM (0ws) 512KB Flash &#8222;ROM&#8220; (1ws)<\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">A: RAMdisk 948 KB<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\">C: SD Card 8192 KB<\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">P: ROMdisk 496 KB<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\">CP\/M 2.2 64K (57K [+2K CCP] TPA) &#8211; BIOS V1.3 SUN JAN 1\/01 5:28:34<\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\">A&gt;<\/span><\/p>\n<p>In diesem Falle nutzt CP\/M die vollen 64 KByte, f&uuml;r Programme stehen 57 KByte zur Verf&uuml;gung bzw. wenn der CCP &uuml;berschrieben wird sind es sogar 59 KByte. Das ist viel, bedenkt man, dass der <a href=\"https:\/\/www.bernd-leitenberger.de\/8080.shtml\">Intel 8080<\/a> maximal 64 KByte adressieren kann.<\/p>\n<p>Das war einer der wichtigsten Vorteile von CP\/M. Das Betriebssystem brauchte sehr wenig Speicher. Das BIOS belegte typisch 4 KByte, das BDOS unter CP\/M 2.2 zwischen 2,8 und 3,5 KByte, das hing davon ab, welche Hardware tats&auml;chlich verbaut und unterst&uuml;tzt werden musste. Fehlte z.B. eine serielle Schnittstelle so fielen Routinen weg. Der CCP war immer 2 KByte gro&szlig;. Dazu kamen dann noch hardwarespezifische Dinge. Die meisten Systeme hatten den Bildschirmspeicher im Adressraum, der weitere 2 bis 4 KByte belegte. Real konnte ein CP\/M Rechner mit reinem Textbildschirm zwischen 52 und 54 KByte von 64 KByte adressierbarem Speicher freihaben.<\/p>\n<p>Das waren &uuml;ber drei Virtel des gesamten Speichers und damals enorm viel. Neben Rechnern die CP\/M von der Diskette booteten, gab es auch Rechner mit einem BASIC Interpreter, bei denen war dieser zugleich das Betriebssystem und diese hatten viel weniger Speicher frei. Beim popul&auml;ren C-64 waren es 38 KByte, beim Amstrad CPC 42,6 KByte. Der Unterschied von 10 bis 20 KByte erscheint heute gering, machte in der Praxis aber viel aus, denn viele Anwendungen konnten Daten (Texte, Datenbanken, Spreadsheets) bearbeiten, die gr&ouml;&szlig;er als der Arbeitsspeicher waren, konnten im Speicher aber nur einen kleinen Teil unterbringen und wenn der verf&uuml;gbare Speicher voll wurde, dann wurde dieser Teil auf die Diskette ausgelagert und das dauerte. Zudem waren diese Programme so compiliert, das sie auch auf kleineren Systemen liefen also Rechnern mit weniger als 64 KByte Speicher. Nutzen mehr Arbeitsspeicher aber dann f&uuml;r die Daten.<\/p>\n<p>Als mit der Version 3.0 noch Bankswitching eingef&uuml;hrt wurde, konnten BIOS und BDOS in eine andere Bank verschoben werden und dann konnte man 61 bis 63 KByte der 64 KByte nutzen. Das waren &uuml;ber 90 Prozent des physikalisch ansprechbaren Speichers!<\/p>\n<h2 class=\"western\">Aufbau des Dateisystems<\/h2>\n<p>Die wichtigste Eigenschaft von CP\/M war die Verwaltung von Disketten. Es war der zentrale Punkt eines Betriebssystems und steckte so auch bei anderen Betriebssystemen im Namen wie PC-DOS oder QDOS. Das \u201eD\u201c steht dabei f&uuml;r \u201eDisk\u201c.<\/p>\n<p>Im Dateisystem findet man die meisten Altlasten von CP\/M. Es entstand zur Ansteuerung von 8 Zoll <a href=\"https:\/\/www.bernd-leitenberger.de\/disklaufwerk.shtml\"> Floppydisklaufwerken<\/a>, genauer gesagt dem Typ IBM 3740. Diese 8 Zoll (20,32 cm) Diskette hatte 73 Spuren, jede Spur bestand aus 26 Sektoren die jeweils 128 Bytes gro&szlig; waren. Sie fasste also genau 242.944 Bytes oder 237,25 KByte. Mit der Version 2.0 unterst&uuml;tzte CP\/M auch 5,25 und sp&auml;tere Floppylaufwerke mit andern Formfaktoren. Die gro&szlig;e &Auml;nderung war, das hier das Format nicht standardisiert war. Es gab zwei Schreibdichten, \u201eeinfache\u201c oder \u201edoppelte\u201c. Es gab zuerst Laufwerke mit 35 oder 40 Spuren, dann folgten welche mit 70 oder 80 Spuren. Dann gab es noch einen Unterschied in den Laufwerken: Ein Laufwerk konnte nur einen Schreib-\/Lesekopf haben, dann musste man, um die R&uuml;ckseite einer Diskette zu bespielen, diese manuell umdrehen oder es konnten beide Seiten simultan beschrieben werden, dann war diese eine Disk mit der doppelten Kapazit&auml;t einer Seite.<\/p>\n<p>Bis hierher liegen die Unterschiede in der Physik, also ein Laufwerk f&uuml;r 40 Spuren wird nie eine Diskette mit 80 Spuren lesen k&ouml;nnen. Dann hatte die Computerfirma aber die Freiheit zu bestimmen, wie eine Spur formatiert werden soll. Unformatiert fasste eine Spur immer 3.125 Bytes bei einfacher und 6.250 Bytes bei doppelter Schreibdichte. Es gab Sektoren mit 256 Bytes, am verbreitetsten waren 512 Bytes und einige Systeme hatten 1.024 Byte gro&szlig;e Sektoren. Die Gr&ouml;&szlig;e war abzuw&auml;gen. Zu jedem Sektor gab es auf der Disk Verwaltungsinformationen und nach jedem Sektor folgte eine unbeschriebene Zone um der Anwendung Zeit zu geben die Daten zu verarbeiten. Je mehr Sektoren man hatte, desto mehr Platz nahmen diese Bestandteile von der unformatierten Kapazit&auml;t weg. Systeme mit 256 Byte Sektoren hatten typisch 13-16 Sektoren pro Spur (3,25-4 KByte), bei 512 Byte Spuren waren es acht oder neun Sektoren (4-4,5 KByte) und bei 1 KByte gingen 5 Sektoren auf eine Spur, also 5 Kbyte\/Spur.<\/p>\n<p>Der Nachteil war das man jeweils f&uuml;r das Schreiben und Lesen eines Sektors Speicher reservieren musste, bei 1 KByte gro&szlig;en Sektoren sind das 2 KByte, die vom nutzbaren Speicher abgingen, man erkaufte sich also mehr Kapazit&auml;t auf der Diskette mit einem h&ouml;heren Arbeitsspeicherverbrauch, der meiner Erfahrung nach immer knapper war als Platz auf der Floppy. Es gab daher nur wenige Systeme die 1 KByte gro&szlig;e Sektoren nutzten. CP\/M selbst machte diese &Auml;nderung nicht mit, das BDOS als Anwendungsschnittstelle arbeitete immer mit 128 Byte Sektoren wie sie beim ersten Laufwerk &uuml;blich waren. Das BIOS musste diese dann an passender Stelle in einen der gr&ouml;&szlig;eren Sektoren umkopieren. Beim linearen Lesen machte dies wenig aus, doch wenn eine Anwendung auf die Sektoren nicht linear zugriff, musste jeweils ein gr&ouml;&szlig;erer Sektor gelesen oder geschrieben werden, auch wenn sich nur ein Teil des Inhaltes &auml;nderte.<\/p>\n<p>Auf diesen 128 Byte als logische Sektorgr&ouml;&szlig;e basierte auf der Verzeichniseintrag. In einem Feld wurde eingetragen wie viele 128 Byte Sektoren die Datei umfasste. Dabei war Schluss bei 128 Sektoren (80h). Das entsprach 16 KByte. Jede Datei die gr&ouml;&szlig;er als 16 KByte war belegte so mehrere Verzeichniseintr&auml;ge. Das war insofern ungeschickt, weil CP\/M au&szlig;er dem logischen Sektor, Record genannt, auch gr&ouml;&szlig;ere Verwaltungsinformationen auf BDOS Ebene kannte. Die wichtigste war der Block. Eine Datei belegte immer einen Block, selbst wenn sie nur 1 Byte lang war. Der Grund eine gr&ouml;&szlig;ere Einheit einzuf&uuml;hren war, dass CP\/M intern eine Tabelle hatte, in der sie vermerkte, welcher Block auf der Diskette frei war. Sonst h&auml;tte bei jeder Schreiboperation das ganze Verzeichnis durchsucht werden m&uuml;ssen um zu sehen, wo auf der Diskette noch Platz frei war. H&auml;tte diese Tabelle auf Records basiert so w&auml;re sie unverh&auml;ltnism&auml;&szlig;ig gro&szlig; geworden. Die folgende Ausgabe gibt die logischen Verzeichnisparameter eines CP\/M-Systems wieder:<\/p>\n<p><span style=\"font-family: Courier New, monospace;\">C&gt;stat dsk:<\/span><img loading=\"lazy\" decoding=\"async\" src=\"file:\/\/\/C:\/Users\/Admin\/Documents\/Websites\/bernd-leitenberger\/img\/cpm22.jpg\" alt=\"Screenshot CP\/M 2.2\" width=\"784\" height=\"539\" \/><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">A: Drive Characteristics<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">7584: 128 Byte Record Capacity<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">948: Kilobyte Drive Capacity<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">256: 32 Byte Directory Entries<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">0: Checked Directory Entries<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">512: Records\/ Extent<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\">32: Records\/ Block<\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">32: Sectors\/ Track<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">0: Reserved Tracks<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">C: Drive Characteristics<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">65536: 128 Byte Record Capacity<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">8192: Kilobyte Drive Capacity<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">768: 32 Byte Directory Entries<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">0: Checked Directory Entries<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">512: Records\/ Extent<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\">64: Records\/ Block<\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">4: Sectors\/ Track<\/span><\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\"><span class=\"auto-style2\" style=\"font-size: small;\">0: Reserved Tracks<\/span><\/span><\/p>\n<p>Relevant f&uuml;r die Tabelle ist die Zeile mit \u201eRecord Capacvity\u201c. Man sieht das (bei 128 Byte Sektoren) man bei einer typischen Diskette mit einer formatierten Kapazit&auml;t von 160 bis 800 KByte mehrere Tausend Eintr&auml;ge h&auml;tte, bei einer Festplatte (hier: 8 MByte) erreicht diese Tabelle das Maximum mit 65536 Records, mehr kann CP\/M nicht verwalten. Indem aber 32 bzw. 64 Records pro Block zusammengefasst wurden, wurde die Tabelle viel kleiner. Typische Blockgr&ouml;&szlig;en waren:<\/p>\n<table width=\"100%\" cellspacing=\"0\" cellpadding=\"2\">\n<colgroup>\n<col width=\"64*\" \/>\n<col width=\"64*\" \/>\n<col width=\"64*\" \/>\n<col width=\"64*\" \/> <\/colgroup>\n<thead>\n<tr valign=\"top\">\n<th width=\"25%\">Typ<\/th>\n<th width=\"25%\">Kapazit&auml;t unformatiert<\/th>\n<th width=\"25%\">Kapazit&auml;t formatiert<\/th>\n<th width=\"25%\">Blockgr&ouml;&szlig;e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr valign=\"top\">\n<td width=\"25%\">Diskette SD\/SS<\/td>\n<td width=\"25%\">250 KB<\/td>\n<td width=\"25%\">160 \u2013 180 KB<\/td>\n<td width=\"25%\">1 KByte<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td width=\"25%\">Diskette DD\/SS \/ SD\/DS<\/td>\n<td width=\"25%\">500 KB<\/td>\n<td width=\"25%\">320 \u2013 360 KB<\/td>\n<td width=\"25%\">2 KByte<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td width=\"25%\">Diskette DD\/DS<\/td>\n<td width=\"25%\">1000 KB<\/td>\n<td width=\"25%\">640 \u2013 800 KB<\/td>\n<td width=\"25%\">4 KByte<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td width=\"25%\">Festplatte<\/td>\n<td width=\"25%\">&gt;=10 MB<\/td>\n<td width=\"25%\">8.192 KB, aber mehrere Partitionen pro Platte<\/td>\n<td width=\"25%\">8 KByte<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Im BIOS gab es noch weitere Parameter, der physikalischen Formatierung, mit denen der Programmierer der das BDOS als Schnittstelle nutzte nichts zu tun hatte. Sie steckten in einem Definitionsblock, sodass sie austauschbar waren. Bei meinem Amstrad CPC gab es z.B. drei Diskettenformate \u2013 das IBM Format f&uuml;r den Datenaustausch, das CP\/M-Format und das Datenformat. Bei letzterem entfielen die Spuren auf denen CP\/M untergebracht war. Als ich dann noch eine Floppy eines Fremdherstellers kaufte, kannte CP\/M nach einer Anpassung auch dessen Format, obwohl dieses Laufwerk 720 anstatt maximal 180 KByte pro Diskette nutzte,<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_17920\" class=\"pvc_stats all  \" data-element-id=\"17920\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.bernd-leitenberger.de\/blog\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p>So, weiter geht es mit einer Serie von Artikeln zu historischen Computerthemen. Nachdem ihr schon etwas &uuml;ber die Geschichte von CP\/M erfahren habt, habe ich die letzte Woche an einem ziemlich langen Artikel &uuml;ber die Technik von CP\/M gearbeitet, den es auch komplett auf der Website gibt. Die weiteren Teile findet ihr hier in den [&hellip;]<\/p>\n","protected":false},"author":169,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[5268,1351,5269,4455,4601],"class_list":["post-17920","post","type-post","status-publish","format-standard","hentry","category-computer","tag-bdos","tag-bios","tag-ccp","tag-cpm","tag-gary-kildall","entry"],"a3_pvc":{"activated":true,"total_views":189,"today_views":0},"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":18458,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/10\/23\/die-agena-c-2\/","url_meta":{"origin":17920,"position":0},"title":"Die Agena C","author":"Bernd Leitenberger","date":"23. Oktober 2025","format":false,"excerpt":"Wie ihr sicher bemerkt habt, war es etwas ruhig hier im Blog. Der Grund ist ganz einfach, ich habe mich endlich entschlossen, einen Schlussstrich zu ziehen. Nein, nicht unter dem Blog. Seit f\u00fcnf Jahren will ich Band 2 des Apolloprogramms fertigstellen und habe in den letzten Jahren eigentlich immer nur\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg04.met.vgwort.de\/na\/d6474dec02b34cf385a0dfced0cffb64","width":350,"height":200},"classes":[]},{"id":18406,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/09\/23\/der-blogautor-von-der-ki-beurteilt\/","url_meta":{"origin":17920,"position":1},"title":"Der Blogautor von der KI beurteilt","author":"Bernd Leitenberger","date":"23. September 2025","format":false,"excerpt":"Ich nutze inzwischen auch eine KI. Prim\u00e4r zu Recherche, im Browser https:\/\/www.perplexity.ai die f\u00fcr Recherchen (nach Eigenauskunft) spezialisiert ist. Seit ich vor mehr als zwei Jahren die KI zum ersten Mal getestet habe, hat diese sich enorm gebessert. Sie fabuliert weniger und ist intelligenter. Damals konnte man noch die AI\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/vg01.met.vgwort.de\/na\/c334c52e97b74da9b82424a9e80c6d97","width":350,"height":200},"classes":[]},{"id":18393,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/09\/18\/die-falcon-9-eine-nachlese\/","url_meta":{"origin":17920,"position":2},"title":"Die Falcon 9 &#8211; eine Nachlese (1)","author":"Bernd Leitenberger","date":"18. September 2025","format":false,"excerpt":"Nachdem \"SimonVR\" mich darauf aufmerksam gemacht hat, dass mein Falcon 9 Artikel sowie der \u00fcber die Entwicklung der Falcon 9 doch etwas abgehangen ist, denke ich, mache ich mal einen Blog dazu. Zuerst mal, worum es hier NICHT geht: n\u00e4mlich eine Einsatzgeschichte der Falcon 9. Ebenso habe ich die wirtschaftliche\u2026","rel":"","context":"In &quot;SpaceX&quot;","block_context":{"text":"SpaceX","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/spacex\/"},"img":{"alt_text":"","src":"https:\/\/vg02.met.vgwort.de\/na\/8d7fcc876a9d4ed4b27890b8d59e8e87","width":350,"height":200},"classes":[]},{"id":18380,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/09\/03\/die-glorreichen-10-das-war-mal-weg-pc-hardware\/","url_meta":{"origin":17920,"position":3},"title":"Die glorreichen 10 &#8211; Das war mal weg: PC Hardware","author":"Bernd Leitenberger","date":"3. September 2025","format":false,"excerpt":"Ich will heute mal zwei ZDF Info \/ Neo Sendungen verbinden. Die glorreichen 10, die bei mir als Vorlage f\u00fcr einige Blogs dienten und die von mir noch mehr gesch\u00e4tzte Sendung \"Das war mal weg\", wo es um Dinge geht, die fr\u00fcher fast jeder hatte und die heute aus unserem\u2026","rel":"","context":"In &quot;Die Glorreichen 10&quot;","block_context":{"text":"Die Glorreichen 10","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/die-glorreichen-10\/"},"img":{"alt_text":"","src":"https:\/\/vg02.met.vgwort.de\/na\/876c61d389304d98aa0332fadd769381","width":350,"height":200},"classes":[]},{"id":15629,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2021\/12\/07\/der-koenig-der-coverversionen\/","url_meta":{"origin":17920,"position":4},"title":"Der K&ouml;nig der Coverversionen","author":"Bernd Leitenberger","date":"7. Dezember 2021","format":false,"excerpt":"Cover sind beliebt. Viele Interpreten, auch durchaus K\u00fcnstler mit eigenen ber\u00fchmten Songs haben ihre ersten Platten mit Covern gef\u00fcllt, so die Beatles. Andere versuchen sich auf der Spitze ihres Erfolges in Neuauflagen wie Bowie\/Jagger an Dancing in the Street und wenn es gut l\u00e4uft, ist das Cover erfolgreicher als alle\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/vg02.met.vgwort.de\/na\/3a82449d144d41f6b2a3a633a1ec60c0","width":350,"height":200},"classes":[]},{"id":18409,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/09\/25\/die-landung-des-starships-auf-dem-mars\/","url_meta":{"origin":17920,"position":5},"title":"Die Landung des Starships auf dem Mars","author":"Bernd Leitenberger","date":"25. September 2025","format":false,"excerpt":"Es wird mal Zeit, sich mit der geplanten Marslandung des Starships zu besch\u00e4ftigen. Das tut ja anscheinend keiner au\u00dfer mir, sonst w\u00e4re anderen schon etwas aufgefallen. Die Grundproblematik ist die gleiche wie f\u00fcr Raumsonden: Der Mars hat eine extrem d\u00fcnne Atmosph\u00e4re. Deren Bodendruck liegt bei \"Normalnull\" (mangels Meeren willk\u00fcrlich festgelegt\u2026","rel":"","context":"In &quot;SpaceX&quot;","block_context":{"text":"SpaceX","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/spacex\/"},"img":{"alt_text":"","src":"https:\/\/vg01.met.vgwort.de\/na\/0c873c0799fe4a22aedc6879d71e9a71","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/17920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/users\/169"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/comments?post=17920"}],"version-history":[{"count":0,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/17920\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/media?parent=17920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/categories?post=17920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/tags?post=17920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}