Anspruchsvolle Bildschirmmasken sind das A und O einer jeden hochwertigen PC-Anwendung. Warum nicht auch in Stapeljobs? Drei Programme werden Ihnen die Arbeit erleichtern: SNAPSHOT- und LOADPIC.COM sowie MAKEPIC.BAT.
Wenn beim Aufruf kein Parameter angegeben ist, ersetzt SNAPSHOT die per [PrtScr]- bzw. [Druck]-Taste aktivierbare Hardcopy-Routine (Interrupt 5) durch ein einfaches Programm, das den aktuellen Bildschirminhalt in einen Puffer im RAM kopiert. Auf diese Weise können Sie selbst komplizierteste Bildschirm-Masken in beliebigen Anwendungen mit den dort vorhandenen komfortablen Befehlen erzeugen. Gefällt Ihnen die Bildschirmausgabe (nicht unbedingt die selbstgemachte), genügt ein Druck auf die »Hardcopy«-Taste – und die Maske ist gesichert. Anschließend kehren Sie auf die DOS-Ebene zurück und und speichern den Puffer-Inhalt mit »SNAPSHOT Datei« in eine Datei. Perfektionisten werden jetzt verwundert fragen, warum SNAPSHOT zunächst ins RAM und erst beim zweiten Aufruf in eine Datei speichert. Die Antwort: Wir gehen einen Kompromiß zwischen Tip und DOS ein. Weil das Betriebssystem DOS ja bekanntlich nicht mulitasking-fähig ist, erlaubt es – von wenigen Ausnahmen abgesehen – nur eine Operation zu einem Zeitpunkt. Ein speicherresidentes Programm hat daher das Nachsehen, weil zu dem Zeitpunkt, an dem es in Aktion treten soll, bereits z.B. eine Dateioperation im Gange sein kann. SNAPSHOT darauf einzustellen, wäre nur mit erhöhtem Aufwand möglich: Das Listing würde um ein Vielfaches länger werden – und das alles nur wegen eines Bildschirms…
Wenn Sie alle Einzelmasken in verschiedenen Dateien gesammelt haben, können Sie mit MAKEPIC.BAT ein Auswahl-Programm erzeugen, das bis zu 16 jeweils 4000 Byte großen Bildschirm-Masken mit einem Lade-Modul zusammenfügt. Die Beschränkung auf 16 Masken resultiert aus der Tatsache, daß COM-Programme – das Auswahl-Programm ist eins – nur 64 KByte groß sein dürfen (16 * 4000 = 64000). MAKEPIC.BAT arbeitet direkt mit LOADPIC.COM zusammen. Der COPY-Befehl erlaubt es, über » + « Dateien aneinanderzufügen. Durch die Option »/B« behandelt er alle Dateien als Binärdateien, sodaß Sie auch bequem Programme verketten können.
LOADPIC.COM setzt an seinem eigenen Programmende die Daten der Bilder voraus. Mit MAKEPIC.BAT lassen sich diese direkt, also ohne Umweg über »DB …« oder Linker, in das zu generierende Auswahl-Programm integrieren. Deshalb ergibt auch der Aufruf von LOADPIC ohne vorherige Behandlung mit SNAPSHOT und MAKEPIC keinen Sinn, weil dann die Maskendaten fehlen. LOADPIC ist also nur das Lade-Modul, das durch MAKEPIC.BAT an den Anfang des zu generierenden Auswahl-Programms plaziert wird.
Ein Aufruf des entstandenen Auswahl-Programms mit einem Parameter (A bis P) ermittelt das Startoffset der zu ladenden Maske und kopiert den Inhalt in den Bildschirmspeicher. Somit bringt das Programm die Maske in Sekundenbruchteilen auf den Bildschirm. Um sich die Arbeit beim Auswerten des Parameters zu erleichtern, entnimmt das Programm den Parameter aus dem ersten Standard-Dateisteuerblock (FCB) an Offset 5Ch des Program-Segment-Prefix‘ (PSP) und rechnet diesen Wert in das Offset der Bilderdaten um.
Das »Programm-Paket« funktioniert nur im 80×25-Zeichen-Text-Modus und benutzt stets die erste Bildschirmseite. Auf alten CGA-Karten ist durch den beschleunigten Zugriff auf den Bildschirmspeicher ein leichter »Schneefall« möglich. In manchen Fällen empfiehlt es sich, die Masken auf mehrere Lade-Programme aufzuteilen – im Extremfall 1 pro Programm – was den Ladevorgang beschleunigt. Das gilt speziell für Auswahl-Programme, die überwiegend auf Diskettenlaufwerken laufen sollen. Anstelle der je nach Bedarf bis 64 KByte müssen nur die tatsächlich benötigten 4000 Byte plus Ladeprogramm in den Arbeitsspeicher geladen werden.
In der folgenden Liste haben wir die notwendigen Schritte zur Handhabung unseres Maskengenerators nochmals zusammengefaßt:
- SNAPSHOT installieren.
- Beliebige Anwendung aufrufen.
- Maske erzeugen bzw. wählen.
- [PrtScr]- bzw. [Druck]-Taste drücken. (Bildschirmmaske wird im RAM festgehalten)
- Anwendung verlassen.
- Mit »SNAPSHOT MASKE_?.PIC« Maske aus dem RAM in in die Datei MASKE_?.PIC speichern. Je nach Stand des Vorgangs anstelle des Fragezeichens den Buchstaben A, B … P verwenden.
- Schritte 2 bis 6 maximal 16mal – für jede gewünschte Bildschirmmaske (MASKE_A.PIC … MASKE_P.PIC) einmal – wiederholen.
- Mit »MAKEPIC AUSWAHL MASKE_A.PIC … MASKE_P« Auswahl-Programm für die »Menüpunkte« A bis P generieren.
- Mit »AUSWAHL ?« die gewünschte Bildschirmmaske (? = A … P) aufrufen.
Name: | SNAPSHOT.DEB |
Funktion: | Sichert Bildschirm-Masken in eine Datei. |
Übersetzung: | DEBUG <SNAPSHOT.DEB |
Prüfsumme: | 5BEA |
Anwendung: | 1. SNAPSHOT (ohne Parameter): (Programm wird installiert)2. [PrtScr]- bzw. [Druck]-Taste (sichert den Bildschirminhalt ins RAM) 3. SNAPSHOT Datei (RAM-Inhalt wird in der angegebenen Datei gespeichert)
4. Weiterverarbeitung mit MAKEPIC.BAT |
Einschränkungen: | Bei alten CGA-Karten kann es beim Abspeichern »Schnee« geben. Das Programm läßt sich nicht disaktivieren. Drucker-Hardcopies sind nicht mehr möglich. Jeder Druck auf die [PrtScr]- bzw. [Druck]-Taste überschreibt die alte Bildschirm-Maske im RAM. Anschließend ist die Rückkehr auf die Systemebene nötig, um den RAM-Inhalt in eine Datei zu kopieren. Verwendet immer die erste Bildschirmseite. Sämtliche Einschränkungen lassen sich jedoch vertreten, da SNAPSHOT nur für endgültige Bildschirm-Masken verwendet werden soll. |
A MOV BL,[80] ;100 AND BX,FF ;104 JNZ 167 ;108 MOV DX,11E ;10A MOV AX,2505 ;10D INT 21 ;110 MOV DX,151 ;112 MOV AH,9 ;115 INT 21 ;117 MOV DX,10F1 ;119 INT 27 ;11C PUSH DS ;11E PUSH BX ;11F XOR BX,BX ;120 MOV DS,BX ;122 MOV BL,[410] ;124 AND BL,3 ;128 CMP BL,3 ;12B MOV BX,B000 ;12E JZ 135 ;131 MOV BH,B8 ;133 MOV DS,BX ;135 MOV BX,F9E ;137 PUSH [BX] ;13A CS:POP [BX+151] ;13C SUB BX,2 ;141 JNB 13A ;144 POP BX ;146 POP DS ;147 IRET ;148 DB "Fehler.$SNAPSHOT" DB " installiert.$" MOV 81[BX],BH ;167 MOV DX,82 ;16B XOR CX,CX ;16E MOV AH,3C ;170 CALL 185 ;172 MOV BX,AX ;175 MOV DS,CX ;177 MOV DS,[16] ;179 MOV DX,151 ;17D MOV CX,FA0 ;180 MOV AH,40 ;183 INT 21 ;185 JB 18A ;187 RET ;189 MOV DX,149 ;18A MOV AH,9 ;18D INT 21 ;18F INT 20 ;191 RCX 93 NSNAPSHOT.COM W Q
Name: | MAKEPIC.BAT |
Funktion: | Erzeugt aus bis zu 16 Bilddateien ein Auswahl-Programm. |
Übersetzung: | ./. |
Anwendung: | MAKEPIC Auswahl-Programm Maske-A […] [Maske-P]Auswahl-Programm = Name des zu generierenden Masken- Auswahl-Programms ohne Extension (.COM) Maske-A … Maske-P = jeweils mit SNAPSHOT gesicherte
Bildschirm-Masken |
Einschränkungen: | Die Anzahl der Bildschirm-Masken ist auf 16 beschränkt,weil COM-Programme nur 64 KByte groß sein dürfen.
LOADPIC.COM muß im aktuellen Verzeichnis stehen. |
@ECHO OFF SET DATEI=%1.COM COPY LOADPIC.COM %DATEI% :SCHLEIFE COPY %DATEI%/B+%2/B SHIFT IF NOT %2!==! GOTO SCHLEIFE SET DATEI=
Name: | LOADPIC.DEB |
Funktion: | Wird von MAKEPIC.BAT als Lade-Modul für das zu generierende Auswahl-Programm verwendet. |
Übersetzung: | DEBUG <LOADPIC.DEB |
Prüfsumme: | A809 |
Anwendung: | LOADPIC CHR CHR = Bildschirm-Maske (A … P) |
Einschränkungen: | LOADPIC sollte nicht eigenständig verwendet werden.Das Programm wird von MAKEPIC.BAT verwendet und zusammen mit den Maskendaten in das Auswahlprogramm kopiert. Die »Anwendung« bezieht sich demnach auf dieses Programm, dessen Namen Sie beim Aufruf von MAKEPIC.BAT frei wählen
können. |
A MOV CX,FA0 ;100 MOV AX,[5D] ;103 MUL CX ;106 MOV SI,AX ;108 ADD SI,98C ;10A POP ES ;10E ES:MOV DI,[44E] ;10F ES:MOV AL,[410] ;114 AND AL,3 ;118 CMP AL,3 ;11A JZ 122 ;11C ADD DI,8000 ;11E MOV AX,B000 ;122 MOV ES,AX ;125 CLD ;127 REPZ MOVSB ;128 INT 20 ;12A RCX 2C NLOADPIC.COM W Q
Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot