Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
27.05.2002, 20:30
WareWolf



Leute, ich habe jede Menge seit Jahren gut funktionierende, in Asm selbst programmierte,Com-oder Exe Programme in Betrieb, und mich stört folgendes:
Bei manchen dieser Programme wäre es sinnvoll, diese gezwungenermaßen im Vollbildmodus auszuführen. Nun ist es ja leider so, daß dies von der aktuellen Dos-Fenster Voreinstellung von Windows abhängig ist.
Was ich brauche ist ein Befehl, der Windows zwingt in den DosVollbildschirm zu wechseln. Ich habe es bereits mit dem BIOS Interrupt 10h, dem Video Zugriff probiert, aber dies funktioniert nur bei den Grafikmodi ab 0d. Hier wird schön in Vollbild geschaltet. Nützt mir nichts, ich brauche den normalen TEXTMODUS (80x25) im Vollbild.
Hat hier jemand Erfahrung damit?
(und bitte keine Hausfrauenlösungen in C++ oder so, will mir ja nicht meine Programme versauen, damit sie nur noch unter Win laufen...)

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
001
27.05.2002, 23:44
Tron



gibt es evtl. eine einstellung in der .pif?

oder ev!l hack:
auf grafikmodus stellen und wieder zurueck auf txt, geht das?
mov ax, 0x13
int 0x10
mov ax, 0x7 // is das der textmodus? oder was es 3?
int 0x10

btw: welchen assembler benutzt du? nasm?

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
002
28.05.2002, 13:58
WareWolf



die Variante mit dem Grafikmodus (Vollbild) und dann zurück in Textmode habe ich natürlich schon probiert, funktioniert aber nicht. Es geht dann mal kurz in Vollbild und gleich wieder in das Fenster. Schade, naja ich probier noch ein bisserl rum.
Als Assembler benutze ich den A86/A386 V3.72 von Eric Isaacson, damit habe ich mich vor Jahren mal eingeschossen und nie auf einen "grösseren" gewechselt...warum auch?
THX

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
003
28.05.2002, 15:00
Tron



ich hab mal etws rumprobiert.
wenn das programm laenger laeuft, (also nicht nur kurz was macht, ein paar ausgaben auf den bildschirm schmeisst und sich sofort beendet) dann kann man vollbild erzwingen.
rechtsklick auf das teil, eigenscahften, tabsheet bildschirm und vollbild einstellen.
da kannst dann sogar einstellen mit wieviel zeilen das teil angezeigt werden soll, 50 sind machmal ganz praktisch.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
004
28.05.2002, 18:56
[PE]Spinator



Dann dürfte dir entgangen sein, das durch diese einstellungen nur ne gleichnamige verknüpfung erstellt wird, welche die standards umgeht. Will er also nur das proggi selbst, ohne noch ne verknüpfung dazu verteilen, dann bringt ihm das auch nix. Ausserdem denke ich, dass es diese möglichkeit auch schon in betracht gezogen hat hat.

--

