Nicht alles, was wie DOS aussieht, ist DOS.
Die "MS-DOS-Eingabeaufforderung"oder "cmd" von Windows ist schon lange kein DOS mehr. Auch wenn Laien hier immer von einem "DOS-Fenster" sprechen.
Die API, auf die das Programm zugreift, ist bei DOS eine völlig andere als bei Windows. Windows-EXE hat eine Weiche drin, wovon ein Pfad zum bereits erwähnten "This program cannot..."-Stub (für DOS) und der andere eben in das Windows-Programm führt. Das verhindert die versehentliche Ausführung von Windowsprogrammen unter DOS.
Rein theoretisch könnte man statt dem Stub eine zweite Implementierung für DOS einbinden. Dann hätte man eine Exe, die unter DOS und Windows gleichermaßen verwendet werden kann. Manche Tools aus früheren Windows-Zeiten haben davon Gebrauch gemacht.
Auf Win64- und Linuxsystemen könntest du DOS-Programme gar nicht ausführen.
DOS arbeitet nämlich mit nur 16-Bit (von irgendwelchen Tricksereien mal abgesehen und selbst dann wird zunächst auf 16-Bit ausgeführt, bis im weiteren Programmablauf die Umschaltung auf 32-Bit stattfindet.).
Lange Rede, kurzer Sinn:
Wenn du eine Konsolenanwendung kompilierst, dann läuft diese auf dem Betriebssystem, für welches du kompiliert hast. Der einzige Unterschied zu einem normalen Programm ist: Den Konsolenprogrammen fehlt die grafische Benutzeroberfläche bzw. die Benutzeroberfläche ist auf der Konsole realisiert.
Die Mindestanforderungen sind daher (IMHO) dieselben wie bei einer "normalen" Anwendung mit grafischer Benutzeroberfläche.
Ansonsten bestimmst du durch den Programmzweck und durch deine Programmiertechnik die Mindestanforderungen. Je ressorcensparsamer du arbeitest, desto geringer fallen sie aus. Es gibt Konsolenprogramme, die keinesfalls "alt" sind und die volle Leistung des PCs fordern (z.B. ffmpeg, welches auf einem 486er ewig vor sich hinnuckeln würde)
Bis XP runter geht PB meines Wissens. Über noch ältere Windowsversionen mache dir mal keine Sorgem
Benötigst du eine DOS-Anwendung? Dann ist PB die falsche Programmiersprache (PB kann nicht für DOS kompilieren). Du wirst auf ältere Programmiersprachen zurückgreifen müssen, die das Betriebssystem unterstützen (QBasic, Turbo-Pascal, Turbo-C, VisualBasic 1.0.... oder für aufwändige Sachen direkt Assembler).
Wenn du nur ein Programm möchtest, das ohne Windows funktioniert: Es gibt Linux-Distributionen, die keine grafische Benutzeroberfläche besitzen, aber einen modernen PC vollständig unterstützen.
