Die Displaylist und den Header habe ich wegen der Kürze wieder ins Hauptprogramm integriert... ist dann auch leichter hier und für mich mit den Dateien zu handeln, als icl (include) habe ich dann nur noch die Character und Landschaft...
Mit der letzten Reihe bin ich noch nicht ganz zufrieden, das Feinscroll läuft jetzt aber echt gut!
der Hauptcode:
Code: Alles auswählen
			org $2000
			
ch = $2f4 ;High byte character set pointer
savmsc = $58
gprior = $26f
color4 = $2c8
sdlstl = $230 ;Start DisplayList
vscrol = $d405 ;vertikal scrol
wsync = $d40a 
RTCLOk = $0012
SETVBV   = $e45c
var1 = $a0
var2 = $a2
var3 = $a4
var4 = $a6
var5 = $a8
var6 = $b0
var7 = $b2
delay = $b4
			icl 'character.asm'
			icl 'lands.asm'	
        
dlist      	 	.byte 112,112,112,98
			.byte 30,75
			.byte 34,34,34,34,34,34,34,34,34,34,34,34
			.byte 34,34,34,34,34,34,34,34,34,34,2
			.byte 65,32,156
						
			.proc main
			
			jsr displaylist ;Subroutine Displaylist-Aufbau
						
start1			mva #>chr ch ;HighByte Character Pointer auf $2000 setzen
			mva #192 gprior	;GTIA Modus 3 (16 Farben) initialisieren
			mva #8 color4	;Hintergrundfarbe / Helligkeit festlegen			
			lda #0 \ tax \ sta var3 \ sta var4 \ sta var6 \ sta var7 \ sta var6+1
			mva <lands var6
			mva >lands var6+1
						
hauptprogramm
						
			jsr letztereihe 		;letzte Reihe (lands) Bildschirm1 printen (sichtbar)	
			jsr feinscroll 			;Feinscroll Bildschirm1 ausführen (sichtbar)
									
			mva #$30 var1			;var1 auf 30000 ($7530) setzen
			mva #$75 var1+1
			mva #$f0 var2			;var2 auf 30960 ($78f0) setzen
			mva #$78 var2+1
			
			jsr grobscroll			;Bildschirm1 kopieren + grobscroll
		
			mva #$18 var1			;var1 + var2 auf 31000 ($7918) setzen
			mva #$18 var2
			mva #$79 var1+1
			mva #$79 var2+1	
			
			jsr umschalten			;umschalten auf Bildschirm2 - Bildschirm2 wird sichtbar
			jsr letztereihe			;letzte Reihe (lands) Bildschirm2 printen (sichtbar)	
			jsr feinscroll			;Feinscroll Bildschirm2 ausführen (sichtbar)						
			mva #$08 var2			;var1 auf 29960 ($7508) setzen
			mva #$75 var2+1
			mva #$18 var1			;var2 auf 31000 ($7918) setzen
			mva #$79 var1+1
			
			jsr grobscroll			;;Bildschirm2 kopieren + grobscroll
			
			mva #$30 var1			;var1 + var2 auf 30000 ($7530) setzen
			mva #$30 var2
			mva #$75 var1+1
			mva #$75 var2+1
			jsr umschalten			;umschalten auf Bildschirm1 - Bildschirm1 wird sichtbar
			;Ende der Bildschirmausführung / Kontrolle Durchläufe
			sec
			lda #38 				; - 36 = Anzahl der Durchläufe
			sbc var6+1
			bpl @+
							
			jmp start1						;Stop hier
@		 	jmp hauptprogramm	 			;weiter
			
			.endp
			
			; _____________________________________________________________________________________
			;
			; ---------------------------- S U B R O U T I N E N ----------------------------------
			; _____________________________________________________________________________________
umschalten
			ldy #4
			mva sdlstl var5
			mva sdlstl+1 var5+1
			lda var1
			sta (var5),y
			iny
			lda var1+1
			sta (var5),y
			rts
			; -------------------------------------------------------------------------------------
wartes		
			clc
 		   	ldx delay ; Warteschleife
