BDOS
# BDOS

BDOS steht für Basic Disk Operating System und bezeichnet den Systemkern der Betriebssysteme von Digital Research Inc. Er wird in allen Varianten von CP/M sowie im MS-DOS-kompatiblen Nachfolger DR DOS verwendet.

## Technik

Als beispielgebend gilt der Aufbau von CP/M in mehreren Schalen. Dieses Konzept wurde in nachfolgenden Betriebssystemen meist übernommen. Dabei steht im Kern die tatsächliche Hardware, die vom E/A-Kern direkt verwendet wird. Diese erste Schale heißt bei CP/M BIOS (englisch Basic Input Output System) bzw. bei MP/M und DOS Plus XIOS (englisch eXtended Input Output System) und musste für jeden unterstützten Computer hardwarenahe geschrieben werden. Auf das BIOS stützt sich als zweite Schale der BDOS-Kernel und stellt diverse Grundfunktionen (z. B. das Dateisystem) für das eigentliche Betriebssystem zur Verfügung. Die dritte Schale ist dann das eigentliche Betriebssystem bzw. das, was ein Anwender davon sieht. In den 1970er- und 1980er-Jahren bestand es hauptsächlich aus einem Kommandozeileninterpreter, von Digital Research CCP (englisch Console Command Processor) bezeichnet. Gary Kildall gilt als der Erfinder der Methode hardwarenahe Programmierung zu kapseln um in weiterer Folge den Aufwand für eine Portierung möglichst gering zu halten. In CP/M Version 1.3 (1975) bezeichnete er die ersten beiden Schalen, das BIOS und den BDOS-Kernel, als Floppy Disk Operating System, kurz FDOS.

So konnte z. B. CP/M, das berühmteste Betriebssystem von Digital Research, in den 1970er- und 1980er-Jahren auf einer Vielzahl unterschiedlicher Computer laufen. Angepasst wurde jeweils nur das BIOS/XIOS damit BDOS und CCP auf verschiedenen nicht zueinander kompatiblen Systemen genutzt werden konnten.

Technisch wurden mit jeder neuen Version von BDOS Teile für die Floppy-Controller-Ansteuerung jeweils aus dem BDOS-Kernel in das BIOS verschoben, um die Unterstützung für unterschiedliche Diskettenlaufwerke besser portierbar zu machen. Dies zeigte sich vor allem mit der sehr erfolgreichen Version 2 von CP/M, das von vielen OEMs für deren Controller angepasst und meist unter anderem Namen zusammen mit der Hardware verkauft wurde.

Mit der Einführung des IBM PC und dessen in der Firmware implementierten BIOS entfällt prinzipiell die Notwendigkeit eines eigens als erste Schale angepassten BIOS/XIOS. Für die Portierbarkeit auf nicht voll zum IBM PC kompatible Computer blieb jedoch auch in späteren CP/M-Betriebssystemen und deren Nachfolgern sowohl das BIOS/XIOS als auch BDOS als Kernel erhalten, beispielsweise bei DR DOS. Auch in PC DOS und MS-DOS, die viele Merkmale von CP/M übernahmen, gibt es diese Trennung.

Das letzte und modernste Betriebssystem mit BDOS-Kernel ist das 1993 erschienene Novell DOS 7 sowie dessen direkte Weiterentwicklungen OpenDOS 7.01 und DR-DOS 7.02 bis DR-DOS 8.1 (DR-DOS 8.0 und 8.1 wurden jedoch wieder zurückgezogen). Bereits der BDOS-Kernel von MP/M bzw. Multiuser DOS bot echtes Multitasking in einem CP/M-Kernel. Mit BDOS 7.2 (Novell DOS 7) war erstmals echtes pre-emptives Multitasking unter einem DOS-Kernel möglich.

## BDOS-Versionen in Digital-Research-Betriebssystemen

Da alle Betriebssysteme von Digital Research einen BDOS-Kernel nutzen, ist die BDOS-Version über Betriebssystem- bzw. Produktgrenzen hinweg gleich. Über den BDOS-Funktionsaufruf 0Ch bei nicht x86 CPUs und 4452h im AX Register bei x86 Maschinen kann die Version des Kernels ebenso wie das System (8080, Z80, 68000, 8088/8086 etc.) und das Betriebssystem (CP/M, Multiuser, Concurrent etc.) ausgelesen werden.

Diese unvollständige Liste zeigt den Zusammenhang des BDOS-Kernels mit den einzelnen Betriebssystemen:

