2 Bildschirmseiten umschalten.Wer kennt den Pokebefehl

  • 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.

  • 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.



    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