C 64
Tips & Tricks

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.

  1. 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.
  2. 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
(W.Schneider/og)
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
Listing 1. »SCREENCOPY«, ein Programm zur Verwaltung von bis zu 4 Bildschirmseiten. Bitte beachten Sie die Eingabehinweise auf Seite 7.
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
Listing 2. »PAGE4« zum Einbauen in Ihre eigenen Programme
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
Listing 3. »SCR.RENAME« zum Umbenennen der Bildschirme vor dem Speichern
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"
Listing 4. Source-Code-Listing zu »SCREENCOPY«
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
Listing 5. Source-Code-Listing zu »PAGE4«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →