Hallo Michael!
Danke, gern geschehn!
Bei einem Reset (oder JMP $E474) wird RAMTOP wieder auf 192 (bzw. 160 im Fall von Atari Basic) zurückgesetzt, ansonsten bleibt es erhalten. Ausser natürlich, Du (oder ein anderes Programm) änderst es :-)
Das liegt am ANTIC bzw. am OS. Gib zB mal "POKE 106,190:GR.8:C.1:PL.0,0:DR.319,159" ein, dann siehst Du es :-)
Der ANTIC kann immer nur Blöcke von 4k ansprechen, und die Routinen im OS erzeugen bei Modi die mehr als 4k brauchen entsprechende Display Lists. Liegt RAMTOP nicht auf einer 4k Grenze gibt das Fehler.
Im Prinzip würden 2k genügen, wenn Du zB nur Graphics 0 (bzw. Modi die max. 2k brauchen) nimmst. Das oberste 1k muss frei bleiben, bei einem Reset landet dort der Graphics 0 Bildschirm - der Speicher wird gelöscht. Das Poke 106,176 kommt ja erst später. Darunter sind dann 1k für den Hisio Code (ab $B800), den Speicher von $B000-$B7FF kannst Du natürlich auch noch beliebig nutzen). POKE 106,184 geht also auch, aber mit einigen Einschränkungen.
so long,
Hias
mp-one hat geschrieben:Deine Routine funktioniert super!! Vielen Dank für Deine schnelle Hilfe. Da sieht man, wo die Experten sitzen :D!
Danke, gern geschehn!
- wenn ich zu Beginn des TB-Programms POKE 106,176: GR.0 aufrufe, bleibt die 176 als RAMTOP doch auch nach GRAPHICS-Befehlen erhalten. Nur für den Fall, dass man RESET drückt, wird vom OS wieder die 192 nach Adresse 106 geschrieben. Oder gibt es nocht andere Fälle, die RAMTOP zurücksetzen, ein Sprung durch den RESET-Vektor, oder so?
Bei einem Reset (oder JMP $E474) wird RAMTOP wieder auf 192 (bzw. 160 im Fall von Atari Basic) zurückgesetzt, ansonsten bleibt es erhalten. Ausser natürlich, Du (oder ein anderes Programm) änderst es :-)
- woher kommt es, dass Du 16 Pages = 4K reserviert hast, die Routine selber ist ja nur knapp 1KB groß. Müssen da auch "gerade Grenzen" teilbar durch <xx>KB beachtet werden?
Das liegt am ANTIC bzw. am OS. Gib zB mal "POKE 106,190:GR.8:C.1:PL.0,0:DR.319,159" ein, dann siehst Du es :-)
Der ANTIC kann immer nur Blöcke von 4k ansprechen, und die Routinen im OS erzeugen bei Modi die mehr als 4k brauchen entsprechende Display Lists. Liegt RAMTOP nicht auf einer 4k Grenze gibt das Fehler.
Im Prinzip würden 2k genügen, wenn Du zB nur Graphics 0 (bzw. Modi die max. 2k brauchen) nimmst. Das oberste 1k muss frei bleiben, bei einem Reset landet dort der Graphics 0 Bildschirm - der Speicher wird gelöscht. Das Poke 106,176 kommt ja erst später. Darunter sind dann 1k für den Hisio Code (ab $B800), den Speicher von $B000-$B7FF kannst Du natürlich auch noch beliebig nutzen). POKE 106,184 geht also auch, aber mit einigen Einschränkungen.
so long,
Hias