st  			lda RTCLOK+2    
wa   		cmp RTCLOK+2    
        		beq wa    
        		dex            
        		bpl st 
        		rts
        	
        	; -------------------------------------------------------------------------------------
        	
feinscroll
			ldy #1
			mva #1 delay
@			jsr wartes
			sty vscrol
			iny
			cpy #8
			bne @-			
			rts
        	
        	; --------------------------------------------------------------------------------------
        	
grobscroll	
			;Den Bildschirm um eins hoch / Grobscrolling um eine Zeile
			ldx #22
@			ldy #$28
			clc
@			mva (var1),y (var2),y
			dey
			bpl @-
			clc
			lda var1
			adc #$28
			sta var1
			bcc @+
			inc var1+1
@			clc
			lda var2
			adc #$28
			sta var2
			bcc @+
			inc var2+1			
@			clc
			dex
			bpl @-3
			rts
			
			; -------------------------------------------------------------------------------
			
displaylist
			; initialisiere die Displaylist
			mva sdlstl var5
			mva sdlstl+1 var5+1
			ldy #0
			clc
@			lda dlist,y
			sta (var5),y
			iny
			cpy #34
			bne @-
			rts
			
			; ---------------------------------------------------------------------------------------
			
letztereihe
			;Die letzte Reihe printen 
			;Start der letzten Reihe bei var1 - Line 22
			lda var1
			adc #112
			sta var1
			inc var1+1
			inc var1+1
			inc var1+1
			ldy #0
			clc
			
			lda (var6),y ;Boarder1 holen
			sta var5 	;Boarderanzahl in var5 speichern
			lda var6
			adc #1
			sta var6
			ldy #0
			lda var6+1
			adc #0
			sta var6+1			
			lda (var6),y
			ldy var5
						
@			sta (var1),y ;Boarder1 printen
			dey
			bpl @-			
			clc
			lda var6
			adc #1
			sta var6
			ldy #0
			lda var6+1
			adc #0
			sta var6+1	
						
			lda (var6),y ;Rand Boarder1 holen
			inc var5	;Zeilenzähler eins weiter
			ldy var5
			sta (var1),y ;Rand Boarder1 printen
			clc
			lda var6
			adc #1
			sta var6
			ldy #0
			lda var6+1
			adc #0
			sta var6+1	
						
			lda(var6),y ;leer holen
			tax
			lda #0
			ldy var5			
@			iny			 
			sta (var1),y ; leer printen
			dex
			bpl @-
			
			sty var5 ;Zeilenzähler sichern
			clc
			lda var6
			adc #1
			sta var6
			ldy #0
			lda var6+1
			adc #0
			sta var6+1	
						
			lda(var6),y ;Rand Boarder2 holen
			ldy var5
			iny
			sty var5
			sta (var1),y ;Rand Boarder2 printen
			clc
			lda var6
			adc #1
			sta var6
			ldy #0
			lda var6+1
			adc #0
			sta var6+1	
						
			lda(var6),y ;Boarder2 holen
			tax 		;Boarderanzahl in x speichern
			clc
			lda var6
			adc #1
			sta var6
			ldy #0
			lda var6+1
			adc #0
			sta var6+1	
			lda (var6),y
			ldy var5
@			iny
			sta (var1),y	;Boarder2 printen
			dex
			bpl @-
			clc
			lda var6
			adc #1
			sta var6
			ldy #0
			lda var6+1
			adc #0
			sta var6+1
			mva #0 vscrol	
			rts
			
			; ------------------------------------------------------------------------------
			
			
			run main
			
			
hier sind viele Zeilen erstmal dupliziert...
Code: Alles auswählen
;@com.wudsn.ide.asm.mainsourcefile=test.asm
		
lands			.byte 9,2,1,20,10,9,2
			.byte 9,2,1,18,10,11,2
			.byte 9,2,1,17,10,12,2
			.byte 9,2,1,16,10,13,2
			.byte 9,2,1,15,10,15,2
			.byte 9,2,1,14,10,16,2
			.byte 9,2,1,13,10,17,2
			.byte 10,2,1,12,10,17,2
			.byte 11,2,1,11,10,18,2
			.byte 12,2,1,10,10,17,2
			.byte 13,2,1,10,10,15,2
			.byte 14,2,1,10,10,14,2
			.byte 14,2,1,10,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 12,2,1,12,10,14,2
			.byte 11,2,1,12,10,15,2
			.byte 13,2,1,11,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 12,2,1,12,10,14,2
			.byte 11,2,1,12,10,15,2
			
			.byte 9,2,1,20,10,9,2
			.byte 9,2,1,18,10,11,2
			.byte 9,2,1,17,10,12,2
			.byte 9,2,1,16,10,13,2
			.byte 9,2,1,15,10,15,2
			.byte 9,2,1,14,10,16,2
			.byte 9,2,1,13,10,17,2
			.byte 10,2,1,12,10,17,2
			.byte 11,2,1,11,10,18,2
			.byte 12,2,1,10,10,17,2
			.byte 13,2,1,10,10,15,2
			.byte 14,2,1,10,10,14,2
			.byte 14,2,1,10,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 12,2,1,12,10,14,2
			.byte 11,2,1,12,10,15,2
			.byte 13,2,1,11,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 12,2,1,12,10,14,2
			.byte 11,2,1,12,10,15,2
			
			.byte 9,2,1,20,10,9,2
			.byte 9,2,1,18,10,11,2
			.byte 9,2,1,17,10,12,2
			.byte 9,2,1,16,10,13,2
			.byte 9,2,1,15,10,15,2
			.byte 9,2,1,14,10,16,2
			.byte 9,2,1,13,10,17,2
			.byte 10,2,1,12,10,17,2
			.byte 11,2,1,11,10,18,2
			.byte 12,2,1,10,10,17,2
			.byte 13,2,1,10,10,15,2
			.byte 14,2,1,10,10,14,2
			.byte 14,2,1,10,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 12,2,1,12,10,14,2
			.byte 11,2,1,12,10,15,2
			.byte 13,2,1,11,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 12,2,1,12,10,14,2
			.byte 11,2,1,12,10,15,2
			
			.byte 9,2,1,20,10,9,2
			.byte 9,2,1,18,10,11,2
			.byte 9,2,1,17,10,12,2
			.byte 9,2,1,16,10,13,2
			.byte 9,2,1,15,10,15,2
			.byte 9,2,1,14,10,16,2
			.byte 9,2,1,13,10,17,2
			.byte 10,2,1,12,10,17,2
			.byte 11,2,1,11,10,18,2
			.byte 12,2,1,10,10,17,2
			.byte 13,2,1,10,10,15,2
			.byte 14,2,1,10,10,14,2
			.byte 14,2,1,10,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 12,2,1,12,10,14,2
			.byte 11,2,1,12,10,15,2
			.byte 13,2,1,11,10,14,2
			.byte 13,2,1,11,10,14,2
			.byte 12,2,1,12,10,14,2
			.byte 11,2,1,12,10,15,2Code: Alles auswählen
;@com.wudsn.ide.asm.mainsourcefile=test.asm
chr			.he 0,0,0,0,0,0,0,0
			.he f0,f0,ff,ff,ff,ff,f0,f0
			.he ff,ff,ff,ff,ff,ff,ff,ff
			.he 0f,0f,ff,ff,ff,ff,0f,0f
			.he f0,f0,f0,f0,f0,f0,f0,f0
			.he 0f,0f,0f,0f,0f,0f,0f,0f
			.he 0,0,0,0,ff,ff,ff,ff
			.he ff,ff,ff,ff,0,0,0,0
			.he f0,f0,f0,f0,ff,ff,ff,ff
			.he ff,ff,ff,ff,f0,f0,f0,f0
			.he 0f,0f,0f,0f,ff,ff,ff,ff
			.he ff,ff,ff,ff,0f,0f,0f,0f
			
			.he e0,e0,ee,ee,ee,ee,e0,e0
			.he ee,ee,ee,ee,ee,ee,ee,ee
			.he 0e,0e,ee,ee,ee,ee,0e,0e
			.he e0,e0,e0,e0,e0,e0,e0,e0
			.he 0e,0e,0e,0e,0e,0e,0e,0e
			.he 0,0,0,0,ee,ee,ee,ee
			.he ee,ee,ee,ee,0,0,0,0
			.he e0,e0,e0,e0,ee,ee,ee,ee
			.he ee,ee,ee,ee,e0,e0,e0,e0
			.he 0e,0e,0e,0e,ee,ee,ee,ee
			.he ee,ee,ee,ee,0e,0e,0e,0e
			
			.he d0,d0,dd,dd,dd,dd,d0,d0
			.he dd,dd,dd,dd,dd,dd,dd,dd
			.he 0d,0d,dd,dd,dd,dd,0d,0d
			.he d0,d0,d0,d0,d0,d0,d0,d0
			.he 0d,0d,0d,0d,0d,0d,0d,0d
			.he 0,0,0,0,dd,dd,dd,dd
			.he dd,dd,dd,dd,0,0,0,0
			.he d0,d0,d0,d0,dd,dd,dd,dd
			.he dd,dd,dd,dd,d0,d0,d0,d0
			.he 0d,0d,0d,0d,dd,dd,dd,dd
			.he dd,dd,dd,dd,0d,0d,0d,0d
			
			.he c0,c0,cc,cc,cc,cc,c0,c0
			.he cc,cc,cc,cc,cc,cc,cc,cc
			.he 0c,0c,cc,cc,cc,cc,0c,0c
			.he c0,c0,c0,c0,c0,c0,c0,c0
			.he 0c,0c,0c,0c,0c,0c,0c,0c
			.he 0,0,0,0,cc,cc,cc,cc
			.he cc,cc,cc,cc,0,0,0,0
			.he c0,c0,c0,c0,cc,cc,cc,cc
			.he cc,cc,cc,cc,c0,c0,c0,c0
			.he 0c,0c,0c,0c,cc,cc,cc,cc
			.he cc,cc,cc,cc,0c,0c,0c,0c
			
			.he b0,b0,bb,bb,bb,bb,b0,b0
			.he bb,bb,bb,bb,bb,bb,bb,bb
			.he 0b,0b,bb,bb,bb,bb,0b,0b
			.he b0,b0,b0,b0,b0,b0,b0,b0
			.he 0b,0b,0b,0b,0b,0b,0b,0b
			.he 0,0,0,0,bb,bb,bb,bb
			.he bb,bb,bb,bb,0,0,0,0
			.he b0,b0,b0,b0,bb,bb,bb,bb
			.he bb,bb,bb,bb,b0,b0,b0,b0
			.he 0b,0b,0b,0b,bb,bb,bb,bb
			.he bb,bb,bb,bb,0b,0b,0b,0b
			
			.he a0,a0,aa,aa,aa,aa,a0,a0
			.he aa,aa,aa,aa,aa,aa,aa,aa
			.he 0a,0a,aa,aa,aa,aa,0a,0a
			.he a0,a0,a0,a0,a0,a0,a0,a0
			.he 0a,0a,0a,0a,0a,0a,0a,0a
			.he 0,0,0,0,aa,aa,aa,aa
			.he aa,aa,aa,aa,0,0,0,0
			.he a0,a0,a0,a0,aa,aa,aa,aa
			.he aa,aa,aa,aa,a0,a0,a0,a0
			.he 0a,0a,0a,0a,aa,aa,aa,aa
			.he aa,aa,aa,aa,0a,0a,0a,0a
			
			.he 90,90,99,99,99,99,90,90
			.he 99,99,99,99,99,99,99,99
			.he 09,09,99,99,99,99,09,09
			.he 90,90,90,90,90,90,90,90
			.he 09,09,09,09,09,09,09,09
			.he 0,0,0,0,99,99,99,99
			.he 99,99,99,99,0,0,0,0
			.he 90,90,90,90,99,99,99,99
			.he 99,99,99,99,90,90,90,90
			.he 09,09,09,09,99,99,99,99
			.he 99,99,99,99,09,09,09,09
			
			.he 80,80,88,88,88,88,80,80
			.he 88,88,88,88,88,88,88,88
			.he 08,08,88,88,88,88,08,08
			.he 80,80,80,80,80,80,80,80
			.he 08,08,08,08,08,08,08,08
			.he 0,0,0,0,88,88,88,88
			.he 88,88,88,88,0,0,0,0
			.he 80,80,80,80,88,88,88,88
			.he 88,88,88,88,80,80,80,80
			.he 08,08,08,08,88,88,88,88
			.he 88,88,88,88,08,08,08,08
			
			.he 70,70,77,77,77,77,70,70
			.he 77,77,77,77,77,77,77,77
			.he 07,07,77,77,77,77,07,07
			.he 70,70,70,70,70,70,70,70
			.he 07,07,07,07,07,07,07,07
			.he 0,0,0,0,77,77,77,77
			.he 77,77,77,77,0,0,0,0
			.he 70,70,70,70,77,77,77,77
			.he 77,77,77,77,70,70,70,70
			.he 07,07,07,07,77,77,77,77
			.he 77,77,77,77,07,07,07,07
			
			.he 60,60,66,66,66,66,60,60
			.he 66,66,66,66,66,66,66,66
			.he 06,06,66,66,66,66,06,06
			.he 60,60,60,60,60,60,60,60
			.he 06,06,06,06,06,06,06,06
			.he 0,0,0,0,66,66,66,66
			.he 66,66,66,66,0,0,0,0
			.he 60,60,60,60,66,66,66,66
			.he 66,66,66,66,60,60,60,60
			.he 06,06,06,06,66,66,66,66
			.he 66,66,66,66,06,06,06,06
			
			.he 50,50,55,55,55,55,50,50
			.he 55,55,55,55,55,55,55,55
			.he 05,05,55,55,55,55,05,05
			.he 50,50,50,50,50,50,50,50
			.he 05,05,05,05,05,05,05,05
			.he 0,0,0,0,55,55,55,55
			.he 55,55,55,55,0,0,0,0
			.he 50,50,50,50,55,55,55,55
			.he 55,55,55,55,50,50,50,50
			.he 05,05,05,05,55,55,55,55
			.he 55,55,55,55,05,05,05,05
			
			.he 40,40,44,44,44,44,40,40
			.he 44,44,44,44,44,44,44,44
			.he 04,04,44,44,44,44,04,04
			.he 40,40,40,40,40,40,40,40
			.he 04,04,04,04,04,04,04,04
			.he 0,0,0,0,44,44,44,44
			.he 44,44,44,44,0,0,0,0
			.he 40,40,40,40,44,44,44,44
			.he 44,44,44,44,40,40,40,40
			.he 04,04,04,04,44,44,44,44
			.he 44,44,44,44,04,04,04,04
			
			.he 30,30,33,33,33,33,30,30
			.he 33,33,33,33,33,33,33,33
			.he 03,03,33,33,33,33,03,03
			.he 30,30,30,30,30,30,30,30
			.he 03,03,03,03,03,03,03,03
			.he 0,0,0,0,33,33,33,33
			.he 33,33,33,33,0,0,0,0
			.he 30,30,30,30,33,33,33,33
			.he 33,33,33,33,30,30,30,30
			.he 03,03,03,03,33,33,33,33
			.he 33,33,33,33,03,03,03,03
			
			.he 20,20,22,22,22,22,20,20
			.he 22,22,22,22,22,22,22,22
			.he 02,02,22,22,22,22,02,02
			.he 20,20,20,20,20,20,20,20
			.he 02,02,02,02,02,02,02,02
			.he 0,0,0,0,22,22,22,22
			.he 22,22,22,22,0,0,0,0
			.he 20,20,20,20,22,22,22,22
			.he 22,22,22,22,20,20,20,20
			.he 02,02,02,02,22,22,22,22
			.he 22,22,22,22,02,02,02,02
			
			.he 10,10,11,11,11,11,10,10
			.he 11,11,11,11,11,11,11,11
			.he 01,01,11,11,11,11,01,01
			.he 10,10,10,10,10,10,10,10
			.he 01,01,01,01,01,01,01,01
			.he 0,0,0,0,11,11,11,11
			.he 11,11,11,11,0,0,0,0
			.he 10,10,10,10,11,11,11,11
			.he 11,11,11,11,10,10,10,10
			.he 01,01,01,01,11,11,11,11
			.he 11,11,11,11,01,01,01,01