| BDOS | BDOS | Jahr | Betriebssystem(e) | Anmerkungen |
| - | - | - | - | - |
| Version | Architektur | Jahr | Betriebssystem(e) | Anmerkungen |
| 1.0 | 8-Bit | 1974 | CP/M | wurde vollständig von Gary Kildall hauptsächlich in PL/M für den Intel-8080-Prozessor programmiert; 1973 veröffentlichte Intel PL/M, einen Compiler für den Intel 8008, der von Gary Kildall 1974 für den Intel 8080 portiert wurde; weil Intel an CP/M jedoch nicht interessiert war, wurde es ab 1975 über die Firma Digital Systems vertrieben |
| 1.1 | 8-Bit | um 1975 | CP/M | über Digital Systems vertrieben (Digital Research Inc. war noch nicht gegründet) |
| 1.2 | 8-Bit | 1976 | CP/M | hauptsächlich über IMS Associates Inc. (kurz IMSAI) für deren Floppy Controller; Gründung der Firma Intergalactic Digital Research Inc. (später in Digital Research Inc. umbenannt) |
| 1.3 | 8-Bit | 1976 | CP/M, Concurrent CP/M, MP/M | ab CP/M 1.3 findet sich im BDOS-Kernel und in diversen Programmen die BDOS-Version bzw. die CP/M-Version und -Seriennummer; Copyright-Vermerk Gary A. Kildall (noch nicht Digital Research) |
| 1.3 | 8-Bit | 1977 | IMDOS 2.01 | nach einem Lizenzabkommen mit IMS Associates Inc. (kurz IMSAI) als IMDOS 2.01 vertriebene lizenzierte Version von CP/M 1.3 für den IMSAI-Floppy-Controller (BIOS von IMSAI) |
| 1.4 | 8-Bit | 1977 | CP/M | erste von Digital Research an Einzelpersonen vertriebene Version von CP/M, aber auch viele in Lizenz von anderen Firmen für ihre 8080- und Z80-basierten Produkte beigegebenen Betriebssystem-Versionen (beispielsweise IMDOS von IMSAI oder CDOS von Cromemco) |
| 2.0 | 8-Bit | 1979 | CP/M, Concurrent CP/M, MP/M | nur für OEMs verfügbar |
| 2.1 | 8-Bit | 1979 | CP/M | nur von einigen OEMs benutzt |
| 2.2 | 8-Bit | 1979 | CP/M, Concurrent CP/M, MP/M | |
| 2.2 | 8-Bit | 1980 | CP/M-80 | mit der Portierung auf weitere (16-Bit-)Prozessoren nunmehr als „CP/M-80“ bezeichnet; in den Varianten CP/M, Concurrent CP/M und MP/M auf für Einzelpersonen erhältlich |
| 2.2 | 8-Bit | 1980 | CP/M-Z80 | Variante für den Zilog Z80; in den Varianten CP/M, Concurrent CP/M und MP/M erhältlich |
| 2.2 | 16-Bit | 1982 | CP/M-68k 1.0 | Portierung auf den Motorola 68000; später auch in den Varianten CP/M, Concurrent CP/M und MP/M erhältlich |
| 2.2 | 16-Bit | 1982 | CP/M-86 1.0 | erste Version für den IBM PC (mit Intel-8088-Prozessor), auch für Intel-8086-Prozessor |
| 2.2 | 16-Bit | 1983 | CP/M-86 1.1 | Version mit Unterstützung für Festplatten |
| 2.5 | ? | ? | DOS Plus | |
| 2.8 | ? | ? | Personal CP/M-80 | |
| 3.0 | 8-Bit | 1982 | CP/M-80 | um mehr Speicher verwenden zu können, wurde mit dieser Version Bank Switching eingeführt; es ist die letzte Version für 8-Bit-Systeme, wie der Commodore 128 (1985) |
| 3.0 | 16-Bit | ? | MP/M II, MP/M-86 | |
| 3.1 | ? | 1984 | Concurrent DOS (CDOS) 3.1, CP/M Plus | |
| 3.2 | 16-Bit | 1984 | DR Concurrent PC DOS 3.2 | |
| 3.3 | ? | ? | Apricot PCP/M-86 | |
| 4.1 | 16-Bit | 1985 | DR Concurrent DOS 4.1 | |
| 4.1 | 16-Bit | 1986 | DOS Plus 1.2 | unterstützt CP/M- und DOS-Dateisysteme sowie DOS-Programme in einer Emulation; inklusive GEM/2 |
| 5.0 | 16-Bit | 1985 | DR Concurrent DOS/XM 5.0 | |
| 5.0 | 16-Bit | 1985 | DR Concurrent DOS/386 1.1 | |
| 6.0 | 16-Bit | 1987 | DR Concurrent DOS/XM 6.0 | |
| 6.0 | 16-Bit | 1987 | DR Concurrent DOS/386 2.0 | |
| 6.0 | 16-Bit | 1988 | DOS Plus 2.0/2.1 | |
| 6.0 | 16-Bit | 1988 | DR DOS 3.31 bis 3.35, 3.40 | aus Concurrent DOS 6.0 entwickelt, jedoch ohne Unterstützung für CP/M-Programme; kompatibel zu Compaq MS-DOS 3.31 mit Unterstützung für FAT16B (“BIGDOS”), für Programme meldet es API-Kompatibilität zu “IBM PC DOS 3.31”; die Systemdateien heißen DRBIOS.SYS (BIOS) und DRBDOS.SYS (BDOS) |
| 6.2 | 16-Bit | 1988 | DR Concurrent DOS/XM 6.2 | |
| 6.2 | 16-Bit | 1988 | DR Concurrent DOS/386 3.0 | |
| 6.3 | 16-Bit | 1989 | DR DOS 3.41 | auch als OEM-Version EZ-DOS 3.41 |
| 6.5 | 16-Bit | 1990 | DR DOS 5.0 | die Systemdateien heißen nun IBMBIO.COM (BIOS) und IBMDOS.COM (BDOS); inklusive ViewMAX 1 |
| 6.6 | 16-Bit | 1992 | DR Multiuser DOS 5.10 | Entwicklung vermutlich bereits 1990 begonnen; lizenziert auch als CCI Multiuser DOS 7.x, IMS Multiuser DOS 5.x |
| 6.7 | 16-Bit | 1991 | DR Concurrent DOS 5.1 | |
| 6.7 | 16-Bit | 1991 | DR DOS 6.0 | letzte Version vor dem Verkauf an Novell; inklusive ViewMAX 2 |
| 6.8 | ? | ? | IMS REAL/32 7.50 bis 7.94 | 32-Bit Multitasking-Betriebssystem von Intelligent Micro Software, das viele DOS-Programme und wenige CP/M-Programme ausführen kann; es wurde aus Multiuser DOS (Concurrent DOS, Concurrent CP/M-86) entwickelt |
| 7.0 | 16-Bit | 1992 | NetWare PalmDOS 1 | Entwicklung als “DR PalmDOS”; mit dieser Version wurde BDOS zum echten DOS-Kernel, während frühere Versionen intern noch eine CP/M-Datenstruktur mit DOS-Emulation verwendeten. Es meldet nun API-Kompatibilität zu PC DOS 5. |
| 7.1 | 16-Bit | 1992 | DR DOS 6.0 “business update” | ab “business update” (“DRDOS493”) und Patch “PATDR6”, “PAT394” |
| 7.2 | 16-Bit | 1993 | Novell DOS 7, Caldera OpenDOS 7.01 | mit dieser Version meldet der BDOS-Kernel erstmals API-Kompatibilität zu “DOS 6.0” und unterstützt pre-emptives Multitasking; der Kernel (inkl. BDOS) von Caldera OpenDOS 7.01 wurde für private Zwecke mit Quelltext veröffentlicht |
| 7.3 | 16-Bit | 1997 | Caldera OpenDOS 7.02 bis 7.05 | an Einzelpersonen wurde nur Caldera OpenDOS 7.02 und 7.03 vertrieben, Lineo OpenDOS 7.04 und 7.05 war nur für OEMs verfügbar und wurde offenbar von Ontrack um Unterstützung für FAT32 erweitert |

