Ein weiterer Filter zur Textmanipulation – aber etwas anderer, recht nützlicher Art – ist COL.DEB. Das Programm bereitet einen Text spaltenweise auf, sodaß Sie sich z.B. ein zweispaltiges Inhaltsverzeichnis Ihrer Platte zu Gemüte führen können. COL liest einen Text von der Standardeingabe zeilenweise ein, bis entweder der Puffer für jeweils eine Bildschirmseite voll, oder kein Zeichen mehr verfügbar ist. Danach formatiert es den Text in gewünschter Weise um und gibt ihn auf dem Bildschirm aus. Bei längeren Listen fügt COL nach jeder Seite eine Leerzeile ein und beginnt von vorne. COL ist in einem weiten Rahmen individuell konfigurierbar. Die Werte der DW-Zeile im hinteren Teil des Listings legen Anzahl und Breite der Spalten sowie die Seitenlänge fest. Zur Trennung der einzelnen Spalten verwendet COL jeweils ein zusätzliches Leerzeichen, weshalb z.B. bei zwei Spalten deren Breite nur noch maximal 39 betragen kann. Bewährte Werte sind:
2, 39 (27h), 24 (18h) für 2 Spalten 3, 25 (19h), 24 (18h) für 3 Spalten 4, 19 (13h), 24 (18h) für 4 Spalten
Die Zahlen in Klammern spiegeln den hexadezimalen Wert wieder, den Sie anstelle der vorhergehenden dezimalen Zahlen in die DW-Zeile im DEBUG-Listing ohne h (!) eingeben müssen. Ohne Änderungen entsteht COL.COM für die Textausgabe in zwei Spalten. Praktisch wird die ganze Sache, wenn Sie COL – jeweils mit den bewährten Werten – insgesamt dreimal übersetzen und in 2.COM, 3.COM und 4.COM umbenennen. Für ein zweispaltiges Directory geben Sie künftig z. B. »DIR | 2« ein. Je nach Bedarf können Sie nun jede Datei in mehreren Spalten übersichtlich am Bildschirm darstellen. Je mehr Spalten Sie verwenden, desto kürzer muß natürlich jede Zeile des auszugebenden Textes sein, sonst muß COL die Zeile umbrechen und es gibt sehr wahrscheinlich ein Durcheinander. Eine Zeile darf maximal 255 Zeichen lang sein – auf einer Bildschirmseite finden höchsten 252 in mehreren Spalten eingeordnete Zeilen Platz. Außer den Zeilenvorschüben werden sämtliche Steuerzeichen – auch Tabulatoren – ignoriert.
Name: | COL.DEB |
Funktion: | Gibt einen Text spaltenweise aus. |
Übersetzung: | DEBUG <COL.DEB |
Prüfsumme: | D569 |
Anwendung: | z. B. COL <Datei oder DIR | Datei |
Einschränkungen: | COL.DEB sollte praxisgerecht in 2, 3 und 4.COM übersetzt werden. Je länger die aufzubereitende Datei, desto länger braucht das Filter. Sämtliche Steuerzeichen (außer Zeilenvorschüben) werden ignoriert. |
A XOR BX,BX ;100 XOR SI,SI ;102 XOR BP,BP ;104 MOV CX,[1C9] ;106 CALL 19C ;10A INC BH ;10D LOOP 10A ;10F INC SI ;111 ADD BP,100 ;112 CALL 151 ;116 JZ 121 ;119 CMP SI,[1CD] ;11B JB 106 ;11F XOR DI,DI ;121 MOV BX,1 ;123 PUSH DI ;126 MOV CX,[1C9] ;127 DEC CX ;12B CALL 168 ;12C ADD DI,BP ;12F MOV DL,20 ;131 CALL 163 ;133 LOOP 12C ;136 CALL 168 ;138 CALL 15C ;13B POP DI ;13E ADD DI,100 ;13F CMP DI,BP ;143 JB 126 ;145 CALL 151 ;147 JZ 15B ;14A CALL 15C ;14C JMP 100 ;14F CALL 1AA ;151 JZ 15B ;154 MOV AH,0 ;156 MOV [1AB],AX ;158 RET ;15B MOV DL,D ;15C CALL 163 ;15E MOV DL,A ;161 MOV AH,2 ;163 INT 21 ;165 RET ;167 PUSH CX ;168 MOV CL,[DI+200] ;169 MOV CH,0 ;16D LEA DX,[DI+201] ;16F MOV AH,40 ;173 INT 21 ;175 MOV CX,[1CB] ;177 SUB CX,AX ;17B JZ 186 ;17D MOV DL,20 ;17F CALL 163 ;181 LOOP 181 ;184 POP CX ;186 RET ;187 CALL 156 ;188 CMP BL,[1CB] ;18B JZ 1A1 ;18F MOV By[1AB],6 ;191 MOV [BX+201],AL ;196 INC BL ;19A CALL 1AA ;19C JA 188 ;19F MOV AL,BL ;1A1 MOV BL,0 ;1A3 MOV [BX+200],AL ;1A5 RET ;1A9 MOV AX,600 ;1AA MOV Wo[1AB],600 ;1AD CMP AH,6 ;1B3 JNZ 1BE ;1B6 MOV DL,FF ;1B8 INT 21 ;1BA JZ 1C8 ;1BC CMP AL,1F ;1BE JA 1C8 ;1C0 CMP AL,A ;1C2 JNZ 1AA ;1C4 CMP AL,B ;1C6 RET ;1C8 DW 2,27,18 RCX CF NCOL.COM W Q
Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot