Re: Wozu noch DOS?



Udo Kuhnt wrote:
Stefan Reuther schrieb:
Wie gesagt, ich kann es nicht genau definieren. "Ein DOS" ist für mich
etwas, daß die API und die Möglichkeiten von ca. MS-DOS 5.0 bietet.

Na ja, die meisten Leute definieren DOS über die letzte Version, mit
der sie noch aktiv gearbeitet haben. ;-)

Das wäre bei mir 6.22 bzw. 7.0.

MS-DOS 5.0 habe ich deswegen genannt, weil es meiner Auffassung nach von
vielen als die stabilste und "sauberste" Version von MS-DOS angesehen
wird. Außerdem wurde mit MS-DOS 5.0 ein großer Teil der undokumentierten
API dokumentiert (Interruptliste: "this call was undocumented prior to
the release of MS-DOS 5.0"). Damit bietet es sozusagen eine stabile
Grundlage einer API-Definition.

So Kram wie Bootmenüs, Doublespace usw. sind zwar nett, aber gehören
nicht zwingend zu einem DOS dazu. Und noch ein Punkt: vom Befehlsumfang
her scheinen auch die NT-Windowse auf größenordnungsmäßig DOS 5.0 zu
basieren, sie enthalten nämlich nicht den mit DOS 6 eingeführten
CHOICE-Befehl :-)

DOS entwickelt sich eben weiter, so wie andere Betriebssysteme auch.
DR-DOS besitzt diese Fähigkeiten schon seit mindestens zwölf Jahren.

Irgendwann ist es eben nicht mehr das, was ich ein "klassisches DOS"
nennen würde. Windows ME ist ja auch eine Fortentwicklung von MS-DOS,
nur würde ich es dank Nichtverfügbarkeit des Realmode mit normalen
Mitteln nicht mehr als "klassisches DOS" bezeichnen.

Nein, weil es eher ein Rückschritt ist. Allerdings würden die meisten
Gegner von DOS ihre Behauptung, daß DOS primitiv sei, eben auf das
Fehlen der Fähigkeiten stützen, die DR-DOS besitzt. ;-)

DOS (nach meiner obigen Definition) ist ja auch primitiv. Und das ist
eben Stärke und Schwäche zugleich.

Da kenne ich mich dann mit DR-DOS nicht aus, aber in DOS war es ja
eigentlich immer so, daß es nur für wenige Hardware-Klassen überhaupt
Treiberschnittstellen gab (Blockdevices, IFS, Netzwerk, ein bißchen
Grafik). Sowas wie Sound, Drucker, Joysticks machten immer die
Anwendungen selbst, und die können nicht miteinander kommunizieren, weil
es unter klassischem DOS halt keine zweite Anwendung zum damit-
kommunizieren gibt :)

Mit "Treiber" meine ich auch mehr ein Programm, das eine Lücke in den
Schutz reißt, damit Anwendungen direkt auf die Hardware zugreifen
können, so wie der Soundblastertreiber für DR-DOS, der den Betrieb
der Soundkarte im Multitasking ermöglicht.

Okay, verstanden.

[Linux, X]
Unter DOS hilft dagegen meistens ein Wechsel des Graphikmodus; oftmals
reicht auch schon ein simples CLS.

Das ist unter Linux nicht anders. Nur kommst du eben normalerweise an
INT 10/AH=00 nicht ran.

Eben - und einen eigenen Zugang dazu besitzt Linux nicht. Soweit ich
weiß, stellt der Loader den Modus einmal ein und hofft, daß danach
keiner mehr daran herumpfuscht.

Ja. Der Kernel weiß nichts vom Modus-Umschalten. Der DOS-Kernel übrigens
auch nicht.

Wenn Du Dich da mal nicht täuschst - DOS ruft diese Funktionen sogar
direkt auf, um beispielsweise den Bildschirm zu löschen. :-)

