BDOS

Systemkern der Betriebssysteme CP/M von Digital Research Inc.

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.

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.[1] 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.[2]

BDOS-Versionen in Digital-Research-Betriebssystemen

Bearbeiten

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.[3][4]

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

BDOS Jahr Betriebssystem(e) Anmerkungen
Version Architektur
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;[5] Copyright-Vermerk Gary A. Kildall (noch nicht Digital Research)
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
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
CP/M-Z80 Variante für den Zilog Z80; in den Varianten CP/M, Concurrent CP/M und MP/M erhältlich
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
1982 CP/M-86 1.0 erste Version für den IBM PC (mit Intel-8088-Prozessor), auch für Intel-8086-Prozessor
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)[1]
16-Bit ? MP/M II, MP/M-86
3.1 ? 1984 Concurrent DOS (CDOS) 3.1,[2] 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
1986 DOS Plus 1.2 unterstützt CP/M- und DOS-Dateisysteme sowie DOS-Programme in einer Emulation;[6] inklusive GEM/2
5.0 16-Bit 1985 DR Concurrent DOS/XM 5.0
DR Concurrent DOS/386 1.1
6.0 16-Bit 1987 DR Concurrent DOS/XM 6.0
DR Concurrent DOS/386 2.0
1988 DOS Plus 2.0/2.1
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)[2]
6.2 16-Bit 1988 DR Concurrent DOS/XM 6.2
DR Concurrent DOS/386 3.0
6.3 16-Bit 1989 DR DOS 3.41 auch als OEM-Version EZ-DOS 3.41[2]
6.5 16-Bit 1990 DR DOS 5.0 die Systemdateien heißen nun IBMBIO.COM (BIOS) und IBMDOS.COM (BDOS);[2] 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
DR DOS 6.0 letzte Version vor dem Verkauf an Novell; inklusive ViewMAX 2
6.8 ? ? IMS REAL/32 7.50 bis 7.94[7] 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[8]
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.[2]
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;[2] der Kernel (inkl. BDOS) von Caldera OpenDOS 7.01 wurde für private Zwecke mit Quelltext veröffentlicht[9]
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[10]

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.

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.[11]

Bearbeiten

Einzelnachweise

Bearbeiten
  1. a b Computermuseum München: Wissenswertes über CP/M (Memento des Originals vom 24. Januar 2019 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.computermuseum-muenchen.de, abgerufen am 20. Dezember 2013
  2. a b c d e f g upcScavenger – Wiki: Dr-dos (englisch), abgerufen am 21. Dezember 2013
  3. seasip.demon.co.uk (Memento des Originals vom 7. Dezember 2013 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.seasip.demon.co.uk
  4. BDOS function 12 (S_BDOSVER) - Return version number
  5. retrotechnology.com: CP/M serial numbers (englisch) vom 20. Juli 2012, abgerufen am 22. Dezember 2013
  6. seasip.info
  7. imsltd.com
  8. freedos.org (Memento vom 24. September 2015 im Internet Archive)
  9. Die Lizenz von OpenDOS 7.01 liegt dem freigegebenen Quellcode, in der Datei LICENSE.TXT, bei.
  10. DR-DOS Kernel 7.04/7.05 vom 6. Oktober 2003 (englisch); abgerufen am 17. Januar 2014
  11. delorie.com