Irgendwo habe ich mal gelesen, das man am CPC 2 Bildschirmseiten einrichten kann und dann durch einen Pokebefehl umschalten kann.
Finde ihn nicht mehr.
mfg
Irgendwo habe ich mal gelesen, das man am CPC 2 Bildschirmseiten einrichten kann und dann durch einen Pokebefehl umschalten kann.
Finde ihn nicht mehr.
mfg
Hi,
die Befehle direkt weiss ich nicht mehr auswendig, da ich die seit zig Jahren nicht mehr verwendet habe, aber folgendes ist von Basic aus möglich:
1. Du kannst den Start des Bildschirmspeichers verlegen, indem Du die neue Startadresse in den CRTC schreibst.
2. Du kannst beim 6128 einfach die Speicherbank 7 an Adresse #C000 einblenden. Das läuft dann über das Gate Array.
Mit diesen Anhaltspunkten solltest Du die genauen Portdressen/-Register in jedem CPC-Buch finden.
cu,
The Cranium
Ich wollte den Bereich von hex4000 bis hex 7fff als 2.Screen benutzen.
Irgendwo gab es einen Pokebefehl womit ich dem Rechner mitteile, wo sich die Grafikk befindet.
mfg
Im Data Becker "Peeks und Pokes" habe ich folgendes gefunden:
Auf dem BASIC heraus kannst du mit CALL &BC06,&40 kannst du den Bildschirmspeicher nach &4000 verschieben (Bank1) und mit CALL &BC06,&C0 wieder auf Bank3 einrichten.
In dem Buch steht auch, das sich das OS den Anfang des Bildschirmspeichers an Adresse &B1CB merkt.
Im Data Becker "Tips und Trick" steh auch &BC06.
Allerdings steht im CPC-Intern 664/6128 auf Seite 133 das man Adresse &BC08 mit CALL aufrufen muss. Der Vector heisst SCR SET BASE.
Das gleich steht auch im 464-Intern auf Seite ab Seite 79.
Ich habe das mal per WinAPE ausprobiert:
Von BASIC aus hat es mit nur mit &BC06 funktioniert.
Per Assembler ging es mit &BC06 und &BC08.
Keine Ahnung warum das so ist.
Quote
In dem Buch steht auch, das sich das OS den Anfang des Bildschirmspeichers an Adresse &B1CB merkt.
Was muss man denn da noch reinpoken?
mfg
Wie kann ich denn das machen, das ich dem Screen &c000 schreibe, mich aber im Screen ab &4000 befinde bzw den ich sehe. Sozusagen in die unsichtbare Seite schreiben, solange ich mich auf der Sichtbaren Seite befinde, nicht mit Poke , sondern mit den Printbefehlen von Basic zb?
mfg
Ich befuerchte, dass das wohl nicht funktionieren wird, da die Systemroutinen immer nur auf die aktiven Bildschirmseiten zugreifen. Wenn du aber eigene Spriteroutinen verwendest oder in C z.B. die CPCRSlib, dann kannst du in den nicht-aktiven Bereich schreiben und umschalten, wenn das Bild fertig dargestellt ist. Bin mir aber nicht sicher, ob man die Schreibroutinen nicht irgendwie umbiegen kann - da muesste ich auch erst ins Firmware Manual schauen.
Ich denke, das es klappe könnte, wenn du Mit CALL &BC06,&40 den Bildschirmspeicher verschiebst und danach mit Poke &B1CB,&C0 dem OS sagst, das der Bildschirmspeicher an der anderen Stelle ist.
Das OS müsste dann die Routinen auf &C000 anwenden, der 6845 (also der Video-Chip) greift bei der Bilddarstellung auf &4000 zu.
Ich habe grad nochmal nachgesehen: Im Data Becker "CPC Peek und Pokes" ist dieses Verfahren genauso beschrieben. Du findest das auf Seite 37-38 (Grafik im Verborgenen).
Eigentlich ganz einfach ....
WICHTIG: Ich habe das mit WinAPE nur in der Einstellung CPC 464 hinbekommen. Ich denke, das die Speicherzelle &b1cb bei den anderen Modellen verschoben wurde.
10 MODE 2
20 MEMORY &3FFF
30 POKE &B1CB,&C0
35 CLS
40 PRINT "Test C000"
50 POKE &B1CB,&40
55 CLS
60 PRINT "Test 4000"
70 CALL &BC06,&C0
80 CALL &BC06,&40
90 GOTO 70
Display More
EDIT:
Ich habe nochmal gewühlt:
Die Speicherstelle &B1CB heißt "SCR High Byte Screen Start" und ist beim
CPC 664 und 6128 an &B7C6 zu finden. Gefunden im "Intern 664/6128" Seiten 142 und 145.
Im "Intern 464" ist es auf Seite 87
Danke für die Info.
mfg