This post was written using Opera 7.0 (http://www.opera.com)

zum Seitenanfang zum Seitenende Profil || Suche
005
28.05.2002, 19:04
TheTinySteini



@Tron: Hmja, das ist bekannt (und dürfte auch WareWolf bekannt sein =). Aber er möchte es ja wohl als reine Assembler-Lösung haben.
Ich glaub nicht, dass das geht. Die einzige (?) Lösung dürfte wohl über ne .pif-Datei gehen. Die wird ja automatisch mit einbezogen, auch wenn man sie nicht direkt aufruft, sondern das Programm auf das sie verweist dazu.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy


Dieser Beitrag wurde am 28.05.2002 um 19:04 von TheTinySteini bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
28.05.2002, 21:40
Tron



@TTS: die methode, die ich genannt habe erzeugt eine .pif datei (;

eine andere moeglichkeit waere evtl. ueber die winapi, aber das ist wohl auch nicht unbedingt was du willst.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
007
29.05.2002, 01:03
Another1



oder ALT+Enter faken

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
008
29.05.2002, 14:27
TheTinySteini



Bleibt eigentlich nur noch die Frage, warum willst du unbedingt Fullscreen haben? Beim Konsolenfenster hat wenigstens noch der User nen Einfluss darauf, wie viel Platz das Proggy wegnimmt.
Allerdings, wenn du den Screen sehr schnell updaten musst, dann ist Fullscreen natürlich sehr viel schneller (die Aktualisierungsrate eines console-windows ist nicht gerade hoch - macht mal ein dir in nem großen Verzeichnis).

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
009
29.05.2002, 20:44
WareWolf



Ich muss den Fullscreen bei einigen Programmen einfach haben, weil diese sonst gar nicht wirklich oder recht buggy ausgeführt werden. Hauptsächlich bei Mausunterstützten Proggies, aber auch bei anderen Routinen, die viel Bios Interrupts verwenden.
Ich habe gerade eben schnell ein Beispielprogramm erstellt (kleines COM Programm, 3kB)
comtest.zip
probiert es im Vollbild und im Fenster, das kann ich so nicht lassen.
Ich möchte die Umschaltung natürlich nicht in einer Pif Datei oder in den Aufrufeigenschaften, sondern nach Möglichkeit direkt im Code. Das muss doch zu machen sein, leider kenn ich mich mit Windoze Programmierung nun überhaupt nicht aus, aber irgendwo wird doch (vereinfacht ausgedrückt) eine Speicherzelle für das Vollbild zuständig sein (?)

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW


Dieser Beitrag wurde am 29.05.2002 um 20:46 von WareWolf bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
010
02.06.2002, 16:54
WareWolf



Naja, scheinbar unmöglich.

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
011
02.06.2002, 17:43
Tron



ich hab an deinem comtest mal etwas rumdisassembliert, das problem bei speziell dieser anwendung ist wohl das (5malige) vsync, um die geschwindigkeit festzusetzen, regle das am besten anders, der dritte kanal der RTC eignet sich dafuer hervorragend. (siehe mein mhz proggi, da verwende ich die RTC, muesst sich ueber die forensuche finden lassen)

btw: erst das videosegment rausfinden (mono/farbe) und danach einen farbmodus setzen macht irgendwie keinen sinn

btw2: benutz SI statt DI als einlese zeiger (heisst ja schliesslich auch Source Index) dann kannst du bequem
lodsb
statt
mov al, [di]
inc di
verwenden

btw3: warum machen f1 und f2 das selbe? *neugierig*

btw4: ab dem 386 koennen bedingte sprunge eine 32bit adresse als operand haben, also sind solche konstrukte wie
cmp bla, blubb
jne moep
jmp ganzweitweg
moep:
nicht mehr notwendig

einfach
cmp bla, blubb
je ganzweitweg

btw5: krasses kleines proggi

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
012
02.06.2002, 19:38
WareWolf



@Tron: Ich habe das Com Programm mit einem Tool erstellt, welches ich Mitte der 90er bereits in Asm programmiert habe.
zu btw: Das Videosegment finde ich deshalb heraus, weil es seinerzeit noch EGA und Herkulesmonokarten in den Rechnern gab und dort die Adressen unterschiedlich waren. Das Programm ist auch noch auf XT Fossil-Computern gelaufen !
Später habe ich dann nach und nach erweitert und festgestellt, dass auf schnelleren Rechnern die Ausgabeprogramme viel zu schnell arbeiten und habe dann auf vsync synchronisiert. Allerdings ist dann VGA Zwang, hat ja seit Jahren sowieso jeder, die alten Abfrageroutinen habe ich schlampigerweise dringelassen.

btw2 + btw4: gleicher Grund, lodsb erfordert 186, sollte aber auf XT 8086 noch laufen.

btw3: f1 und f2 machen nicht dasselbe, f1 setzt die Vordergrundfarbe, f2 den Hintergrund der Zeichenfarbe.

btw5: Danke.

dritter Kanal der RTC sagt mir jetzt leider garnichts, ich such mal nach Deinem Proggie, allerdings ist dieses damals auf meiner Kiste nicht gelaufen, aber der Quellcode war ja dabei ...

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
013
03.06.2002, 01:24
Tron



der RTC (Real Time Clock) hat 3 kanaele, von den ersten beiden finger weg! der dritte steuert normalerweise den pc-speaker, aber den kann man abschalten, dann kann man diesen kanal wunderbar zum zeitmessen missbrauchen. (1.193.180 Hz auf allen pcs dieser welt)

nochmal zum videosegment: direkt nach der stelle, an der du die adresse rausfindest, setzt du den textmodus 3, der ein farbmodus ist, also immer im segment 0xb800 beginnt, also wenn seltsamerweise vorher ein monochrom modus aktiv war, duerfte dann was schieflaufen oder ueberseh ich da was?
(wofuer brauchst du ueberhaupt das segment, soweit hab ich garnet disassembliert, zumindest keine stelle, an der es gebraucht wurde)

f1+f2: unterscheidet sich das nur im aufzeichnungsprogramm? naemlich in comtest rufen beide die selbe routine auf.
(ja, ich weiss, ich bin penetrant und neugierig *g*)

ich werd mal mein MHz proggi so modifizieren, dass es bei dir laeuft, also brav bios-int zur ausgabe der zeichen statt home-brew direktzugriff auf videosegment, was wohl dein windoof nicht mag.
bisherige verison: http://www.uni-karlsruhe.de/~za2279/files/MHz.zip

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
014
03.06.2002, 10:39
WareWolf



Du bist ja hartnäckig, Mann das ist Jahre her...aber ich habe das Aufzeichnungsprogramm nachträglich mal ausschliesslich für VGA Karten umgestrickt, weil ich die hellen Hintergrundfarben so geil fand (gelb, weiss usw. war ja seinerzeit im DOS als Hintergrundfarbe nicht üblich, nur im Vordergrund, das fehlende Bit war für Blinken zuständig) mit einem Trick hatte ich dies umgangen ... wie gesagt habe ich sozusagen Codemüll aus den Vorgängerversionen noch dringelassen, deshalb noch die unnütze Segmentfindung und Speicherung der Videoadresse.

Und Du hast richtig vermutet, f1 u. f2 unterscheidet sich nur im Aufzeichnungsprogramm, wobei einmal auf das HI und andermal auf das LOW Nibble im Byte Einfluss genommen wird. In der Ausgaberoutine wird dann das komplette Byte eingetragen, deshalb gleicher Call.

Aber was mir jetzt bei der ganzen Geschichte zu denken gibt ist die Tatsache, dass im ausgeführten DOS Fenster von Windoof kein vsync ausgewertet werden kann. Wird das irgendwie umgelenkt? ich frage doch direkt die Videoregister ab, also ohne Umweg über Int´s. Komisch. Selbst unter OS/2 läuft das korrekt.

Wenn ich jetzt das Timing auf RTC umstelle, finde ich das den falschen Ansatz, denn ich möchte schon aus ästhetischen Gründen manchmal den Vollbildmodus erzwingen. Dieses Programm war nur ein Beispiel, bei Mausabfragen spinnt auch manchmal der Fenstermodus.

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
015
03.06.2002, 11:22
Tron



nenn es einen inneren zwang (:
der 'trick' muesste auch auf EGA karten funktionieren, falls du bit 3 des mode control registers meinst.

noch so eine hartnaeckige frage: was macht der interupt int 0x10 ah=0x10? ich hab den in keinen meiner buecher gefunden.

dass vsync nicht funktioniert, kann daran liegen, dass es im protected mode erlaubt ist speicher- und port-zugriffe abzufangen, um sie dann auf eine (mehr oder eher minder gute) emulation umzuleiten, dabei hat wohl jemand etwas verbockt.

RTC:
ich sagt ja auch: bei diesem speziellen programm, aber du hast natuerlich recht, echter vollbildtextmodus sieht einfach besser aus.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
016
03.06.2002, 18:06
WareWolf



Zitat:

noch so eine hartnaeckige frage: was macht der interupt int 0x10 ah=0x10? ich hab den in keinen meiner buecher gefunden.

...das ist eine undokumentierte Bios Funktion, macht eben gerade diesen "Trick" mit den intensiven Hintergrundfarben...habe ich aus irgendeinem underground Schmöker, funzt auf bisher mir jedem zugänglichen Rechner...
Quellcode:
radix 16:
mov bl,0
mov ax,1003
int 10

und was mach ich jetzt mit dem Vollbild? naja, werd bei Gelegenheit noch ein bißchen rumhacken ... so wichtig ist es nun auch wieder nicht (lässt mir aber partout keine Ruhe !)

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche