Vier Bildschirme im Speicher
100 Zeilen Listing auf Tastendruck abrufbereit, vier Bildschirmseiten auf einmal, freie Verwendung in eigenen Programmen. Dies sind die unverkennbaren Vorzüge von »SCREENCOPY«, das sich gleichzeitig als Editierhilfe und Maskenutility präsentiert.
Das Programm »SCREENCOPY« gibt dem Anwender die Möglichkeit, bis zu vier Bildschirmseiten auf Tastendruck in das RAM unter dem Interpreter-ROM ($A000-$BFFF) zu verschieben, wieder in den aktuellen Bildschirm zu holen, oder auf Diskette zu speichern. Hierbei werden alle Farbinformationen (sowie Reverse-Darstellungen etc.) mitgespeichert. Ein Vorteil dieser Speicherbelegung ist, daß die vier Bildschirmseiten keinen Basic-Speicher belegen. »SCREENCOPY« bietet mehrere Anwendungsmöglichkeiten.
- Beim Editieren von Programmen kann es sehr nützlich sein, wenn man wichtige Notizen schnell auf eine Bildschirmseite schreibt und diese zwischenspeichert. Dies ist erheblich übersichtlicher als herumliegende Notizzettel, da die Informationen auf Tastendruck wieder zur Verfügung stehen. Oder kennen Sie auch folgendes Problem: Man listet das zu bearbeitende Programm und möchte dann einen Programmabschnitt bearbeiten, der sich über mehrere Bildschirmseiten erstreckt. Und dann wird gelistet, verbessert, gelistet.....gelistet. Hier ist die Lösung: Listen Sie die ersten 25 Zeilen und drücken danach auf die F1-Taste. Schon ist der erste Bildschirm gespeichert. Dasselbe passiert mit den jeweils folgenden 25 Zeilen, bis alle vier Funktionstasten mit je einem Bild belegt sind. Somit haben Sie einen Bildschirm mit 100 (hundert!) Zeilen zur Verfügung.
- Man benützt das Programm zur Erstellung und Planung von Bildschirmmasken (Menüs, Untermenüs etc.). Ist die Maske (oder Masken) fertiggestellt, kann sie mittels CTRL- und entsprechender Funktionstaste auf Diskette gespeichert werden. Das besondere hierbei ist, daß nicht nur ein Bildschirm, sondern zwei, drei oder vier Bildschirme zusammen (unter einem Namen) gespeichert werden können. Um eine hohe Anwenderfreundlichkeit zu realisieren, wurden alle Funktionen auf die Funktionstasten (F1-F8) gelegt. Um die Bildschirmseiten auch innerhalb von Programmen verwenden zu können, steht Ihnen das Programm »PAGE4« zur Verfügung. Der Aufruf der Bildschirme erfolgt über den SYS-Befehl. Das Programm »SCR.RENAME« eignet sich zur Änderung (vor dem Speichern!) der von »SCREENCOPY« festgelegten Bildschirmnamen.
Bedienungsanleitung
SCREENCOPY
Tippen Sie das Programm aus Listing 1 mit dem MSE ab und speichern Sie es auf Diskette. Nach dem absoluten Laden (load "SCREENCOPY",8,1) geben Sie den Befehl »NEW« ein, um ein »OUT OF MEMORY« zu vermeiden. Gestartet wird es mit »SYS 49152«. Jetzt wird bei jedem Interrupt die Abfrageroutine der Funktionstasten durchlaufen. Die Funktionstasten sind wie folgt belegt:
| F1 | – | der aktuelle Bildschirm wird in den Bereich ab $A000 (Seite 1) kopiert. |
| F3 | – | der aktuelle Bildschirm wird in den Bereich ab $A800 (Seite 2) kopiert. |
| F5 | – | der aktuelle Bildschirm wird in den Bereich ab $B000 (Seite 3) kopiert. |
| F7 | – | der aktuelle Bildschirm wird in den Bereich ab $B800 (Seite 4) kopiert. |
Bevor Sie den aktuellen Bildschirm mittels F-Tasten unter das ROM kopieren, sollte die Cursorfarbe der Hintergrundfarbe angeglichen werden, da es sonst passieren kann, daß der Cursor mitkopiert wird.
Möchten Sie den Bildschirm (unter dem ROM) wieder in den aktuellen Bildschirm verschieben, dann drücken Sie einfach die Taste »SHIFT« in Kombination mit der gewählten Funktionstaste (das entspricht den Tasten F2/F4/F6/F8).
Nun zum Speichern:
| CTRL/F1 | – | Wenn Sie diese Kombination drücken, wird die Seite 1 auf Diskette gespeichert. |
| CTRL/F3 | – | Hier werden Seite 1 und 2 gespeichert. |
| CTRL/F5 | – | Bildschirmseiten 1 bis 3 werden gespeichert. |
| CTRL/F7 | – | Bildschirmseiten 1 bis 4 werden gespeichert. |
Wichtiger Hinweis: Wollen Sie jeden Bildschirm einzeln speichern, so ist das nur über die Kombination CTRL/F1 möglich. Dabei ist zu beachten (wenn schon ein File »SCREEN 1« existiert), daß vor dem Speichern entweder mit dem beiliegenden Programm »SCR.RENAME« der Bildschirmname geändert wird, oder aber der vorhandene Bildschirm auf Diskette mit »OPEN1,8,15, "R:NEUER NAME=ALTER NAME:CLOSE 1« geändert wird, da sonst die Fehlermeldung »FILE EXISTS« auftritt.
PAGE4
Tippen Sie »PAGE4« (Listing 2) mit dem MSE ab. Um die Bildschirmseiten in Programmen zu verwenden, laden Sie das Programm »PAGE4« absolut (,8,1) und geben den Befehl »NEW« ein. Eine Initialisierung ist nicht erforderlich. Wenn PAGE4 von einem Basic-Programm nachgeladen werden soll, gehen Sie wie folgt vor:
1) Laden Sie das Programm, welches »PAGE4« nachladen soll.
2) Geben Sie »PRINT PEEK (45)« und »PRINT PEEK (46)« ein und notieren die angezeigten Werte.
3) Am Anfang des Basic-Programms soll dann folgendes stehen:
10 IF A = 0 THEN A = 1:LOAD "PAGE4",8,1
15 IF A = 1 THEN A = 2:LOAD "...",8,1
Nachladen der gespeicherten Bildschirme
20 POKE 45,X: POKE 46,Y : CLR
Die Werte X/Y sind die Zahlen, die in den Zellen (45) und (46) standen.
Der Aufruf der gewünschten Seite erfolgt durch: SYS 828,n (n = erste bis vierte Bildschirmseite). Das Programm »SCREENCOPY« wird natürlich nicht mehr benötigt.
SCR.RENAME
Mit diesem Programm (Listing 3) kann man die Bildschirmnamen vor der Speicherung ändern. Zu beachten ist hier, daß der Name max. 8 Zeichen lang sein darf, da die SAVE-Routine mit diesem Wert arbeitet. Der Bildschirmname 1 kann mit diesem Programm direkt geändert werden. Bei Änderung von Namen 2 muß die Variable in der Zeile 65 in »N2« umgeändert werden. Entsprechendes gilt für Name3 – »N3«, Name4 – »N4«. Es gibt noch 2 Alternativen:
1) Ändern der Namen auf Diskette
2) Die Namen mit einem Maschinensprachenmonitor überschreiben. Sie stehen ab der Adresse $C217 (49687) im Arbeits-Speicher.
Programmbeschreibung:
a) SCREENCOPY: Das Programm »SCREENCOPY« (Listing 4) belegt den Speicherbereich $C000(49152)-$C237(49719). Der Interrupt-Vektor $314/15 zeigt auf die Tastaturabfrage der Routine. Die Konstante $A000 steht in der Zeropage-Adresse $B3/4. Sie dient als Zeiger der Startadresse des zu speichernden Bereiches. Die Zelle $02 wird als Zähler benutzt, damit bei gedrückter Kombination CTRL/F-Taste nicht bei jedem Interrupt die SAVE-Routine angesprungen wird. In den Zellen $FB-$FE werden jeweils die Start- und Endadressen für die Kopier-Routine übergeben.
b) PAGE4: Das Programm »PAGE4« (Listing 5) liegt im Bereich $033C(828) bis $03EE(1066). Hier wird mit voller Absicht mit dem SYS-Befehl gearbeitet, damit keine Vektoren geändert werden. Es verträgt sich mit allen Programmen (Programmerweiterungen), die den Kassettenpuffer nicht für sich beanspruchen. Beim SYS-Aufruf wird zuerst auf nachfolgendes Komma geprüft und der Wert geholt. Ist dieser größer als 4, wird die Fehlermedlung »ILLEGAL QUANTITY« ausgegeben.
c) SCR.RENAME: Die vordefinierten Bildschirmnamen sind:
Seite 1: »SCREEN-1«, Seite 2: »SCREEN-2«
Seite 3: »SCREEN-3«,Seite 4: »SCREEN-4«
| N1: | Adresse von Name 1($C217-49687) |
| N2: | Adresse von Name 2 |
| N3: | Adresse von Name 3 |
| N4: | Adresse von Name 4 |
| N$: | Bildschirmname |
| N: | Länge des Bildschirmnamens |
| I: | Laufvariable bei der For-Next-Schleife |
PROGRAMM : SCREENCOPY.OBJ C000 C237 ----------------------------------- C000 : 78 A9 19 A0 C0 8D 14 03 76 C008 : 8C 15 03 58 A9 00 A0 A0 49 C010 : 85 B3 84 B4 A9 05 85 02 03 C018 : 60 AD 8D 02 4A B0 19 4A 16 C020 : 4A B0 18 A5 CB C9 04 F0 7A C028 : 1E C9 05 F0 2E C9 06 F0 B5 C030 : 3E C9 03 F0 4E 4C 31 EA 14 C038 : 4C B3 C0 C6 02 A5 02 F0 9E C040 : 03 4C 31 EA 4C 53 C1 20 BA C048 : 97 C0 85 FD A0 A0 84 FE 7F C050 : 20 04 C2 20 A0 C0 A0 A4 03 C058 : 4C A9 C0 20 97 C0 85 FD 3E C060 : A0 A8 84 FE 20 04 C2 20 C3 C068 : A0 C0 A0 AC 4C A9 C0 20 7B C070 : 97 C0 85 FD A0 B0 84 FE 28 C078 : 20 04 C2 20 A0 C0 A0 B4 4B C080 : 4C A9 C0 20 97 C0 85 FD 66 C088 : A0 B8 84 FE 20 04 C2 20 F3 C090 : A0 C0 A0 BC 4C A9 C0 A9 B8 C098 : 00 A0 04 85 FB 84 FC 60 33 C0A0 : A9 00 A0 D8 85 FB 84 FC D1 C0A8 : 60 85 FD 84 FE 20 04 C2 61 C0B0 : 4C 31 EA A5 CB C9 04 F0 01 C0B8 : 0F C9 05 F0 26 C9 06 F0 B6 C0C0 : 3D C9 03 F0 54 4C 31 EA 03 C0C8 : A5 01 48 A9 36 85 01 20 09 C0D0 : 34 C1 85 FB A0 A0 84 FC E1 C0D8 : 20 04 C2 20 3D C1 A0 A4 5D C0E0 : 4C 46 C1 A5 01 48 A9 36 DA C0E8 : 85 01 20 34 C1 85 FB A0 F6 C0F0 : A8 84 FC 20 04 C2 20 3D 6F C0F8 : C1 A0 AC 4C 46 C1 A5 01 C9 C100 : 48 A9 36 85 01 20 34 C1 C1 C108 : 85 FB A0 B0 84 FC 20 04 82 C110 : C2 20 3D C1 A0 B4 4C 46 D7 C118 : C1 A5 01 48 A9 36 85 01 5A C120 : 20 34 C1 85 FB A0 B8 84 2C C128 : FC 20 04 C2 20 3D C1 A0 C2 C130 : BC 4C 46 C1 A9 00 A0 04 01 C138 : 85 FD 84 FE 60 A9 00 A0 51 C140 : D8 85 FD 84 FE 60 85 FB EC C148 : 84 FC 20 04 C2 68 85 01 5A C150 : 4C 31 EA A9 05 85 02 A5 F4 C158 : CB C9 04 F0 0F C9 05 F0 5C C160 : 31 C9 06 F0 53 C9 03 F0 87 C168 : 75 4C 31 EA 78 A5 01 48 F6 C170 : A9 36 85 01 A2 08 20 BA 16 C178 : FF A9 08 A2 17 A0 C2 20 64 C180 : BD FF A9 B3 A2 00 A0 A8 1C C188 : 20 D8 FF 68 85 01 58 4C 7C C190 : 31 EA 78 A5 01 48 A9 36 6F C198 : 85 01 A2 08 20 BA FF A9 73 C1A0 : 08 A2 1F A0 C2 20 BD FF F9 C1A8 : A9 B3 A2 A7 A0 AF 20 D8 82 C1B0 : FF 68 85 01 58 4C 31 EA E7 C1B8 : 78 A5 01 48 A9 36 85 01 B1 C1C0 : A2 08 20 BA FF A9 08 A2 78 C1C8 : 27 A0 C2 20 BD FF A9 B3 DE C1D0 : A2 7B A0 B7 20 D8 FF 68 E8 C1D8 : 85 01 58 4C 31 EA 78 A5 15 C1E0 : 01 48 A9 36 85 01 A2 08 31 C1E8 : 20 BA FF A9 08 A2 2F A0 2E C1F0 : C2 20 BD FF A9 B3 A2 FF F4 C1F8 : A0 BF 20 D8 FF 68 85 01 F6 C200 : 58 4C 31 EA A2 04 A0 00 F5 C208 : B1 FB 91 FD C8 D0 F9 E6 A4 C210 : FC E6 FE CA D0 F2 60 53 65 C218 : 43 52 45 45 4E 20 31 53 D0 C220 : 43 52 45 45 4E 2D 32 53 44 C228 : 43 52 45 45 4E 2D 33 53 50 C230 : 43 52 45 45 4E 2D 34 DB
PROGRAMM : PAGE4.OBJ 033C 03F2 ----------------------------------- 033C : 20 F1 B7 E0 01 F0 0F E0 F4 0344 : 02 F0 26 E0 03 F0 3D E0 D2 034C : 04 F0 54 4C 48 B2 A5 01 1A 0354 : 48 A9 36 85 01 20 BE 03 C1 035C : 85 FB A0 A0 84 FC 20 DB 83 0364 : 03 20 C7 03 A0 A4 4C D0 CC 036C : 03 A5 01 48 A9 36 85 01 F0 0374 : 20 BE 03 85 FB A0 A8 84 D5 037C : FC 20 DB 03 20 C7 03 A0 6D 0384 : AC 4C D0 03 A5 01 48 A9 C2 038C : 36 85 01 20 BE 03 85 FB DB 0394 : A0 B0 84 FC 20 DB 03 20 7A 039C : C7 03 A0 B4 4C D0 03 A5 46 03A4 : 01 48 A9 36 85 01 20 BE 59 03AC : 03 85 FB A0 B8 84 FC 20 69 03B4 : DB 03 20 C7 03 A0 BC 4C D3 03BC : D0 03 A9 00 A0 04 85 FD B4 03C4 : 84 FE 60 A9 00 A0 D8 85 88 03CC : FD 84 FE 60 85 FB 84 FC 1B 03D4 : 20 DB 03 68 85 01 60 A2 D7 03DC : 04 A0 00 B1 FB 91 FD C8 3C 03E4 : D0 F9 E6 FC E6 FE CA D0 3D 03EC : F2 60 01 08 01 08 68
0 rem *** scr.rename *** 1 rem dazu zeile 65 abaendern !! 2 rem name1 = n1 * name2 = n2 name3 = n3 * name4 = n4 3 rem * 4 : 5 :n1=49686 : n2=n1+8 10 n3=n2+8 : n4=n3+8 15 : 20 print chr$(147) :print 25 print" screen-name (max.8 stellen):" 30 print :print " "; 35 : 40 input n$ :n=len(n$) 45 if n>8 then 20 50 if n<8 then n$= n$+chr$(32) :n=n+1 : goto50 55 : 60 for i=1 to n 65 : poke n1+i,asc(mid$(n$,i,1)) 70 next 75 end
10 sys 9*4096 ;profi-ass aufruf 12 .opt oo 13 *= $c000 ;startadresse 14 ; 20 flag = $028d 21 taste = $cb 22 irq = $ea31 29 ;------------- 30 ; 110 sei ;init 111 lda #<beg :ldy #>beg 112 sta $0314 :sty $0315 113 cli 115 lda #$00 :ldy #$a0 ;$a000 als 116 sta $b3 :sty $b4 ;zeiger f.save 117 lda #5 :sta $02 ;counter 122 rts 123 ;-------------------- 130 ; 131 beg lda flag ;shift/ctrl-flag 132 : lsr :bcs tshift 133 : lsr 134 : lsr :bcs tctrl 135 : lda taste 140 : cmp #4 :beq store1 ;ftaste gedr. 145 : cmp #5 :beq store2 150 : cmp #6 :beq store3 155 : cmp #3 :beq store4 160 : jmp irq 163 ;--------------------- 164 ; 170 tshift jmp shift ;in akt.bildsch. 171 tctrl dec $02 ;counter =0 "?" 172 lda $02 :beq contr;dann save 190 jmp irq ;sonst weiter irq 200 contr jmp ctrl 220 ; 221 ;================================== 222 ;store1-4 => der aktuelle bildschirm wird im ram (a000-bfff) abgelegt . 225 ;================================== 227 ; 230 store1 jsr up1 :sta $fd 232 : ldy #$a0 :sty $fe 240 : jsr copy 245 : jsr up2 :ldy #$a4 255 : jmp cop 269 ; 270 store2 jsr up1 :sta $fd 275 : ldy #$a8 :sty $fe 285 : jsr copy 290 : jsr up2 :ldy #$ac 300 : jmp cop 314 ; 315 store3 jsr up1 :sta $fd 320 : ldy #$b0 :sty $fe 330 : jsr copy 335 : jsr up2 :ldy #$b4 345 : jmp cop 359 ; 360 store4 jsr up1 :sta $fd 365 : ldy #$b8 :sty $fe 375 : jsr copy 380 : jsr up2 :ldy #$bc 390 : jmp cop 410 ;------------------- 450 up1 lda #$00 :ldy #$04 ;$0400 nach 455 : sta $fb :sty $fc ;$fb/c 460 : rts 464 ; 465 up2 lda #$00 :ldy #$d8 ;$d800 nach 470 : sta $fb :sty $fc ;$fb/c 475 : rts 479 ; 480 cop sta $fd :sty $fe 485 : jsr copy 490 : jmp irq 491 ;-------------------- 492 shift lda taste 493 : cmp #4 :beq hole1 494 : cmp #5 :beq hole2 495 : cmp #6 :beq hole3 496 : cmp #3 :beq hole4 497 : jmp irq 498 ;--------------------- 499 ; 500 ;================================== 501 ;hole1-4 => der gespeicherte bildschirm wird in d.aktuellen zurueckkopiert. 502 ;================================== 505 hole1 lda $01 :pha 510 : lda #$36 :sta $01 515 : jsr up3 :sta $fb 520 : ldy #$a0 :sty $fc 525 : jsr copy 530 : jsr up4 :ldy #$a4 540 : jmp cop2 545 ; 555 hole2 lda $01 :pha 560 : lda #$36 :sta $01 565 : jsr up3 :sta $fb 570 : ldy #$a8 :sty $fc 580 : jsr copy 585 : jsr up4 :ldy #$ac 595 : jmp cop2 600 ; 610 hole3 lda $01 :pha 615 : lda #$36 :sta $01 620 : jsr up3 :sta $fb 625 : ldy #$b0 :sty $fc 635 : jsr copy 640 : jsr up4 :ldy #$b4 650 : jmp cop2 655 ; 665 hole4 lda $01 :pha 670 : lda #$36 :sta $01 675 : jsr up3 :sta $fb 680 : ldy #$b8 :sty $fc 690 : jsr copy 695 : jsr up4 :ldy #$bc 705 : jmp cop2 709 ;-------------------- 710 ; 720 up3 lda #$00 :ldy #$04 ;$0400 nach 725 : sta $fd :sty $fe ;$fd/e 730 : rts 734 ; 735 up4 lda #$00 :ldy #$d8 ;$d800 nach 740 : sta $fd :sty $fe ;$fd/e 745 : rts 749 ; 750 cop2 sta $fb :sty $fc 755 : jsr copy 765 : pla :sta $01 770 : jmp irq 775 ;--------------------- 776 ctrl lda #5 :sta $02 ;setze zaehler 780 : lda taste ;ctrl/f-taste 781 : cmp #4 :beq save1;gedrueckt"?" 782 : cmp #5 :beq save2 783 : cmp #6 :beq save3 784 : cmp #3 :beq save4 785 : jmp irq 786 ; 788 ;================================== 789 ;save 1-4 =>die bildschirme unter dem rom werden abgespeichert. 790 ;================================== 791 save1 sei 792 : lda $01 :pha 794 : lda #$36 :sta $01 795 : ldx #8 :jsr $ffba 796 : lda #8 797 : ldx #<na1 :ldy #>na1 798 : jsr $ffbd 799 : lda #$b3 800 : ldx #$00 :ldy #$a8 801 : jsr $ffd8 802 : pla :sta $01 803 : cli :jmp irq 805 ; 810 save2 sei 811 : lda $01 :pha 812 : lda #$36 :sta $01 813 : ldx #8 :jsr $ffba 814 : lda #8 815 : ldx #<na2 :ldy #>na2 816 : jsr $ffbd 817 : lda #$b3 818 : ldx #$a7 :ldy #$af 819 : jsr $ffd8 820 : pla :sta $01 822 : cli :jmp irq 825 ; 830 save3 sei 831 : lda $01 :pha 832 : lda #$36 :sta $01 833 : ldx #8 :jsr $ffba 834 : lda #8 835 : ldx #<na3 :ldy #>na3 836 : jsr $ffbd 837 : lda #$b3 838 : ldx #$7b :ldy #$b7 839 : jsr $ffd8 840 : pla :sta $01 843 : cli :jmp irq 845 ; 850 save4 sei 851 : lda $01 :pha 852 : lda #$36 :sta $01 853 : ldx #8 :jsr $ffba 854 : lda #8 855 : ldx #<na4 :ldy #>na4 856 : jsr $ffbd 857 : lda #$b3 858 : ldx #$ff :ldy #$bf 859 : jsr $ffd8 860 : pla :sta $01 862 : cli :jmp irq 900 ;================================== 901 ;startadresse ==> in $fb/c endadresse ==> in $fd/e 902 ;die angegebenen bereiche werden mit diesem unterprg. kopiert. 903 ;================================== 905 copy ldx #4 :ldy #0 910 n lda ($fb),y 915 : sta ($fd),y 920 : iny 925 : bne n 930 : inc $fc :inc $fe 935 : dex 940 : bne n 945 : rts 950 ;--------------------- 960 na1 .asc "screen 1" 961 na2 .asc "screen-2" 962 na3 .asc "screen-3" 963 na4 .asc "screen-4"
10 sys 9*4096 ;profi-ass 12 .opt oo 13 *= $033c ;startadresse 14 ; 50 illq = $b248 55 koget = $b7f1 90 ; 100 jsr koget 110 cpx #1 :beq hole1 120 cpx #2 :beq hole2 130 cpx #3 :beq hole3 140 cpx #4 :beq hole4 150 jmp illq 200 ; 201 ;================================== 202 ;die gespeich.screens werden ueber sys-befehl->sys828,n (n=1-4)aufgerufen 203 ;================================== 500 hole1 lda $01 :pha 510 : lda #$36 :sta $01 515 : jsr up3 :sta $fb 520 : ldy #$a0 :sty $fc 525 : jsr copy 530 : jsr up4 :ldy #$a4 540 : jmp cop2 545 ; 555 hole2 lda $01 :pha 560 : lda #$36 :sta $01 565 : jsr up3 :sta $fb 570 : ldy #$a8 :sty $fc 580 : jsr copy 585 : jsr up4 :ldy #$ac 595 : jmp cop2 600 ; 610 hole3 lda $01 :pha 615 : lda #$36 :sta $01 620 : jsr up3 :sta $fb 625 : ldy #$b0 :sty $fc 635 : jsr copy 640 : jsr up4 :ldy #$b4 650 : jmp cop2 655 ; 665 hole4 lda $01 :pha 670 : lda #$36 :sta $01 675 : jsr up3 :sta $fb 680 : ldy #$b8 :sty $fc 690 : jsr copy 695 : jsr up4 :ldy #$bc 705 : jmp cop2 710 ; 720 up3 lda #$00 :ldy #$04 ;$0400 nach 725 : sta $fd :sty $fe ;$fd/e 730 : rts 734 ; 735 up4 lda #$00 :ldy #$d8 ;$d800 nach 740 : sta $fd :sty $fe ;$fd/e 745 : rts 749 ; 750 cop2 sta $fb :sty $fc 755 : jsr copy 765 : pla :sta $01 770 : rts ;fertig 775 ; 900 copy ldx #4 :ldy #0 ;kopierroutine 905 n lda ($fb),y 910 : sta ($fd),y 915 : iny 920 : bne n 925 : inc $fc :inc $fe 930 : dex 935 : bne n 940 rts