Welcome to Schneider / Amstrad CPC Forum. Please login or sign up.

28. April 2024, 15:40:48

Login with username, password and session length

Shoutbox

TFM

2024-04-08, 20:42:44
Happy Sonnenfinsternis!  :)

TFM

2024-01-15, 17:06:57
Momentan billige Farbbänder auf Ebay für PCW

Devilmarkus

2023-07-09, 10:37:40
Zweiter 👋😂🤣

TFM

2023-06-13, 14:21:49
Sommerloch!

TFM

2023-05-30, 17:00:20
Erster ;-)

Recent

Members
  • Total Members: 221
  • Latest: scorp73
Stats
  • Total Posts: 11,721
  • Total Topics: 1,341
  • Online today: 266
  • Online ever: 1,724
  • (16. January 2020, 00:18:45)
Users Online
Users: 5
Guests: 242
Total: 247

Bild von E-RAM nach &0000 , Sprite reinsetzen und dann nach &c000

Started by cpcman, 16. January 2024, 08:45:41

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

cpcman

Hallo , guten Tag.
Vielen Dank das du meine vielen Fragen noch beantwortest für FutureOS.

Meine neue Aufgabe:
Ich möchte ein SCR-Bild vom E-RAM im Speicher &0000 hin packen , dann mit einem sogenannten Sprite oder anderes ausstatten im Hintergrund und dann fertig nach &c000 copieren.
Oder wie sieht bitte ein umschalten aus &0000>&c000>&0000
Das Bild aus dem E-RAM soll dann die Basis sein.

Diesen Text habe ich gefunden in der Beschreibung von FutureOs:
-Weiterhin steht der gesamte Bereich ab &0000 im ersten Block zur Verfügung, so lassen sich 2 Bildschirme realisieren .......

Wie sieht bitte diese Lösung aus?
Wie werden bitte die ROMS gesetzt?

Danke.

TFM

Bin mir nicht ganz sicher was Du meinst... aber ich versuchs mal...

Bild vom E-RAM nach &0000 kopieren, dann bearbeiten, und dann nach &C000 kopieren:
LD  BC,(E_RAM) ;RAM Auswahl des Bildes in BC holen, BC = &7F??
OUT (C),C      ;E-RAM des Bildes von &4000 bis &7FFF einblenden
;
LD   HL,&4000  ;Start-Adresse des E-RAMs
LD   DE,&0000  ;Ziel-Adresse ist 0
LD   BC,&4000  ;Laenge = 16 KB
LD   IX,F_MOVE ;IX = Zeiger auf super schnelle Kopier Funktion in ROM C
CALL ROM_A2C   ;OS Funktion 'F_MOVE' aufrufen und damit das Bild nach 0 kopieren
;
LD   BC,&7FC0 ;BC = RAM Auswahl für den Hautpspeicher
OUT  (C),C    ;Die ersten 64 KB wieder einblenden


; Hier erfolgt nur die Bildbearbeitung ab Adresse &0000, z.B. Sprite reinsetzen


LD   HL,&0000  ;Start-Adresse des Bildes ist &0000
LD   DE,&C000  ;Ziel-Adresse ist das Video-RAM ab &C000
LD   BC,&4000  ;Laenge = 16 KB
LD   IX,F_MOVE ;IX = Zeiger auf super schnelle Kopier Funktion in ROM C
CALL ROM_A2C   ;OS Funktion 'F_MOVE' aufrufen und damit das Bild nach 0 kopieren


Bildschirme umschalten:
;Start des Video-RAMs ab &C000 setzen
;
 LD  BC,&BC0C ;CRTC Register 12
 OUT (C),C    ;selektieren
 LD  BC,&BD30 ;Wert &30 an den CRTC schicken
 OUT (C),C    ; und zwar an das zuvor selektiert Register 12

;Start des Video-RAMs ab &8000 setzen
;
 LD  BC,&BC0C ;CRTC Register 12
 OUT (C),C    ;selektieren
 LD  BC,&BD20 ;Wert &20 an den CRTC schicken
 OUT (C),C    ; und zwar an das zuvor selektiert Register 12


;Start des Video-RAMs ab &4000 setzen
;
 LD  BC,&BC0C ;CRTC Register 12
 OUT (C),C    ;selektieren
 LD  BC,&BD10 ;Wert &10 an den CRTC schicken
 OUT (C),C    ; und zwar an das zuvor selektiert Register 12


;Start des Video-RAMs ab &0000 setzen
;
 LD  BC,&BC0C ;CRTC Register 12
 OUT (C),C    ;selektieren
 LD  BC,&BD00 ;Wert &00 an den CRTC schicken
 OUT (C),C    ; und zwar an das zuvor selektiert Register 12


Hoffe das hilft!  :smiley027:

TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)

cpcman

Danke erstmal für deine Hilfe.
Ich hatte den Text gefunden oben in der FuturOS-Hilfe das man 2 Screens einrichten kann.

Nennt man das Doppelbuffering?

Danke.

TFM

Ja, die Doppel-Pufferung ist wenn man in einen Bildschirm schreibt und den anderen in der selben Zeit anzeigt.

Permanent ganze Bildschirme verschieben kostet allerdings viel Zeit. Es ist also am besten nicht immer alle neu zu machen. Aber zum testen ist es erstmal egal. Kommt immer darauf an was Du machen willst.
TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)

cpcman

Super... es funktioniert.
Habe "Bild 1" aus dem E-RAM nach &0000 kopiert und dann 3x ab &0000 (oben links) den Wert 255 reingeschrieben und dann ab nach &c000.

Nur dieses Austeigen funktioniert nicht mehr:

LD  HL,S64X32 ;Setze Bildschirm auf 64 Zeichen und 32 Zeilen CALL ROM_A
LD HL,TUR_E ;-> Ruecksprung zum OS
JP ROM_D

Danke.

cpcman

Was bedeuten bitte diese neuen Start :
------------------------------------------
-;Start des Video-RAMs ab &C000 setzen

LD  BC,&BC0C ;CRTC Register 12
OUT (C),C    ;selektieren
LD  BC,&BD30 ;Wert &30 an den CRTC schicken
OUT (C),C    ; und zwar an das zuvor selektiert Register 12

;Start des Video-RAMs ab &8000 setzen

LD  BC,&BC0C ;CRTC Register 12
OUT (C),C    ;selektieren
LD  BC,&BD20 ;Wert &20 an den CRTC schicken
OUT (C),C    ; und zwar an das zuvor selektiert Register 12

;Start des Video-RAMs ab &4000 setzen

LD  BC,&BC0C ;CRTC Register 12
OUT (C),C    ;selektieren
LD  BC,&BD10 ;Wert &10 an den CRTC schicken
OUT (C),C    ; und zwar an das zuvor selektiert Register 12

;Start des Video-RAMs ab &0000 setzen
;
LD  BC,&BC0C ;CRTC Register 12
OUT (C),C    ;selektieren
LD  BC,&BD00 ;Wert &00 an den CRTC schicken
OUT (C),C    ; und zwar an das zuvor selektiert Register 12
------------------------------------------

Danke.

TFM

Damit kann man den Start des Video-RAMs an die Start-Adressen der vier 16 KB Blöcke verlegen, aus denen die 64 KB Hauptspeicher besteht.
Tippe es mal in BASIC ein, dann siehst Du es.


Quote from: cpcman on 16. January 2024, 15:55:10Nur dieses Aussteigen funktioniert nicht mehr:

LD  HL,S64X32 ;Setze Bildschirm auf 64 Zeichen und 32 Zeilen CALL ROM_A
call rom_a
LD HL,TUR_E ;-> Ruecksprung zum OS
JP ROM_D

Da hat Dein Programm einen Fehler: Zwischen zweiter und dritter Zeile fehlt ja auch ein CALL ROM_A. Habe es in dem Zitat von Dir verbessert. S.o.
TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)

cpcman


TFM

TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)