Stack unter CPCtelera verschieben

Will man unter CPCtelera bspw. Doublebuffering für die Grafik verwenden, kann es notwendig sein, den Stackpointer zu verschieben, damit man nicht in den sichtbaren Bildschirmspeicher schreibt. Die folgende Routine sollte direkt zu Beginn der Main Methode im Programm aufgerufen werden (ggf. nach dem Ausschalten der Interrupts). Sie verschiebt den Stack an die Adresse 0x8000:

1
// in c code
extern void SetStack();
 
 
void main() {
   SetStack();
   ...
}
 
 
; in assembly (.s file).
 
.area _CODE
 
 
_SetStack::
	pop hl ; preserve return address in main()
	ld sp, #0x8000 ; whatever address you want stack to start at
	jp (hl) ; return

Quelle: CPC Wiki

amstradcpc/cpctelerastackverschieben.txt · Zuletzt geändert: 2015/07/11 21:06 von octoate
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0