C 64
Tips und Tricks

Tips & Tricks für Profis

Auch diesmal haben wir für die Profis unter unseren Lesern einige interessante Hinweis. Beachtenswert ist unter anderem »das geheimnisvolle, reverse SHIFT-M«.

Schalten Sie den Reverse-Modus ein und drücken Sie dann die Tastenkombination SHIFT-M. Was dieser entstandene reverse Schrägbalken alles bewirken kann, möchte ich kurz schildern:

1. Innerhalb von REM-Zeilen

Geben Sie eine Zeilenummer und REM "" ein. Nun löschen Sie das zweite Hochkomma mit der DEL-Taste, schalten den Reverse-Modus ein und drücken die Tastenkombination SHIFT-M. Schalten Sie den Reverse-Modus wieder aus und setzen abermals ein Hochkomma, das Sie anschließend mit der DEL-Taste wieder löschen. Nun können Sie wie innerhalb eines PRINT-Befehls einen Text mit Farbcodes etc. eingeben. Nach der Eingabe drücken Sie die RETURN-Taste und listen das Programm. Sie werden erstaunt sein. Zur Veranschaulichung soll folgende Zeile gelten (die Kommata nicht mit eintippen): 10 REM " "{DEL, RVSON, SHIFT M, RVSOFF} "{DEL, SHIFT CLR/HOME, WHITE, RVSON} This Program is protected {RVSOFF, DARK BLUE}"

2. Im Directory

Geben Sie »SAVE« ein und erzeugen Sie den reversen Schrägbalken wie oben beschrieben. Dann tippen Sie den Programmnamen mit beliebig vielen Steuerzeichen (insgesamt 16 Zeichen) ein und schließen die Eingabe mit ",8 und RETURN ab. Auch hier zur Veranschaulichung wieder ein Beispiel: SAVE " " {DEL, RVSON, SHIFT M, RVSOFF} "{DEL, RVSON} TEST {RVSOFF} ",8

Alle Codes werden ebenfalls aktiviert, wenn Sie eingeben: SAVE CHR$ (34) + {RVSON} Test {RVSOFF} ",8

3. Als Programmschutz

Wenn Sie am Anfang einer Programmzeile PRINT" {reverser Schrägbalken}" und danach weitere Basic-Befehle eingeben, können diese nach Drücken der RETURN-Taste nicht mehr geändert werden (nur durch Zeile löschen oder mit einem Monitor). Beim Listen des Programms werden die nachfolgenden Befehle um eine oder mehrere Zeilen nach unten gerückt (je nach dem, wieviele reverse Schrägbalken Sie in dem PRINT-Befehl verwendet haben), 80 Zeichen pro Zeile werden meistens überschritten. Will man diese Zeile durch Return abermals speichern, so wird nur der PRINT-Befehl gespeichert, alle anderen nachfolgenden Befehle gehen verloren. Ein Beispiel: 10 PRINT" " {DEL ,RVSON ,SHIFT M ,RVSOFF} ":PRINT "COPYRIGHT BY 64'ER-REDAKTION"

Nachdem Sie diese Zeile eingetippt haben und RETURN gedrückt haben, versuchen Sie einmal, den in den Hochkommata des zweiten PRINT-Befehls stehenden Text auszubessern. Nach dem Ausbesssern und RETURN-Drücken tritt entweder ein Syntax Error auf und die Zeile bleibt unverändert, oder in der Zeile 10 steht nur mehr PRINT".

4. Als Listschutz

Geben Sie das erste Beispiel ein, fügen Sie nach dem letzten Hochkomma noch das Zeichen SHIFT L hinzu, drücken Sie RETURN. Nun tippen Sie im Direktmodus POKE 2052,255 ein und speichern das Programm. Nach dem Laden ist der Listschutz noch immer vorhanden.

Durch diesen POKE bekommt die erste Zeile in einem Programm eine unzulässige Zeilennummer (größer als 63999). Sie kann daher nicht mehr gelöscht werden. Das Listen des Programms wird bei der ersten Zeile abgebrochen, Befehle wie LIST 20- (oder ähnliches) werden auch nicht ausgeführt, da der Computer glaubt, die erste Zeile sei wegen der hohen Zeilennummer die letzte. Der Listenschutz kann jedoch mit POKE 2052,0 wieder aufgehoben werden.

(Gert Harlacher/tr)

Versteckspiel mit dem Directory

Wenn eine Diskette mit "N:NAME" + CHR$(0) + CHR$(0) + CHR$(0) +", ID" formatiert wird, so wird beim Laden und Auflisten des Directories nur noch der Name der Diskette angezeigt. Der Interpreter »denkt« nämlich, daß das Directory nach den drei Nullen zu Ende ist. Die Programme auf dieser Diskette lassen sich aber trotzdem noch laden.

Ein weiterer Trick besteht darin, beim Speichern eines Programms an den Namen ein »,S,W« anzuhängen (also zum Beispiel SAVE "TEST,S,W", 8).

Im Directory steht dieses File nun unter »SEQ« vermerkt. Wer versucht, dieses Programm »normal« mit LOAD zu laden, der wird von der Floppy die Fehlermeldung »64, FILE TYPE MISMATCH« erhalten.

Der Kundige jedoch wird das Programm mit »LOAD "NAME,S,R",8« laden, und sich des gelungenen Tricks erfreuen. Beide Methoden kombiniert ergeben einen recht wirkungsvollen Programmschutz.

(Oliver Rahm/tr)

Englisch für Fortgeschrittene

Geben sie einmal folgende kleine Basic-Zeile sorgfältig ein.

0 rem">> {CBM-*} Os {CBM-J}o {CBM-I} {CBM-O}iti{SHIFT--} {CBM-Z} {CBM-M} Z {CBM-@} N {SHIFT-POUND} <<

Wenn Sie die Zeile listen, sehen Sie nichts Ungewöhnliches. Löschen Sie nun das Anführungszeichen hinter der REM-Anweisung und listen Sie die Zeile. Mehr wird hier nicht verraten. Lassen Sie sich überraschen!

(Yves Forkl/tr)

Die mysteriöse Zahl 35072120

Zur Erinnerung: In der Ausgabe 1/86 schrieben wir, daß der List-Schutz-»POKE 808,225« durch die Eingabe der Zahl 35072120 wieder zurückgesetzt werden kann. Wir fragten weiterhin, worauf dieses Phänomen zurückzuführen ist.

Wir danken allen Lesern, die sich bei der Lösung des Problems beteiligt haben. Hier stellvertretend für viele Einsendungen die Erklärung von Frank Sander:

Nun, was geschieht da, besonders wo der C 64 derartig hohen Zeilennummern sonst nur mit einem kalten Lächeln (auch Syntax-Error genannt) begegnet?

Es geschieht folgendes:

Die Eingabewarteschleife ($A480) stellt fest, daß die soeben eingegebene Zeile (»35072120«) mit einer Ziffer beginnt und entscheidet daher, daß es sich um eine in das Programm einzubauende Programmzeile handelt.

Also übergibt sie die Zeile an die Routine zum Einfügen von Programmzeilen ($A49C).

Die Einfügeroutine versucht nun als erstes (und in diesem Falle auch als letztes), die Zeilennummer ins Low-/High-Byte-Format zu verwandeln. Dazu verzweigt sie nach $A96B, wo die Routine liegt, die für das ganze »Wunder« verantwortlich ist. Denn: Ist die Zeilennummer (wie unsere) zu groß, so versucht die Routine verzweifelt, einen Syntax-Error von sich zu geben (aber die entsprechende Ausgabeschleife ist für einen BRANCH-Befehl zu weit entfernt). Also (da man ja unmöglich drei Byte für einen »JMP $AF08« opfern konnte) wird nach $A953 verzweigt, in der Hoffnung, daß der Akku etwas anderes als $89 enthält. Denn $A953 liegt mitten in der ON-GOTO-Routine und dort wird, falls der Akku etwas anderes als den GOTO-Code (eben $89) enthält, zu einem Syntax-Error-Ansprung verzweigt.

Nur lautet die Zeilennummer 35072120, so ist der im Akku enthaltene »Rest« dummerweise gerade $89, also wird nicht zum Syntax-Error gesprungen, sondern der Prozessor beginnt eine Fahrt ins Ungewisse

also muß der auf dem Stack liegende Code für ON-GOTO geholt werden (PLA) und das Ganze endet mit einem RTS.

Nur… es liegt ja gar kein ON-GOTO-Code auf dem Stack, sondern die Rücksprungadresse aus der Eingabewarteschleife!

Also wirft der ahnungslose Prozessor das Rücksprung-Low-Byte in die Ecke und hält nun das Rücksprung-High-Byte für ein Low-Byte und das nachfolgende Byte für ein High-Byte. Daraus folgt: der Prozessor springt ins Ungewisse: zu einer Adresse mit Low-Byte $A5. Als High-Byte liegt bei ordnungsgemäß gereinigtem Stack $79 obenauf (ehemaliger Rücksprung nach $A67A während der Basic-Initialisierung). Dies führt zu einem Sprung nach $79A5, wo der Professor hoffentlich auf ein BRK trifft, den sonst… Einen schweigenden, cursorlosen C 64 hat wohl jeder schon einmal gesehen.

Aber meist liegt dort ein BRK (oder ein mit TAX gepflasterter Weg dorthin), was den wild gewordenen Computer wieder auf den rechten Weg bringt: Nämlich die NMI-Routine.

Diese NMI-Routine, die bei unblockierter RUN/STOP-Taste auch über RUN/STOP-RESTORE erreichbar ist, setzt unter anderem den Stop-Vektor (Adresse 808/809!) neu und schon ist das Listing wieder auf den Beinen.

Hier noch einmal zusammengefaßt die Irrfahrt des C 64:

A494BCC A49Cfalls Zeile mit Ziffer am Anfang
A49CJSR A96BZeilennummer in Low/High-Format wandeln
A96B
A97BCMP #19
A97DBCS A953falls die Zeilennummer zu groß wird
A953CMP #89was ja zutrifft
A955BNE A8E8Syntax-Error-Ansprung
A957DEC $65
A959BNE A95F$65 war alles andere nur nicht 1, also verzweigen
A95FJSR 0073CHRGET
A962JSR A96BZeilennummer holen, bei Zeilenende $00
A965CMP #","$00 ist aber nicht gleich ","
A967BEQ A957also nicht verzweigen
A969PLAläßt das Rücksprung-Low-Byte verschwinden
A96ARTS

Oben auf dem Stack hätte $9E, $A4, $79, $A6 gelegen, das $9E wurde jedoch durch das PLA vom Stack geholt. Also erfolgt ein »Rücksprung« nach $79A5.

Man kann dies ganz einfach ausprobieren, indem man in den (frisch eingeschalteten) Computer, ein POKE 31141,2 (=$79A5) eingibt. Dies führt dann bei Eingabe von »35072120« zum Absturz des Prozessors. (Befehl $02 = Prozessorabsturz).

So weit so gut. Nur — hätte es ein POKE 2,0:SYS2 nicht auch getan?

(Frank Sander/tr)

HiRes-Scrolling per Interrupt

Wer hat nicht schon solche Titelbilder wie bei dem Spiel »Boulderdash« gesehen? Man hat den Eindruck, als ob der Hintergrund stufenlos scrollen würde, die Schrift aber stehenbliebe. Solch ein Effekt wäre natürlich auch hervorragend für eigene Spielszenen geeignet. Das folgende Maschinenprogramm läuft völlig interruptgesteuert und simuliert diese Funktion in vielfältiger Weise. Das Maschinenprogramm (Listing 1) wird zuerst mit »SYS 49152« gestartet.

Der erste Befehl schaltet das Pseudo-Scrolling ein. Die Syntax lautet: »SYS 49232,a,b,c«. Nun zu den Parametern: Der Parameter a ist für die Geschwindigkeit zuständig. Sinnvoll sind nur die Werte 1 bis 255, wobei 1 die höchste Geschwindigkeit bewirkt. Der Parameter b kann die Werte 0 oder 1 annehmen. Ist b=0, so wird nach dem Aufruf der gesamte Bildschirm mit dem zu scrollenden Zeichen aufgefüllt. Das ist zu Anfang ein kleiner Kreis, kann aber von Ihnen im Quelltext geändert werden. Ist b=1, so wird der Bildschirm nicht aufgefüllt. Dies wird zum Beispiel in dem Demoprogramm ausgenützt.

Der Parameter c kann ebenfalls die Werte 0 oder 1 annehmen. Ist c=0, so wird nach oben gescrollt, ist c=1, so wird nach unten gescrollt. Abgeschaltet wird das Ganze mit SYS 49400. Am besten starten Sie zu Anfang das Demoprogramm (Listing 2), um sich mit den Befehlen vertraut zu machen. Zuvor müssen Sie aber das Maschinenprogramm absolut (mit »,8,1«) geladen haben.

Zur Funktionsweise:

Zuerst wird der Zeichensatz umkopiert und einige Zeiger initialisiert. Der Trick beim Scrolling besteht darin, daß im Interrupt kontinuierlich das Zeichen »SHIFT-X« (Bildschirmcode=88) umdefiniert wird. Dadurch scheint der Hintergrund gescrollt zu werden. Unterbrechen Sie doch einmal das Demoprogramm mit RUN/STOP, löschen Sie den Bildschirm und listen das Programm. Sie werden sehen, daß sogar »im Listing« die Zeichen gescrollt werden.

Hinweis: Wenn Sie die neue Version vom »SMON« besitzen (64’er, Ausgabe 10/85), dann können Sie, nachdem Sie den SMON mit »Y8000« verschoben haben, das zu scrollende Zeichen beliebig mit dem »Z«-Befehl umdefinieren. Die Zeichendefinitionen liegen ab $C107.

(Bergerhoff/Nikolas/tr)
PROGRAMM : PSEUDO-SCROLL  C000 C15F
-----------------------------------
C000 : 78 A5 01 48 29 FB 85 01   1F
C008 : A9 D0 85 03 A9 38 85 05   58
C010 : A0 00 84 02 84 04 A2 10   25
C018 : B1 02 91 04 C8 D0 F9 E6   78
C020 : 03 E6 05 CA D0 F2 68 85   82
C028 : 01 AD 18 D0 09 0E 8D 18   87
C030 : D0 58 A9 08 20 D2 FF A2   76
C038 : 28 A0 00 BD 07 C1 99 C0   CE
C040 : 3A E8 C8 C0 08 D0 F4 A9   67
C048 : 05 85 FA A9 00 85 FE 60   ED
C050 : 20 37 C0 20 FD AE 20 9E   53
C058 : B7 8E 05 C1 20 FD AE 20   BD
C060 : 9E B7 E0 00 D0 03 20 8D   D3
C068 : C0 20 FD AE 20 9E B7 E0   25
C070 : 00 D0 0D 78 A9 AA A0 C0   1F
C078 : 8D 14 03 8C 15 03 58 60   ED
C080 : 78 A9 BF A0 C0 8D 14 03   9F
C088 : 8C 15 03 58 60 A2 00 A9   D9
C090 : 58 9D 00 04 E8 D0 FA 9D   74
C098 : 00 05 E8 D0 FA 9D 00 06   18
C0A0 : E8 D0 FA 9D E8 06 E8 D0   67
C0A8 : FA 60 20 E7 C0 D0 35 E6   0D
C0B0 : FA A6 FA E0 0B D0 05 A9   77
C0B8 : 03 AA 85 FA 4C D1 C0 20   68
C0C0 : E7 C0 D0 20 C6 FA A6 FA   14
C0C8 : E0 FF D0 05 A9 07 AA 85   05
C0D0 : FA A0 00 8A 0A 0A 0A AA   DA
C0D8 : BD 07 C1 99 C0 3A E8 C8   CF
C0E0 : C0 08 D0 F4 4C 31 EA E6   3F
C0E8 : FE A5 FE CD 05 C1 F0 03   5A
C0F0 : A9 0A 60 A9 00 85 FE 60   D5
C0F8 : 78 A9 31 A0 EA 8D 14 03   17
C100 : 8C 15 03 58 60 00 00 3C   61
C108 : 3C 18 00 00 00 00 18 3C   29
C110 : 18 00 00 00 00 18 3C 18   0A
C118 : 00 00 00 00 18 3C 3C 00   6D
C120 : 00 00 00 18 3C 3C 18 00   2A
C128 : 00 00 18 3C 3C 18 00 00   3B
C130 : 00 18 3C 3C 18 00 00 00   55
C138 : 18 3C 3C 18 00 00 00 18   B1
C140 : 3C 3C 18 00 00 00 00 3C   19
C148 : 3C 18 00 00 00 00 18 3C   69
C150 : 18 00 00 00 00 18 3C 18   4A
C158 : 00 00 00 00 18 3C 3C      57
Listing 1. Das Stenoprogrmm zum HiRes-Scrolling. Bitte mit dem MSE eingeben.
0 rem ************************
1 rem ** pseudo-scroll-demo **
2 rem **--------------------**
3 rem **    (c) 1985 by     **
4 rem **    n.bergerhoff    **
5 rem **    meisenweg 22    **
6 rem **   5020 frechen 4   **
7 rem **  tel. 02234/64610  **
8 rem ************************
9 :
10 init=49152:ein=49232:aus=49400
11 sysinit
12 :
100 print"{clr}{wht}     XXX   XXX XXXX X  X XXX  XXXX
110 print"     X  X X    X    X  X X  X X  X
120 print"     X  X X    X    X  X X  X X  X
130 print"     XXX   XX  XXX  X  X X  X X  X
140 print"     X       X X    X  X X  X X  X
150 print"     X       X X    X  X X  X X  X
160 print"     X    XXX  XXXX  XX  XXX  XXXX
170 print
180 print"      XXX  XXX XXX  XXXX X    X
190 print"     X    X    X  X X  X X    X
200 print"     X    X    X  X X  X X    X
210 print"      XX  X    XXX  X  X X    X
220 print"        X X    X  X X  X X    X
230 print"        X X    X  X X  X X    X
240 print"     XXX   XXX X  X XXXX XXXX XXXX
250 sysein,3,1,0
260 gosub1000:print"{lblu}{clr}"
270 sysein,3,0,0
280 printtab(11)"{down}{down}{down}{wht}pseudo-scroll-demo"
290 printtab(17)"{down}{down}{down}{down}hoch"
300 gosub1000
310 sysein,3,1,1
320 printtab(16)"{up}runter"
330 gosub1000
340 sysein,1,1,1
350 printtab(16)"{up}schnell"
360 gosub1000
370 sysein,10,1,1
380 printtab(16)"{up}langsam"
390 gosub1000
400 print"{lblu}{clr}":sysein,3,0,0
410 printtab(12)"{wht}taste{lblu}X{wht}druecken"
420 wait198,255:poke198,0:end
430 :
1000 fori=1to3000:next:return
Listing 2. Ein Demo-Programm zum HiRes-Scrolling.
100  -.BA$C000
110  -;
120  -; *********************
130  -; **  PSEUDO-SCROLL  **
140  -; **-----------------**
150  -; **   (C) 1985 BY   **
160  -; **   N.BERGERHOFF  **
170  -; **   MEISENWEG 22  **
180  -; **  5020 FRECHEN 4 **
190  -; *********************
200  -;
210  -.GL V=53248        ;VIC-ADRESSE
220  -.GL SATZ=53248     ;ZEICHENSATZ
230  -.GL ZIEL=14336     ;ZIEL-ADRESSE
240  -.GL IRQVEC=$0314   ;IRQVECTOR
250  -.GL CHKOM=$AEFD    ;KOMMA?
260  -.GL GETBYT=$B79E   ;BYTE HOLEN
270  -.GL ZDEF=ZIEL+704  ;NEUES ZEICHEN
280  -.GL IRQALT=$EA31   ;ALTE ROUTINE
290  -;
300  -INIT      SEI            ;KEIN INTERRUPT
310  -          LDA $01        ;REG.1
320  -          PHA            ;RETTEN
330  -          AND #251
340  -          STA $01        ;
350  -          LDA #>(SATZ)   ;HIGH-BYTE
360  -          STA $03        ;MERKEN
370  -          LDA #>(ZIEL)   ;NOCHMAL FUER
380  -          STA $05        ;DAS ZIEL
390  -          LDY #00
400  -          STY $02        ;LOW-BYTES
410  -          STY $04        ;LOESCHEN
420  -          LDX #$10
430  -COPY      LDA (02),Y     ;LADEN UND
440  -          STA (04),Y     ;KOPIEREN
450  -          INY
460  -          BNE COPY
470  -          INC $03        ;HIGH-BYTES
480  -          INC $05        ;ERHOEHEN
490  -          DEX
500  -          BNE COPY
510  -          PLA            ;VOM STACK
520  -          STA $01        ;ZURUECKHOLEN
530  -          LDA V+24
540  -          ORA #14        ;NEUER
550  -          STA V+24       ;ZEICHENSATZ
560  -          CLI
570  -          LDA #08        ;K/G SCHRIFT
580  -          JSR $FFD2      ;BLOCKIEREN
590  -IN        LDX #40
600  -          LDY #00
610  -IN1       LDA DEF,X      ;NEUE ZEICHEN-
620  -          STA ZDEF,Y     ;DEFINITION
630  -          INX
640  -          INY
650  -          CPY #08
660  -          BNE IN1
670  -          LDA #05
680  -          STA $FA        ;MERKER1
690  -          LDA #00
700  -          STA $FE        ;MERKER2
710  -          RTS
720  -;
730  -AN        JSR IN
740  -          JSR CHKOM      ;KOMMA?
750  -          JSR GETBYT     ;BYTE HOLEN
760  -          STX SPEED      ;MERKEN
770  -          JSR CHKOM
780  -          JSR GETBYT     ;VIDEQRAM MIT
790  -          CPX #00        ;88 FUELLEN?
800  -          BNE A0
810  -          JSR FULL       ;JA
820  -A0        JSR CHKOM
830  -          JSR GETBYT
840  -          CPX #00        ;HOCH?
850  -          BNE A1
860  -          SEI            ;JA
870  -          LDA #<(IRQ1)
880  -          LDY #>(IRQ1)
890  -          STA IRQVEC
900  -          STY IRQVEC+1
910  -          CLI
920  -          RTS
930  -A1        SEI            ;RUNTER
940  -          LDA #<(IRQ2)
950  -          LDY #>(IRQ2)
960  -          STA IRQVEC
970  -          STY IRQVEC+1
980  -          CLI
990  -          RTS
1000  -;
1010  -FULL      LDX #00        ;VIDEORAM
1020  -          LDA #88        ;MIT 88
1030  -F1        STA 1024,X     ;AUFFUELLEN
1040  -          INX
1050  -          BNE F1
1060  -F2        STA 1280,X
1070  -          INX
1080  -          BNE F2
1090  -F3        STA 1536,X
1100  -          INX
1110  -          BNE F3
1120  -F4        STA 1768,X
1130  -          INX
1140  -          BNE F4
1150  -          RTS
1160  -;
1170  -IRQ1      JSR TIME       ;IST ZEIT
1180  -          BNE BACK       ;ERREICHT?
1190  -          INC $FA
1200  -          LDX $FA
1210  -          CPX #11
1220  -          BNE IR1
1230  -          LDA #03
1240  -          TAX
1250  -          STA $FA
1260  -IR1       JMP WEITER
1270  -;
1280  -IRQ2      JSR TIME       ;IST ZEIT
1290  -          BNE BACK       ;ERREICHT?
1300  -          DEC $FA
1310  -          LDX $FA
1320  -          CPX #$FF
1330  -          BNE WEITER
1340  -          LDA #07
1350  -          TAX
1360  -          STA $FA
1370  -WEITER    LDY #00
1380  -          TXA
1390  -          ASL            ;
1400  -          ASL            ; MAL 8
1410  -          ASL            ;
1420  -          TAX
1430  -W1        LDA DEF,X      ;LADEN UND NEU
1440  -          STA ZDEF,Y     ;DEFINIEREN
1450  -          INX
1460  -          INY
1470  -          CPY #08
1480  -          BNE W1
1490  -BACK      JMP IRQALT     ;ALTE ROUTINE
1500  -;
1510  -TIME      INC $FE
1520  -          LDA $FE
1530  -          CMP SPEED
1540  -          BEQ T1
1550  -          LDA #10
1560  -          RTS
1570  -T1        LDA #00
1580  -          STA $FE
1590  -          RTS
1600  -;
1610  -AUS       SEI
1620  -          LDA #$31       ;ALTE VECTOREN
1630  -          LDY #$EA
1640  -          STA IRQVEC     ;HERSTELLEN
1650  -          STY IRQVEC+1
1660  -          CLI
1670  -          RTS            ;ZURUECK
1680  -;
1690  -SPEED     .BY 0,0
1700  -;
1710  -; **** ZEICHENDEFINITIONEN ****
1720  -;
1730  -DEF       .BY 60,60,24,0,0,0,0,24
1740  -.BY 60,24,0,0,0,0,24,60
1750  -.BY 24,0,0,0,0,24,60,60
1760  -.BY 0,0,0,0,24,60,60,24
1770  -.BY 0,0,0,24,60,60,24,0
1780  -.BY 0,0,24,60,60,24,0,0
1790  -.BY 0,24,60,60,24,0,0,0
1800  -.BY 24,60,60,24,0,0,0,0
1810  -.BY 60,60,24,0,0,0,0,24
1820  -.BY 60,24,0,0,0,0,24,60
1830  -.BY 24,0,0,0,0,24,60,60
HiRes-Scrolling Quelltext

1520-Plotter als vollwertiger Drucker

Dieses kleine Programm (Listing 3) schickt alle Druckausgaben, die zur Geräteadresse 4 gesendet werden, automatisch zum 1520-Plotter mit der Geräteadresse 6. Das heißt, daß fertige Programme nicht mehr mühselig nach OPEN-Befehlen durchkämmt werden müssen, um die Druckerausgaben entsprechend umzulenken. Weiterhin wird der Plotter automatisch auf Kleinschrift gestellt, wenn diese am C 64 eingeschaltet ist.

Auch läßt sich die Zeilenlänge am Plotter einstellen: »POKE 713,Z:POKE 754,Z«, wobei folgende Werte für Z zulässig sind:

PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →