Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Ausgabe auf dem Bildschrm zur DOS Zeit? (https://www.delphipraxis.net/180196-ausgabe-auf-dem-bildschrm-zur-dos-zeit.html)

Popov 29. Apr 2014 18:06

Ausgabe auf dem Bildschrm zur DOS Zeit?
 
Ich diskutiere gerade mit einem Bekannten über die alten Zeite und stelle fest, dass ich paar Wissenslücken habe...

Zur DOS Zeit, zumindest der MS-DOS Zeit, bestand die Hauptaufgabe von DOS die Kommunikation mit Speichermedien. Windows kümmert sich auch um die Ausgabe auf dem Bildschirm. Das tat meiner Kenntnis nach DOS nicht (zumindest kann ich mich nicht dran erinnern). Es gab da zwar auch die MSDOS.SYS (ich glaube auch IO.SYS), aber ich weiß nicht ob die auch für den Bildschirm zuständig waren.

Bei der Gelegenheit die gleiche Frage auch zu Tastatur. Die Config.sys hat zwar etwas geladen, das war aber nur Tastaturtreiber. Das DOS hat auch ohne Config.sys Treiber funktioniert.

Womit die Frage ist, ob MSDOS.SYS und IO.SYS die Aufgaben hatte oder wer sonst?

fred.ahrens 29. Apr 2014 20:09

AW: Ausgabe auf dem Bildschrm zur DOS Zeit?
 
Unter DOS hat man im Prinzip direkt über die Grafikkarte seine Ausgaben gemacht. Wenn es nur Text war, ging das über das BIOS. Wenn es auch Grafik sein sollte, musste man schon wissen, welche Grafikkarte verbaut ist. Man konnte alternativ auch in Pseudodateien schreiben, bei denen sich dann DOS um die Weiterleitung an das jeweilig konfigurierte Gerät kümmerte.
Das hat leider auch zu dem Umstand geführt, dass jedes einzelne DOS-Programm seine eigenen Grafiktreiber mitbringen musste, wenn unterschiedliche Grafikkarten unterstützt werden sollten. Das gleiche Spiel dann noch einmal für die Druckerunterstützung.

Zur Tastatur wurde nur die Konfiguration geladen, welches Tastaturlayout die Tastatur hat. Ohne CONFIG.SYS wurde immer davon ausgegangen, dass eine englische QWERTY-Tastatur angeschlossen ist. Erst mit dem Eintrag in der CONFIG.SYS konnte auf andere Tastenbelegungen umgestellt werden.

Medium 30. Apr 2014 01:02

AW: Ausgabe auf dem Bildschrm zur DOS Zeit?
 
Da unter DOS für die Textausgabe imho immer "unter der Haube" ein int 21h stand, und das somit ein BIOS- bzw. direkter CPU-Befehl war, würde ich glatt behaupten, dass DOS selber hier nur insofern beteiligt war, als dass es zur Ausführung der jeweiligen Stelle im Binary verantwortlich war. Ergo: DOS hatte selber recht wenig am Hut mit der konkreten Ausgabe. Bei Grafiken wird es wie oben schon erwähnt noch gelöster, und auch nach Eintreffen der VGA und VESA Standards war noch immer jedes Programm selber dafür verantwortlich die Grafikkarten entsprechend zu versorgen.

Es war halt wirklich doch mehr ein Disk Operating System, weniger ein Screen Operating System (SOS, hrhr)

Dejan Vu 30. Apr 2014 06:32

AW: Ausgabe auf dem Bildschrm zur DOS Zeit?
 
War der Bildschirm (Alpha) nicht memory mapped, d.h. man konnte sich ein Array [0..24,0..79] of Word(?) (Lo:Char, Hi: Color/Highlighting) deklarieren, das absolut an eine Adresse binden und dann direkt im Bildschirm herumschreiben? Da war nicht viel mit 'Treiber', soweit ich mich erinnere. Kann mich aber auch irren.

Der Rest ist im Dämmerlicht der Demenz verschwunden.

bcvs 30. Apr 2014 06:53

AW: Ausgabe auf dem Bildschrm zur DOS Zeit?
 
Zitat:

Zitat von Dejan Vu (Beitrag 1257466)
War der Bildschirm (Alpha) nicht memory mapped, d.h. man konnte sich ein Array [0..24,0..79] of Word(?) (Lo:Char, Hi: Color/Highlighting) deklarieren, das absolut an eine Adresse binden und dann direkt im Bildschirm herumschreiben?

Genau, wobei das zunächst als schlechter Stil galt. Ursprünglich/ standardmäßig erfolgte die Textausgabe über das BIOS, das sich dann um die korrekte Speicheradresse kümmerte. Dabei konnte man aber dem BIOS zuschauen, wie es die einzelnen Zeichen auf den Bildschirm malte. Deshalb hat sich aus Performancegründen dann doch die Methode mit der absoluten Adresse des Bildschirmspeichers durchgesetzt.

Bei der Grafik weiß ich nur noch, dass Turbo Pascal verschiedene Treiber für die gängigen Grafikstandards (VGA, EGA, Hercules) mitbrachte. Die wurden ja nach verbauter Grafikkarte eingebunden.

Union 30. Apr 2014 07:00

AW: Ausgabe auf dem Bildschrm zur DOS Zeit?
 
Man konnte für die zeichenbasierte Ausgabe zwei Methoden verwenden. Entweder das schon erwähnte Schreiben von Zeichen und Attribut in den Bildschirmspeicher (so habe ich mal einen ANSI-Treiber zur Fernsteuerung erstellt, der hat einfach ein Diff daraus erstellt und in ESC-Sequenzen zur Terminalsteuerung umgesetzt, ich erinnere mich noch an ~11 ms Laufzeit pro Diff) oder zeichenweise über den Interrupt $21, wobei im Register A dann das Zeichen (Lowbyte, AL) sowie das Ausgabeziel (Highbyte, AH) kodiert war. Alternativ über $09 wobei man auch das Attribut mitgeben konnte.

Mavarik 30. Apr 2014 09:34

AW: Ausgabe auf dem Bildschrm zur DOS Zeit?
 
Klar...

Es gab den ein oder anderen Interrupt für Zeichenausgabe, aber das war alles viel zu langsam.
Also immer direkt auf die Speicher Adresse bzw. über die Segemtvariable SEGA000 SEGB000 dann funktionierte das auch
im Protected-Mode. (bis 16MB Speicher).

Es war der Grafikmodus bis 320x200 in 256 Farbe, bzw 640x480 in 16 Farben definiert. Darüber hinaus war es, wie schon gesagt, Grafikkartenabhängig. Die Umschaltung funktionierte auch über einen Interrupt.

Die Tastatur konnte zwar auch per Int abgefragt werden, damit konnte man jedoch nicht erkennen ob 2 oder mehr Tasten gleichzeitig gedrückt wurden. (Außer shift, alt, ctrl) daher hat man die Tastatur besser über den entsprechenden Port abgefragt.

Threadprogrammierung ging über den $1C oder direkt über den Timer Interrupt (8). Der musste dann aber korrekt "per inherited" weitergeleitet werden und die Laufzeit der Subroutine war limitiert. (Beim $1C nicht).

Mavarik

p80286 30. Apr 2014 11:43

AW: Ausgabe auf dem Bildschrm zur DOS Zeit?
 
Wenn man in die Gerätedatei geschrieben hat, konnte die Ausgabe umgeleitet werden.
So gesen hatte DOS auch etwas mit dem Bildschirm zu tun.
Gleiches gilt übrigens für die Eingabe.

Für die direkte Ausgabe auf den Bildschirm gab es drei Möglichkeiten,
1) DOS (int21) [inakzeptabel)
2) BIOS (int10) für grafik brauchbar, weil man Treiber ignorieren konnte.
3) Direkt in den Speicher, für Textausgabe letztlich State of the Art, die Grafikfreunde hatten da je nach Karte und Modus verschiedene Möglichkeiten

Die Angabe des Tastaturtreibers in der Config.Sys wurde "nur" genutzt um ihn zu laden. Praktisch jedes Programm hat die Tastenentsprechung über den Int9 abgeholt. Wobei viele Spiele sich direkt beim Tastaturkontroller bedient haben.

Gruß
K-H

Blup 30. Apr 2014 12:34

AW: Ausgabe auf dem Bildschrm zur DOS Zeit?
 
Dann gab und gibt es auch den VESA-Standard um höher auflösende Grafikmodi (bzw. Farbtiefen) zu nutzen. Entweder die Grafikkarte stellt selbst eine passende Bios-Erweiterung bereit oder man musste einen passenden Treiber z.B. in der Config.sys laden.

p80286 30. Apr 2014 12:38

AW: Ausgabe auf dem Bildschrm zur DOS Zeit?
 
Zitat:

Zitat von Blup (Beitrag 1257503)
Dann gab und gibt es auch den VESA-Standard um höher auflösende Grafikmodi (bzw. Farbtiefen) zu nutzen. Entweder die Grafikkarte stellt selbst eine passende Bios-Erweiterung bereit oder man musste einen passenden Treiber z.B. in der Config.sys laden.

Wie funktionierte das denn in der Praxis? wurde der Int10 auf eine modifizierte Sprungtabelle umgeleitet?

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz