VGASAVE.COM 3.6                                                                i


        Name

        VGASAVE - Ein ansprechender Bildschirmschoner fr VGA

        Syntax

        VGASAVE [min] [B] [V] [-]

        Beschreibung

        VGASAVE ist ein speicherresidentes Programm, das verhindern  soll,
        da  sich  ein  Bild in den Monitor einbrennt. Den Effekt des ein-
        gebrannten Bildes erkennt man daran, da  auf  dem  abgeschalteten
        Bildschirm  immer  noch  ein Bild zu sehen ist. Dieser Schaden ist
        irreversibel und ist bei teueren  Farbmonitoren  besonders  rger-
        lich.

          Das  Einbrennen  des  Bildes entsteht dadurch, da bestndig die
        gleichen Stellen der  Phosphorschicht  mit  Elektonen  bombardiert
        werden. Durch den Elektronenbeschu wird die Phosphorschicht nicht
        nur zum Leuchten angeregt, sondern auch erwrmt. Durch zu  starken
        und  andauernden  Elektronenbeschu kann daher die Phosphorschicht
        verbrannt werden, so da  die  verbleibenden  Rckstnde  auch  im
        ausgeschalteten Zustand sichtbar sind.

          VGASAVE  versucht  dem entgegenzuwirken, indem es nach einer be-
        stimmten Zeit die Helligkeit des Bildes herabsetzt. Da  die  bli-
        chen  Screen-Saver  dem  Benutzer einen gewissen Schreck einjagen,
        vermindert VGASAVE die Helligkeit langsam  in  56  Stufen  bis  zu
        einem  Bruchteil  der ursprnglichen Helligkeit. Die Maus-Sportler
        stehen somit nicht mehr pltzlich im Dunkeln. Um dem Monitor  auch
        nach  lngerer  Zeit noch Abwechslung zu bieten, werden die Farben
        zyklisch verndert.[1]

          Bei  Monitoren,  die  das  Wegfallen der Synchronisationssignale
        erkennen (VESA DPMS)  und  sich  daraufhin  abschalten,  kann  man
        vorgehen; hierzu aktiviert man den VESA Modus.

          VGASAVE  arbeitet mit hardware-kompatiblen VGA-Adaptern; der In-
        halt des Bildspeichers wird nicht verndert. Die Manipulation  der
        Farben  erfolgt  ber  den  Video  DAC.  Es werden alle 256 Farben
        manipuliert.

          Das Bild erscheint wieder, wenn eine Taste gedrckt  wird,  oder
        wenn Mausaktivitten[2] erkannt werden. Die Taste wird  nicht  aus
        dem Eingabestrom entfernt.

          VGASAVE  "stiehlt"  sich  nur wenig CPU-Zeit, und lt Programme
        mit nur wenig Geschwindigkeitseinbuen weiterlaufen. Im  Gegensatz
        ______________________________

        [1]  Diese Lsung ist natrlich viel aufwendiger als das  einfache
             Dunkelschalten  des  Bildes, aber es soll fr die Lebensdauer
             der Elektronenkanone besser sein, wenn das  Bild  nicht  voll
             abgeschaltet wird.

        [2]  Wenn  Sie  eine nicht Microsoft kompatible Maus haben, die an
             den Zuleitungen Ihres Rechners knabbert, so ist  es  mglich,
             da das Bild nicht wiederhergestellt werden kann. Sie sollten
             in diesem Fall einen Maus(ver)treiber einsetzen.


                                                     Revision Z vom 5. Juni 1995
