Ich suche eine ASM-Befehlessequenz um $4000byte von $4000 nach $c000 zu kopieren. Finde es hier nicht mehr.
Wer kann weiterhelfen?
Gruss
Ich suche eine ASM-Befehlessequenz um $4000byte von $4000 nach $c000 zu kopieren. Finde es hier nicht mehr.
Wer kann weiterhelfen?
Gruss
Lösung gefunden für ccz80 und Cpc6128 :
ASMfunction heisst: copy_40_c0()
Copiert 16000 Byte vom Screen $4000 nach Screen $c000
Im Screen $4000(hintergrund) wird eine Linie gezeichnet, die 10x nach vorn in $c000 kopiert wird.
Der Screen $4000 wird mit Poke &b7c6,&40 gesetzt, natürlich in ccz80 mit einem Zeiger. Mit set_scr(#c0) wird auf dem sichtbaren Screen geschaltet.
include "cpc6128.ccz80";
function inline byte copy_40_c0()
{
"ld de,#c000","ld hl,#4000",
"ld bc,#4000","ldir"
}
function inline byte set_scr(byte)
{
"call __scr_set_base"
}
word scradr,zaehler,i;
scradr=#b7c6;
zaehler=10;
mode(2);
*(scradr)=#40;
move(0,0);
drawr(300,400);
set_scr(#c0);
cls();
for (i = 1; i <= zaehler; ++i)
{
cls();
copy_40_c0();
}
return;
Alles anzeigen
Und diese ganze schoose oben ist mit dem ccz80 nur 138 Byte klein, die dann mit "call &8000" gestartet wird und ab geht es wie ein Blitz mit dem 10x kopieren und löschen mit "cls".
Wollte mal testen, wie schnell es wird. Ist schon beeindruckend.
Das Programm könnte man auch unterhalb vom Screen &4000 setzen.