Tips und Tricks zum StarTexter (Teil 2)
Sie kennen sicher die Situation: Auf dem Bildschirm befinden sich Texte, die Sie gerne in Ihren eigenen Briefen verwenden würden, doch der Aufwand ist meist zu groß. »Screencopy« löst dieses Problem.
Das hier vorgestellte Programm »Screencopy« legt eine Hardcopy des Bildschirms auf Diskette im StarTexter-Format ab. Es wird durch diese Technik beispielsweise möglich, Inhaltsverzeichnisse von Disketten zu dokumentieren, Anleitungen eigener Programme mit Beispielausdrucken und erläuterndem Text zu versehen, Menüstrukturen aufzuzeigen, zu erklären und vieles mehr. Ihrer Fantasie sind dabei lediglich drei Grenzen gesetzt:
— Hochauflösende Grafik wird nicht verwertet.
— Veränderte Zeichensätze können nicht übernommen werden.
— Das Programm, das den Text erzeugt, darf den IRQ-Vektor nicht für eigene Aufgaben verwenden.
Der größte Teil der Anwendungen ist hiervon glücklicherweise nicht betroffen, wodurch sich ein breites Einsatzspektrum für Screencopy ergibt.
Laden Sie das Programm Screencopy (Listing 1) durch »LOAD"SCREENCOPY $CF11",8,1« absolut und geben Sie danach NEW ein, um die Basic-Pointer wieder zu korrigieren. Durch »SYS 53009« aktivieren Sie das Programm. Wenn Sie nun die Tasten <CTRL>, <SHIFT> und <CBM> gleichzeitig drücken, wird auf Diskette der Bildschirminhalt unter dem Namen »BILD A« gespeichert. Bei erneutem Drücken dieser Tastenkombination wird als Name »BILD B« etc. festgelegt. Während der Übertragung des Bildschirminhaltes zur Floppy-Station läuft die eingebaute Uhr (TI$) nicht mehr weiter. Eine Hardcopy benötigt acht Blöcke auf Diskette, da nach den 40 Zeichen je Bildschirmzeile nochmals 40 Leerzeichen gesendet werden. Sofern Sie anstelle von »A« im Bildnamen beispielsweise mit »U« beginnen möchten (etwa wenn schon aus einer früheren »Sitzung« Bilder bis »T« existieren), so können Sie durch POKE 53022,ASC("beliebiges Zeichen"), gefolgt von SYS 53009 einen anderen Startwert vorgeben (etwa »0«). Mit dem Assembler-Quellprogramm (Listing 2) ist es möglich, sowohl den Programmaufbau nachzuvollziehen, als auch das Programm an beliebige Speicherbereiche anzupassen.
(Martin Müller/bj)PROGRAMM : SCREENCOPY $CF11 CF11 CFFF ----------------------------------- CF11 : 78 A2 23 A0 CF 8E 14 03 7F CF19 : 8C 15 03 58 A9 41 8D F2 BC CF21 : CF 60 AD 8D 02 49 07 29 16 CF29 : 07 F0 03 4C 31 EA AD 0E 30 CF31 : DC 29 FE 8D 0E DC A9 01 84 CF39 : A2 08 A0 01 20 BA FF A9 53 CF41 : 06 A2 ED A0 CF 20 BD FF 1D CF49 : 20 C0 FF A2 01 20 C9 FF 56 CF51 : A9 40 20 D2 FF A9 00 20 0A CF59 : D2 FF AD 88 02 85 F8 A9 2B CF61 : 00 85 F7 A9 19 8D EC CF A8 CF69 : A9 28 8D EB CF A0 00 20 49 CF71 : F3 CF B1 F7 49 80 91 F7 86 CF79 : 20 F9 CF C9 20 D0 04 A9 AF CF81 : DF D0 21 C9 A0 F0 1D 49 E2 CF89 : 80 29 7F C9 20 B0 05 09 65 CF91 : 40 4C A5 CF C9 40 90 0C 54 CF99 : C9 60 B0 05 09 80 4C A5 70 CFA1 : CF 18 69 40 20 D2 FF A0 B9 CFA9 : 00 20 F3 CF B1 F7 49 80 B1 CFB1 : 91 F7 20 F9 CF E6 F7 D0 3B CFB9 : 02 E6 F8 CE EB CF D0 AD 22 CFC1 : A9 28 8D EB CF A9 20 20 6A CFC9 : D2 FF CE EB CF D0 F6 CE C9 CFD1 : EC CF D0 94 20 CC FF A9 27 CFD9 : 01 20 C3 FF EE F2 CF AD FC CFE1 : 0E DC 09 01 8D 0E DC 4C 15 CFE9 : 31 EA 00 00 42 49 4C 44 B8 CFF1 : 20 41 78 A2 34 86 01 60 60 CFF9 : A2 37 86 01 58 60 A1
10 SYS9*4096 20 .OPT OO,P 30 *= $C000 201 ; 210 FILPAR = $FFBA 220 FILNAM = $FFBD 230 OPEN = $FFC0 240 CLOSE = $FFC3 250 CHKOUT = $FFC9 260 CHROUT = $FFD2 350 CLRALL = $FFE7 360 CLRCHN = $FFCC 370 ; 400 ; 402 ; 410 IRQVEC = $0314 420 SWITCH = 56334 430 IRQALT = $EA31 440 FLAGS = 653 450 HIBASE = 648 460 ZEIGER = $F7 470 CPUPORT = $01 1001 ; 1003 ; - BILDSCHIRM AUF FLOPPY --------- 1004 ; -- KOPIEREN -- VERSION 1.2 ------ 1005 ; - (C) 1986 MARKT&TECHNIK VERLAG - 1006 ; -- WRITTEN BY MARTIN MUELLER ---- 1007 ; 1010 SETIRQ SEI 1020 LDX #<IRQ 1030 LDY #>IRQ 1040 STX IRQVEC 1050 STY IRQVEC + 1 1060 CLI 1062 LDA #"A" 1064 STA NNAME 1070 RTS 1080 ; 1200 IRQ LDA FLAGS 1210 EOR #%00000111 1215 AND #%00000111 1220 BEQ IRQWE1 1230 JMP IRQALT 1235 ; 1240 IRQWE1 LDA SWITCH 1242 AND #%11111110 1244 STA SWITCH 1246 LDA #1 1250 LDX #8 1260 LDY #1 1270 JSR FILPAR 1280 LDA #6 1290 LDX #<NAME 1300 LDY #>NAME 1310 JSR FILNAM 1320 JSR OPEN 1322 LDX #1 1324 JSR CHKOUT 1332 LDA #>16384 1334 JSR CHROUT 1336 LDA #<16384 1338 JSR CHROUT 1342 LDA HIBASE 1350 STA ZEIGER + 1 1360 LDA #0 1370 STA ZEIGER 1372 LDA #25 1374 STA ZEILEN 1390 IRQL3 LDA #40 1400 STA ZAEHLER 1410 IRQL1 LDY #0 1415 JSR ARAM 1420 LDA (ZEIGER),Y 1422 EOR #%10000000 1424 STA (ZEIGER),Y 1426 JSR AROM 1428 CMP #32 1430 BNE IRQW1 1432 LDA #"_" 1434 BNE IRQWE2 1440 IRQW1 CMP #160 1442 BEQ IRQWE2 1454 EOR #%10000000 1456 AND #%01111111 1458 CMP #32 1460 BCS ASCWE1 1470 ORA #%01000000 1480 JMP IRQWE2 1490 ASCWE1 CMP #64 1500 BCC IRQWE2 1510 CMP #96 1520 BCS ASCWE2 1530 ORA #%10000000 1540 JMP IRQWE2 1550 ASCWE2 CLC 1555 ADC #64 1570 IRQWE2 JSR CHROUT 1572 LDY #0 1574 JSR ARAM 1576 LDA (ZEIGER),Y 1578 EOR #%10000000 1580 STA (ZEIGER),Y 1582 JSR AROM 1584 INC ZEIGER 1590 BNE IRQWE3 1600 INC ZEIGER + 1 1620 IRQWE3 DEC ZAEHLER 1630 BNE IRQL1 1650 LDA #40 1660 STA ZAEHLER 1670 IRQL2 LDA #32 1680 JSR CHROUT 1690 DEC ZAEHLER 1700 BNE IRQL2 1760 DEC ZEILEN 1770 BNE IRQL3 1790 JSR CLRCHN 1800 LDA #1 1810 JSR CLOSE 1830 INC NNAME 1840 LDA SWITCH 1850 ORA #%00000001 1860 STA SWITCH 1870 JMP IRQALT 1895 ; 1900 ZAEHLER .BYTE 0 1910 ZEILEN .BYTE 0 1920 NAME .ASC "BILD " 1930 NNAME .ASC "A" 2000 ; 2010 ARAM SEI 2020 LDX #52 2030 STX CPUPORT 2040 RTS 2050 ; 2060 AROM LDX #55 2070 STX CPUPORT 2080 CLI 2090 RTS READY.