ii                                                               VGASAVE.COM 3.6


        dazu  stehen die aufwendigeren, task-umschaltenden Bildschirmscho-
        ner, die die volle Rechenleistung benutzen.

          Das Format fr den Aufruf von VGASAVE lautet:

             VGASAVE [min] [B] [V] [-]

        Dabei handelt es sich bei "[min]" um einen  optionalen  Parameter,
        der  die  Anzahl der Minuten angibt, nach denen sich das Bild ver-
        dunkeln soll. Die Voreinstellung ist 5 Minuten.  Der  Bereich  fr
        min  liegt zwischen 1 und 30. Wenn VGASAVE bereits installiert und
        aktiv ist, dann wird die neue Ausschaltzeit an das residente  Pro-
        gramm bergeben.

          Wird  der  Wert  Null  angegeben,  so wird VGASAVE abgeschaltet.
        Dabei bleibt es jedoch im Speicher und verndert keine  Interrupt-
        vektoren.  Mit  einem  von  Null  verschiedenen  Wert wird VGASAVE
        wieder eingeschaltet.

          Der Buchstabe B schaltet das sogenannte Hardware  Blanking  ein,
        das  auch bei den Truecolor Modi der modernen VGA Karten den Bild-
        schirm schtzt. Diese Variante stiehlt dem Rechner kaum  noch  CPU
        Leistung.  Diese Einstellung kann einem resident geladenen VGASAVE
        bergeben werden. Bei  dieser  Einstellung  werden  die  Paletten-
        register in keiner Weise benutzt.

          Der  VESA  Modus wird durch Eingabe von V aktiviert. Nach Ablauf
        der angegebenen Zeit wird dem Monitor "VESA Suspend" signalisiert,
        so  da dieser auf einen stromsparenden Betrieb umschaltet.[3] Bei
        dieser  Betriebsart  liefert  die  Grafikkarte  keine   vertikalen
        Synchronisationsimpulse  mehr.  Bei  Bildschirmen,  die DPMS nicht
        untersttzen, kann dies zu Beschdigungen des Gertes fhren!

          Wird  der  Parameter  "-"  angegeben,  dann  wird  eine  bereits
        geladene  Version  von VGASAVE aus dem Speicher entfernt. Dies ge-
        schieht jedoch nur, wenn dies gefahrlos  mglich  ist.  Interrupt-
        vektoren werden auf ihre ursprnglichen Werte zurckgestellt.

          Ab  Version 3.4 kann VGASAVE den Bildschirm durch Tastatureinga-
        ben schnell verdunkeln. Dieser Modus wurde auf spezielle  Anregung
        eines  Benutzers  eingebaut und ist fr allzu neugierige Zuschauer
        gedacht. Wenn der Bildschirm auf diese  Weise  abgedunkelt  worden
        ist, werden normale Maus- und Tastaturaktivitten ignoriert.

                  Einschalten:    Beide Umschalttasten (Shift) und
                                  Steuerung (Control)
                  Ausschalten:    Obige Tasten plus zustzlich Alt


          VGASAVE  erkennt  das  Starten und Beenden des erweiterten Modus
        von Microsoft Windows; VGASAVE wechselt in den  inaktiven  Zustand
        solange  Windows  aktiv  ist.  Nach der Beendigung von Windows ak-
        tiviert sich  VGASAVE  wieder.  Das  Programm  kann  nur  ge-  und
        ______________________________

        [3]  Viele  moderne  Bildschirme  schalten nach einer festlegbaren
             Zeit von "Suspend" auf "Off", wodurch noch mehr Strom gespart
             wird.  Ein  zu  hufiges  Ein-  und Ausschalten sollte jedoch
             zugunsten einer hheren Lebensdauer der  Bildrhre  vermieden
             werden.


Revision Z vom 5. Juni 1995                                                     
VGASAVE.COM 3.6                                                              iii


        entladen werden wenn Windows nicht aktiv ist.

          Soll VGASAVE in der AUTOEXEC.BAT Datei verwendet werden, so kann
        die Zeile

             VGASAVE [n] >NUL

        verwendet werden um die Bildschirmausgabe zu unterdrcken. VGASAVE
        mu  nach  dem Tastaturtreiber geladen werden, weil dieser bereits
        vorhandene Abfrageroutinen fr Tastendrcke ersetzt.

        Meldungen


          VGA Smart Screen-Saver  $Revision: X.Y $
          Copyright (c) 1990 - 1995 by Ulrich Windl
          Time-out = ZZ minutes, sent to resident Screen-Saver (MPX=XXH)

        Die Abschaltzeit  wurde  erfolgreich  an  das  residente  Programm
        bergeben.  Die Kommunikation erfolgte ber den angegebenen Multi-
        plex-Interrupt (MPX).

                          Using fast hardware blanking.

        Das Programm wird den Bildschirm  schlagartig  dunkelschalten  und
        die Palette nicht verndern.

                Signal for "VESA Suspend" will be sent to monitor

        Das  Programm  lt  die  VGA-Karte  ein  spezielles Signal an den
        Monitor senden, so da dieser in den Stromsparmodus schaltet.

               ..., Microsoft Windows detected -- request ignored

        Microsoft Windows ist zur Zeit  aktiv;  das  Programm  kann  weder
        geladen noch eingestellt werden.

                 ..., resident Screen-Saver not ready (MPX=XXH)

        Entweder  wurde  das Programm abgeschaltet, oder eine inkompatible
        Version eines anderen Programms befindet sich im Speicher.

                    ..., installing resident part (MPX=XXH)

        Das Programm bleibt resident im Speicher, weil es sich selbst noch
        nicht  im  Speicher  entdeckt  hat.  Auf  diese Weise wird VGASAVE
        aktiv.

                 ..., cannot install: no free MPX number found

        Das Programm konnte sich  nicht  installieren,  weil  kein  freier
        Interruptvektor  gefunden  wurde.  Das  Programm konnte auch keine
        kompatible Version von sich selbst im Speicher finden.

                      ..., resident part removed (MPX=XXH)

        VGASAVE wurde erfolgreich aus dem Speicher  entfernt.  Dazu  wurde
        das  Programm  ber  den angegebenen Multiplex-Interrupt angespro-
        chen.



                                                     Revision Z vom 5. Juni 1995
