Das CLC muss man übrigens nur ganz zu Beginn machen.
Ist jetzt wirklich gewünscht den Schirm jeweils ein 1/4 mit einem anderen Zeichen zu füllen oder soll nun immer der gesamte Schirm mit einem Zeichen gefüllt werden?
Das Beispiel von goloMAK, das den gesamten Schirm füllt, könnte man auch ohne die Speicherstelle $02 zu verwenden
*=$033c
ldx #$00 ; Füllzeichen
ldx #$7f ; 128 Zeichen
loop0 txa
ldy #250
loop1 sta 1023+0*250,y
sta 1023+1*250,y
sta 1023+2*250,y
sta 1023+3*250,y
dey
bne loop1
; lda $a1
;wait cmp $a1
; beq wait
inx ; nächstes Füllzeichen
cpx #$80 ; gefüllt mit 0 - $7f
bne loop0
rts
Alles anzeigen
Moin. Habe mein Versuch nun gelöst.
In dieser Variante kann man sich auch die Zuhilfenahme von Speicherstelle 49152 sparen, indem man das direkt mit Y führt.
Die Schleife kann man in eine dekrementierende umwandeln, da spart man sich die Abfrage auf den Endwert. Da mit einem Wert >127 gearbeitet wird, verwenden wir einen Indexwert in X mit 1 ... Endwert (um 1 erhöht) und verwenden als Kompensation dafür STA basis-1,X um dann bequem nach dem DEX mit BNE die Schleife zu bilden. X läuft dann von 240 bis 1 (vorher 239 bis 0).
* = 4096
LDY #1
loop LDX #240
TYA
loop1 STA 1024-1,X
DEX
BNE loop1
INY
TYA
LDX #240
loop2 STA 1264-1,X
DEX
BNE loop2
INY
TYA
LDX #240
loop3 STA 1504-1,X
DEX
BNE loop3
INY
TYA
LDX #240
loop4 STA 1744-1,X
DEX
BNE loop4
INY
CPY #90
BNE loop
RTS
Alles anzeigen