Grabben (oder auch Capturen) bedeutet das "einfangen" des Bildschirminhalts (oder eines Teils davon). Dieser kann dann entweder in eine Datei gespeichert oder im Speicher verschoben werden, eventuell auch innerhalb des Video-RAMs oder wieder zurück in diesen. Ernsthaftes Grabben greift sehr weit in das System ein und ist deshalb auch nur in Assembler möglich . Im allgemeinen arbeitet man Interrupt-gesteuert, das heißt man installiert seine Capture-Routine auf einen Interrupt (der natürlich frei sein muß, im Zweifelsfall vorher überprüfen !). Da meistens auf Tastendruck gegrabbt werden soll, hängt man sich auch in den Tastaturinterrupt ein, es sind aber auch andere Auslöser möglich. Wird die Routine nun aufgerufen, muß sie als erstes das System blockieren.
Es empfiehlt sich auch, weitere Interrupts für die Dauer des Grabbens zu sperren, hier ist natürlich ein gutes Timing notwendig. Nun gilt es zuerst, den Status der Grafikhardware zu bestimmen. Dazu stellt man den Grafikmodus fest und liest dann unbedingt (!) auch die Register aus! Viele Amateure scheitern an Non-Standard-Modes, wie zum Beispiel Mode X, was im besten Fall "Müll" zurückliefert und im schlimmsten Fall das System zum Absturz bringt. Nachdem man sich nun (hoffentlich...
) vollkommen klar ist, was man vor sich hat (natürlich, einen Computer...; aber ich meinte die Grafik-Situation), kann man beginnen, in Abhängigkeit vom ermittelten Grafikstatus die Daten zurückzulesen. Je nach Sinn und Zweck des Ganzen braucht man diese jetzt nur noch für spätere Verwendung z. B.
in den XMS zu kopieren oder fürs Abspeichern im entsprechenden Grafikformat zu verschlüsseln und auf die Harddisk zu schreiben. Letzteres kann auch bereits im Hintergrund geschehen, vor allem unter Windows. Man sollte auch unbedingt vor (!!!) dem Capturen bestimmen, ob Windows aktiv ist, und das dann berücksichtigen! Nachdem das eigentliche Grabben fertig ist, braucht man dann nur noch die Interrupts wieder freizuschalten und das System wieder freizugeben, nachdem man es wieder in den Ursprungszustand (!!!) versetzt hat (Prozessorregister, ...)!
|