iv                                                               VGASAVE.COM 3.6


                    ..., unload not possible (E#) (MPX=XXH)

        Das Programm konnte nicht aus dem Speicher  entfernt  werden;  '#'
        ist  eine  Zahl,  die  einen  Hinweis auf die Ursache des Problems
        liefert.

                               Invalid command line

        Diese Fehlermeldung wird ausgegeben wenn in der Kommandozeile  un-
        gltige Zeichen angegeben wurden.

        Die Multiplex Interrupt Schnittstelle


        VGASAVE  benutzt  derzeitig eine Multiplex-Nummer zwischen D5H und
        DFH; diese Nummer untersttzt fnf Funktionen:[4]

        #0  In  Register AL wird FFH zurckgeliefert wenn das Programm re-
            sident geladen ist.

        #1  Liefert in Register DX eine Protokoll Versionsmaske (8000H+n),
            in  Register  BL  einen Wert ungleich Null wenn der Bildschirm
            gerade abgedunkelt ist, in BH einen Wert ungleich  Null,  wenn
            Windows  aktiv  ist, in Register CX den eingestellten Verzge-
            rungswert, und in Register AL den Wert FFH.

        #2  bernimmt den in Register CX  angegebenen  Wert  als  Verzge-
            rungswert.[5] Bei Erfolg steht im Register AL der Wert FFH.

        #3  Liefert  Informationen ber die verwendeten Interrupts zurck.
            Beim Aufruf steht im Register BL die Interruptnummer. Bei  der
            Rckkehr  steht in AL bei Erfolg 0FFH. Die Registerpaare ES:BX
            und DX:CX  enthalten  den  ursprnglichen  und  den  aktuellen
            Vektor; beim Mausinterrupt gibt AH noch dessen Nummer an.[6]

        #4  Mit  dieser  Funktion  kann das Hardware Blanking Flag gelesen
            und gendert werden.[7] Zum ndern  des  Flags  ldt  man  das
            Register  BL  mit dem gewnschten Wert (0, 1 oder 2) und setzt
            das Register BH auf 0FFH. Zum Lesen setzt man Register BH  auf
            den  Wert 0. Nach Rckkehr steht bei Erfolg im Register AL der
            Wert 0FFH, und in BL steht der Wert des Flags vor dem  Aufruf.
            Der Wert 2 whlt VESA DPMS aus.

        #5  Mit  dieser  Funktion kann das Immediate Blanking Flag gelesen
            und gendert werden.[8] Zum ndern  des  Flags  ldt  man  das
            Register  BL mit dem gewnschten Wert (0 oder 1) und setzt das
            Register BH auf 0FFH. Zum Lesen setzt man Register BH auf  den
            Wert 0. Nach Rckkehr steht bei Erfolg im Register AL der Wert
            0FFH, und in BL steht der Wert des Flags vor dem Aufruf.

        Exit-Codes (ERRORLEVEL)


        Je nach Operation und  deren  Ausgang  gibt  VGASAVE  verschiedene
        Werte an das Betriebssystem zurck:

        0   Erfolgreiche  Operation:  Programm  geladen.  Programm aus dem
            Speicher entfernt.




Revision Z vom 5. Juni 1995                                                     
VGASAVE.COM 3.6                                                                v


        1   Programm bereits resident: Einstellung bergeben.

        2   Operation ist momentan nicht  mglich:  Microsoft-Windows  ist
            aktiv.  Residente  Version ist nicht kompatibel. Interruptvek-
            toren wurden verndert.

        4   Installation ist nicht mglich: Alle Multiplex-Interrupts sind
            besetzt.

        Kompatibilitt


        Ab  Version  3.6  ist  die  Auswahl  von  DPMS  nach VESA Standard
        mglich.  ltere  residente  Versionen  interpretieren  die  VESA-
        Betriebsart als gewhnliches Dunkelschalten.

          Das Hardware Blanking wird erst ab Version 3.3 untersttzt. Sind
        ltere oder nicht kompatible Versionen resident geladen,  so  wird
        das  in  der  Kommandozeile  angeforderte Blanking Verhalten nicht
        bergeben.

          Versionen vor 3.1 knnen nicht aus dem Speicher entfernt werden,
        da  bentigte  Funktionen fehlen. Versionen vor 2.2 knnen bereits
        residente sptere Versionen nicht erkennen und  installieren  sich
        daher  neu. Versionen vor 3.1 knnen den residenten Teil nicht aus
        dem Speicher entfernen, da ihnen die bentigten Funktionen fehlen.

          Versionen  vor  2.2  knnen  bereits  residente  Programme   nur
        erkennen, wenn der Mausinterrupt unverndert geblieben ist.

          Serielle  Muse  werden  erfolgreich ab Version 3.1 untersttzt;
        dabei wird ein Maustreiber ab Version 6.0 vorausgesetzt.

        Bugs (die berhmten)


        Beim Wiederherstellen der Farben  werden  die  zum  Zeitpunkt  des
        Dunkelschaltens  aktiven  Farben  zurckgeschrieben. Wenn ein Pro-
        gramm diese zwischenzeitlich verndert hat,  knnen  die  falschen
        Farben erscheinen.[9] Als Abhilfe kann Hardware Blanking verwendet
        ______________________________

        [4]  Die hier gemachten Angaben sind  nicht  zur  Benutzung  durch
             Fremdprogramme  gedacht; sie unterliegen einer stndigen Ver-
             nderung. Kompatibilitt zu  spteren  Versionen  kann  nicht
             gewhrleistet werden.

        [5]  Beliebige  Werte  sind  nicht erlaubt; insbesondere sind alle
             Werte im Bereich von 0 bis 444H fr spezielle Funktionen  re-
             serviert.

        [6]  Verfgbar seit Version 3.1, bzw. MPX Version 1.

        [7]  Verfgbar seit Version 3.3, bzw. MPX Version 2.

        [8]  Verfgbar seit Version 3.4, bzw. MPX Version 3.

        [9]  Dem  Autor  sind  bisher  nur  wenige  Programme bekannt, die
             fortwhrend die Farben wechseln:  VGAPAL  (nach  dem  Start),
             sowie einige Spiele


                                                     Revision Z vom 5. Juni 1995
vi                                                               VGASAVE.COM 3.6


        werden.

          Bei MS-Windows 3.0 (Maustreiber Version 7.X)  wurde  beobachtet,
        da  beim Verlassen die PS/2 Maus so umprogrammiert wurde, da sie
        keine Interrupts mehr erzeugt. Durch Starten einer mausgesteuerten
        Anwendung konnte das Problem behoben werden.

          Manche   Programme   (Simulationen,  Spiele)  programmieren  den
        Systemtimer so um, da er viel schneller arbeitet. In diesem  Fall
        arbeitet  auch  VGASAVE  viel schneller: Der Bildschirm verdunkelt
        sich schon nach  wenigen  Sekunden.  In  diesem  Fall  sollte  man
        VGASAVE vorher deaktivieren oder die Zeitkonstante erhhen.






        Revision    Datum        Kommentar
        --------    -----        ---------

        A    21. September 1990  Es scheint zu funktionieren...
        B    26. September 1990  Installiert sich nur einmal
        C     18. Oktober 1990   PS/2 Maus wird untersttzt
        D     24. Oktober 1990   Standard-Handle werden geschlossen
        E     17. November 1990  Mausbewegungen starten Zhler neu
        F     15. Februar 1991   Lt sich ein/aus schalten
        G       9. April 1991    Timerroutine vorbeugend gendert
        H        2. Mai 1991     Interrupt Sharing nach IBM
        I    17. September 1991  langsames Abdunkeln
        J     17. Oktober 1991   Versionsverwaltung durch RCS
        K     13. November 1991  Mgliche Probleme mit Tastatur
                                 beseitigt
        L      20. Januar 1992   INT 2FH und MS-Windows Untersttzung
        M      21. Januar 1992   Beseitigung kleiner Fehler
        N     20. Februar 1992   Allgemeine Mausuntersttzung
        O       14. Juli 1992    Automatische Interruptwahl
        P      25. April 1993    Fehlerbeseitigung bei Interruptwahl
        Q       27. Juni 1993    Geschachtelte Interrupts, Korrekturen
        R     12. Dezember 1993  Untersttzung fr Muse an serieller
                                 Schnittstelle mit Microsoft Treiber
        S     31. Dezember 1993  Korrektur zu Version 2.8
        T      16. Januar 1994   Funktioniert mit serieller Maus
        U      28. Januar 1994   Entfernen aus dem Speicher mglich
        V      31. Januar 1994   Entfernen installiert nie
        W       3. April 1994    Hardware Blanking eingebaut
        X      14. August 1994   Aktivierung ber Tastatur mglich
        Y      2. Oktober 1994   Verzgerung bei Tastatur beseitigt
        Z       5. Juni 1995     "VESA Suspend" Steuerung eingebaut




        Anregungen und Verbesserungsvorschlge hre ich stets gerne:








Revision Z vom 5. Juni 1995                                                     
VGASAVE.COM 3.6                                                              vii


                    Ulrich Windl
                    Diplom-Informatiker (FH)
                    Alte Regensburger Strae 11a
                    D-93149 Nittenau

                    "Und die Moral von der Geschicht:
                     Assembler Programmieren bringt es nicht!"























































                                                     Revision Z vom 5. Juni 1995
