home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
assemblr
/
tutorial
/
asmlehrg
/
schnecke.doc
< prev
Wrap
Text File
|
1993-07-29
|
4KB
|
72 lines
Kurzbeschreibung:
Name: Schnecke.asm
Sprache: Assembler MASM 4.0 und 5.0, TASM
Autor: Jürgen Altfeld
Grafikkarte: Jede
Funktion: Verlangsamen und Anhalten von Programmen jeder Art
Besonderheiten: Führt bei manchen Programmen zum Absturz. Ganz wenige
Programme stürzen bei der Pausen-Funktion ab.
Das Programm bremst die Arbeitsgeschwindigkeit eines PC XT/AT oder
kompatiblen. Dabei läßt sich der Grad der Verzögerung jederzeit vom
Anwender einstellen.
Bei praktisch jedem PC der AT-Klasse, aber auch bei den mit 8 MHZ oder
schneller getakteten Maschinen, ergibt sich oft das Problem, daß Programme
einfach zu schnell laufen. Meist tritt dieses Problem bei Spielen auf,
welche für XT's mit 4,77 MHZ und 8088-Prozessor geschrieben wurden. Aber
auch MS-DOS Befehle wie TYPE oder DIR arbeiten so schnell, daß ein
vernünftiges Arbeiten manchmal nicht möglich ist.
Genauso ist die normale Arbeitsgeschwindigkeit eines Computers für Kinder
zu schnell.
Nicht zuletzt lassen sich auch (Action-) Spiele viel besser spielen, wenn
man sie verlangsamt.
Bei manchen Programmen ist es außerdem wünschenswert, nur an bestimmten
Stellen des Programms den Rechner zu bremsen (z. B. bei Echtzeitsimulationen,
komplexen Berechnungen etc.).
All diese Funktionen bietet Schnecke. Nach dem Starten gibt Schnecke eine
eine kurze Meldung aus und bleibt resistent im Arbeitsspeicher. Es belegt
nur ca. 400 Byte und läßt sich durch einen Warm- (CTRL-ALT-DEL) oder
Kaltstart (Aus- und Einschalten) wieder entfernen. Der Grad der Verzögerung
wird durch gleichzeitiges Drücken der ALT-Taste und einer Ziffern-Taste
eingestellt. Die Verzögerungsdauer liegt zwischen minimal (ALT-1) und
rießig (ALT-9). Durch Drücken von ALT-0 (ALT und Null) wird die Verzögerung
wieder ausgeschaltet. Ist die Verzögerung so groß, daß der Rechner nur
noch damit beschäftigt ist, die Verzögerungsschleifen zu durchlaufen, so
wird das momentan laufende Programm unterbrochen (Pause-Funktion, normaler-
weise ALT-9). Durch Anwählen eines anderen Verzögerungswertes (z. B. ALT-4)
oder ausschalten der Verzögerung (ALT-0) wird das unterbrochene Programm
wieder fortgesetzt.
Schnecke arbeitet auch in Verbindung mit anderen speicherresistenten
Programmen (z. B. CGA-Emulatoren), sollte jedoch immer als letztes Programm
installiert werden. Dadurch vermeidet man Inkompatiblitäten.
Probleme ergeben sich lediglich bei Programmen, die den Zeitgeberbaustein
8253 umprogrammieren oder die Interrupts permanent sperren.
Schnecke arbeitet mit ca. 90% aller Public-Domain-Programmen bzw. 60-70%
aller kommerziellen Programme einwandfrei. Bei einigen dieser Programmen
(max. 5-10%) führt die Pausenfunktion jedoch zum Absturz.
Nach dem Aufruf von Schnecke biegt es die Interrupt-Vektoren 8 (Systemzeit-
geber = Timer) und 9 (Tastatur) des BIOS auf eigene Routinen um und erklärt
sich selbst als speicherresistent. Bei jedem Tastendruck wird nun geprüft,
ob eine Hotkey-Taste gedrückt wurde. Wenn dies der Fall ist, werden
entsprechende Werte für die Verzögerungsroutine gesetzt (Dauer der
Verzögerung, Verzögerung ein/aus). Die Verzögerungsroutine selbst wird
18,2 mal pro Sekunde durchlaufen. Sie ruft zuerst die ursprüngliche
Interrupt-Routine des Interrupts 8 auf, dann den Interrupt 1Ch (Timer).
Danach führt sie die Verzögerungsschleife aus, wenn diese aktiviert worden
ist. Die Verzögerungsroutine verwendet den Interrupt 8 anstelle des
Interrupts 1Ch deshalb, weil manche Spiele den Interrupt 1Ch für eigene
Zwecke benötigen und dadurch Schnecke deaktiviert werden könnte.
Sollten Sie sich zu den glücklichen Besitzern eines besonders schnellen
Rechners zählen (40 MHZ 80486 AT???), so können Sie die Dauer der
Verzögerungsschleife zusätzlich erhöhen. Sie finden den Wert im
Assembler-Listing beim Label "GO0". Er beträgt standardmäßig 100.
Bei AT's empfiehlt sich ein Wert zwischen 200 und 800.
Bitte vergessen Sie nicht, daß Programm nach dem erfolgreichen Assemblieren
und Linken in eine COM-Datei umzuwandeln, es läuft sonst nicht einwandfrei.
Dies wird übrigens mit dem MS-DOS-Dienstprogramm EXE2BIN durchgeführt.