### BIOS

Unter CP/M wurde das BIOS als Grundgerüst in Form einer Assemblerdatei als Vorschlag an Erstausrüster (OEMs) beigelegt und musste für das jeweilige Computersystem speziell angepasst werden. Durch das Grundgerüst wurde dieser Prozess jedoch immens erleichtert, was dazu führte, dass CP/M in den Versionen 1.4 und 2.2 auch einzeln verkauft wurde.

Unter DR DOS ab Version 5 heißt die Datei IBMBIO.COM, bis Version 3.41 DRBIOS.SYS. Da es für den IBM PC geschrieben ist, entfällt ein aufwendig angepasstes BIOS als erste Schale. Doch finden sich hardwarenahe Funktionen weiterhin in dieser Datei, die im Wesentlichen IO.SYS von MS-DOS entspricht und weiterhin als “BIOS” bezeichnet wird.

Das BIOS in dieser Datei, zuletzt IBMBIO.COM, ist nicht mit dem Firmware-BIOS des IBM PC gleichzusetzen. Auch vor dem PC-BIOS gab es ähnliche Firmware mit jedem Computer, jedoch war diese nicht genormt, was eine Anpassung seitens des Betriebssystems für jedes einzelne Computersystem notwendig machte. Erst mit dem IBM PC ist dieser Bestandteil des Betriebssystems für jeden PC gleich.

### BDOS

Der Kernel entspricht der zweiten Schale; dessen Ziel war es, auf jedem unterstützen System kompilierbar zu sein, da sich dessen Funktionen auf die jeweils speziell angepasste erste Schale (das BIOS) stützen konnten. Unter CP/M war der BDOS-Kernel als Objektdatei beigelegt, sodass Erstausrüster (OEMs) den Kernel mit dem angepassten BIOS nach dem Übersetzen (Kompilieren) linken und anschließend zusammen mit der Hardware verbreiten konnten. Auch bei der an Einzelpersonen verkauften Version von CP/M war auf diese Weise ein eigenes CP/M-Betriebssystem erstellbar.

Unter DR DOS befindet sich der BDOS-Kernel in der Datei IBMDOS.COM (bis Version 3.41 DRBDOS.SYS) und wird resident in den Speicher geladen.