Die Shell, die Anwenderprogramme und ansi.sys zähle ich erstmal nicht
zum Kernel, und eine API-Funktion "Bildschirm löschen" gibt es nicht.

Das sind dann Anwendungsprogramme ("mode"), die den
entsprechenden INT 10/AH=00 aufrufen. Unter Linux sind das ebenfalls
Anwendungsprogramme, die dann halt direkt die Grafikkarte programmieren
(bei der SVGALIB liegt sowas bei).

Eben die meine ich. Es ist aber für mich ein bedeutsamer Unterschied,
ob ein solches Programm, das im Falle von CLS sogar in die Shell
integriert ist, nur eine BIOS-Funktion aufruft, also quasi einen Teil
des Betriebssystems, oder direkt die Register manipuliert.

Für mich nicht. Die BIOS-Funktion ist auch nichts anderes als eine
Bibliotheksfunktion. Sie liegt halt in einem ROM, der "schon immer da
ist". Genauso, wie sie unter Linux in einer /lib/*.so liegt, die "schon
immer da ist". Dummerweise funktioniert sie eben nur in bestimmten
Umgebungen (=Real- oder V86-Mode). Will man sie in einer anderen
Umgebung nutzen, muss man sie neu schreiben. Das haben die SVGALIB-Leute
gemacht. Letztenendes rufe ich aus einem Anwenderprogramm immer nur eine
Bibliotheksfunktion auf. Im Hintergrund macht die eben unter DOS "int
10h", und unter Linux irgendwelche Registerfummeleien.

Hintergrund des Ganzen ist unter anderem die Tatsache, dass der "int
10h" auch mal ein Realmode-Treiber sein kann, der natürlich beim Starten
von Linux hochkant rausgekegelt wurde. Ich habe z.B. Linux eine Zeitlang
mit VESA-Framebuffer betrieben. Zur Initialisierung desselben diente der
Display Doctor, der in der config.sys per "install"-Zeile geladen wurde,
vor der "install"-Zeile, die "loadlin" ausführt.

Mal abgesehen davon, daß die SVGALib-Programme nur die Register
wiederherstellen, die vorher gesichert wurden. Ohne SaveTextMode also
auch kein RestoreTextMode.

Das wird aber im Allgemeinen bei der Installation gemacht, und dient
auch nur dazu, nichtstandardisierte Registerwerte abzufangen. Halt die
Feinheiten, die normalerweise der int 10 kennt, den man nur eben nicht
aufrufen kann.


Stefan

.



Relevant Pages

  • Re: Wozu noch DOS?
    ... vielen als die stabilste und "sauberste" Version von MS-DOS angesehen ... Mitteln nicht mehr als "klassisches DOS" bezeichnen. ... Gegner von DOS ihre Behauptung, daß DOS primitiv sei, eben auf das ... ob ein solches Programm, das im Falle von CLS sogar in die Shell ...
    (de.comp.os.msdos)
  • Re: Reasons for low traffic?
    ... I still use RM MS-DOS from Win98SE both by itself and under Win98SE's ... This is because the compilers I use support DOS and I didn't care ... Linux or XP - at least temporarily. ... Have you noticed how active some http based forums are? ...
    (comp.os.msdos.programmer)
  • Re: Adding 64-bit file support to DJGPP
    ... That the DOS and Linux API's don't match? ... > That there needs to be a POSIX layer? ... letting your application pretend that MS-DOS is really a POSIX.1 ...
    (comp.os.msdos.djgpp)
  • Re: [ANNOUNCE] Merkeys LinuxWare 1.0 MS-DOS Loader
    ... DR-DOS) loader that allows you to compile a Linux kernel as an MS-DOS ... boot and load Linux from MS-DOS. ...
    (Linux-Kernel)
  • Re: [ANNOUNCE] Merkeys LinuxWare 1.0 MS-DOS Loader
    ... DR-DOS) loader that allows you to compile a Linux kernel as an MS-DOS ... boot and load Linux from MS-DOS. ...
    (Linux-Kernel)