Fenster in DOS öffnen

Eine ausgeklügelte Fenstertechnik haben wir zwar noch nicht parat – Eindruck können Sie jedoch mit dem folgenden Programm genauso schinden: WINDOW.DEB konstruiert in Sekundenbruchteilen ein Rechteck mit beliebiger Rahmenform. Das Programm beginnt den gewählten Rahmen links über der aktuellen Cursorposition, die Sie zuvor bei Bedarf mit LOCATE.DEB auf die gewünschten Koordinaten setzen können. Die Position bleibt erhalten, sodaß der folgende Ausgabebefehl, z. B. ECHO oder SAY, genau im Fenster zu schreiben beginnt. Das folgende Beispielprogramm, zeichnet in der Mitte des Bildschirms eine Box mit doppeltem Rahmen. Die Hintergrundfarbe wird blau, die Rahmenfarbe hellgrün. Danach landet ein mischfarbiger Beispieltext in der linken oberen Ecke des Rechtecks:

@ECHO OFF
LOCATE 10,20
WINDOW B:5,40,ig,b
COLOR BG,B
ECHO Das ist eine Beispielbox...
Name: WINDOW.DEB
Funktion: Konstruiert ein Rechteck mit beliebiger Rahmenform und -farbe.
Übersetzung: DEBUG <WINDOW.DEB
Prüfsumme: 5667
Anwendung: WINDOW T:H,BR[VG,HG]T = Typ: A = ASCII (Rahmen ohne erweiterte Grafikzeichen), C = leer (für einfache Farbbox ohne Rahmen) D = doppelt, E = einfach B oder F = gemischt
H = Höhe, BR = Breite (Innenmaße) VG = Vordergrundfarbe (r, g, b, i, s) HG = Hintergrundfarbe (r, g, b, ?, s) r = rot, g = grün, b = blau, i = intensiv, ? = blinken s = schwarz (Dummy)

Mischfarben sind möglich.

Einschränkungen: ./.
A
CLD                 ;100
MOV AH,F            ;101
INT 10              ;103
MOV AH,3            ;105
INT 10              ;107
PUSH DX             ;109
SUB DX,100          ;10A 
DEC DL              ;10E
JNS 114             ;110
MOV DL,0            ;112
MOV SI,84           ;114
CALL 187            ;117
MOV [80],AH         ;11A
CALL 187            ;11E
MOV [169],AH        ;121
CMP By[SI-1],D      ;125
JZ 13D              ;129
CALL 193            ;12B
MOV BL,AH           ;12E
CALL 193            ;130
MOV AL,10           ;133
MUL AH              ;135
OR BL,AL            ;137
DEC By[181]         ;139
MOV AL,9            ;13D
MUL By[5C]          ;13F
MOV SI,1AE          ;143
ADD SI,AX           ;146
CALL 162            ;148
CALL 162            ;14B
DEC By[80]          ;14E
JZ 159              ;152
SUB SI,3            ;154
JMP 14B             ;157
CALL 162            ;159
POP DX              ;15C
MOV AH,2            ;15D
INT 10              ;15F
RET                 ;161
PUSH DX             ;162
LODSB               ;163
CALL 176            ;164
LODSB               ;167
MOV CX,0            ;168
CALL 179            ;16B
LODSB               ;16E
CALL 176            ;16F
POP DX              ;172
INC DH              ;173
RET                 ;175
MOV CX,1            ;176
MOV [180],AL        ;179
CALL 15D            ;17C
MOV AX,A00          ;17F
INT 10              ;182
ADD DL,CL           ;184
RET                 ;186
XOR AX,AX           ;187
AAD                 ;189
MOV AH,AL           ;18B
LODSB               ;18D
SUB AL,30           ;18E
JNB 189             ;190
RET                 ;192
MOV AH,0            ;193
LODSB               ;195
MOV DI,1A5          ;196
MOV CX,9            ;199
REPNZ SCASB         ;19C
JNZ 192             ;19E
OR AH,[DI+8]        ;1A0
JMP 195             ;1A3
DB "RGBI?rgbi"
DB 4,2,1,8,8,4,2,1,8
DB "+-+| |+-+",D5,CD,B8
DB B3,20,B3,D4,CD,BE
DB "         "
DB C9,CD,BB,BA,20,BA
DB C8,CD,BC,DA,C4,BF
DB B3,20,B3,C0,C4,D9
DB D6,C4,B7,BA,20,BA
DB D3,C4,BD

RCX
ED
NWINDOW.COM
W
Q

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot