DOS in Win XP
-
Was ist eigentlich genau die DOS-Eingabeaufforderung in Win XP -
handelt es sich um die komplette Emulation eines mit MS-DOS laufenden
PC (inklusive emuliertem 386, emulierter Grafikkarte, emuliertem Speicher usw...) ?Falls ja:
Kann man demnach in Assembler-Programmen, die unter der DOS-Eingabeaufforderung
in Win XP laufen sollen, auch hardwarenahe Funktionen eines eifachen
386-PC nutzen wie z.B.- BIOS-Aufrufe für Grafik, KKeyboard
- .model tiny und small
- direktes Schreiben in Grafikspeicher und Grafikkarten-Register
??
-
Moin Cacheline,
wenn Du unter XP ein Konsolenfenster öffnest, dann wird die Anwendung cmd.exe gestartet. Das ist der Kommandozeileninterpreter, der eine normale 32-Bit-Anwendung ist. Startest Du nun eine DOS-Anwendung, dann wird ntvdm.exe ausgeführt. Das ist die virtuelle DOS-Maschine, in der die DOS-Anwendung läuft. Du kannst normalerweise alle Möglichkeiten der Programmierung unter DOS anwenden, also z.B. den Grafikspeicher adressieren, BIOS-Aufrufe machen etc.
Dabei läuft Deine Anwendung aber eben immer innerhalb eines systemeigenen Emulators, so dass das Betriebssystem(hier XP) nie in Gefahr gerät von der 16-Bit-Anwendung zerschossen zu werden, weil es stets die Kontrolle hat. Mal abgesehen davon, dass eine 16-Bit-Anwendung nicht im von XP benutzten Protected Mode laufen kann.Ciao...
-
Hallo
Heißt das, wenn man den Graphikspeicher und BIOS in der DOS-Eingabeaufforderung von Win XP direkt ansprechen will, muß man unter Win XP eine 16-Bit-Anwendung assemblieren und 386-spezifische Befehle dürfen dabei nicht vorkommen, auch keine
Zugriffe auf modernere 32-Bit-Dateisysteme wie FAT32?
-
Hi.
Cacheline schrieb:
Heißt das, wenn man den Graphikspeicher und BIOS in der DOS-Eingabeaufforderung von Win XP direkt ansprechen will, muß man unter Win XP...
Wie "Kal El" dir zu erklaehren versuchte, ist die "DOS-Eingabeaufforderung von Win XP" (was uebrigens was anderes ist, als die Win32-Konsole - siehe FAQ!), wie du es nennst, ein DOS-Emulator, der idealerweise einen virtuellen typischen DOS-PC samt Hardware, BIOS, usw. emuliert.
Fuer das laufende DOS-Programm macht es also erstmal keinen Unterschied, ob es wirklich unter DOS oder der NTVDM von WinNT (/2k/xp/whatever) ausgefuehrt wird.Cacheline schrieb:
...eine 16-Bit-Anwendung assemblieren...
DOS-Programme starten immer im 16Bit-RealMode.
Cacheline schrieb:
...und 386-spezifische Befehle dürfen dabei nicht vorkommen,...
Also ich weiss zwar weder wie du zu dieser Annahme kommst, noch welche Befehle genau die NTVDM so emuliert, aber einen 486er wird die VDM sicher haben. Laufen schliesslich auch 32Bit-ProtectedMode-Programme drauf...
Cacheline schrieb:
...auch keine
Zugriffe auf modernere 32-Bit-Dateisysteme wie FAT32?Zugriffe auf DOS-Funktionen werden von der NTVDM in Windows-Funktionsaufrufe umgesetzt. DOS-Programme in der NTVDM koennen ueber DOS-Funktionsaufrufe also auf Dateien in allen Systemen zugreifen, mit denen Windows umgehen kann - das schliesst FAT32 sowie NTFS natuerlich mit ein.
-
Aha. Na das ist ja praktisch - da müßte dann doch uralte Software für den
8088 oder 8086 in der Eingabeaufforderung von XP auch noch laufen, sofern die keine besondere Hardware
voraussetzt, sondern nur DOS- und BIOS-Aufrufe benutzt, oder ist das nicht zu
erwarten ?
-
Naja... Theoretisch sollte es gehen, allerdings habe ich die Erfahrung machen muessen, dass es bei der NTVDM dann doch oft irgendwo hakt.
-
Moin Cacheline,
Du kannst Dir auch einen anderen DOS-Emulator runterladen. Es gibt z.B. DOSBox unter http://dosbox.sourceforge.net. DOSBox wurde ursprünglich geschrieben, um alte DOS-Spiele laufen zu lassen. Es emuliert u.a. mehrere Soundkarten(SoundBlaster, Gravis, etc.).
Ciao...
-
Danke für den Link.
Grüße