9237
DEMO -> Othertypeins
© CPC Amstrad International (1992)
 
 
 
CRTC Programmierung Listing 9
cpc
 
 

Manual n° 1

* SCREEN SPLITTING ;SPECIAL EFFECTS - Listing #9 ;Screen Splitting - Kommentierter Quellcode ;(C)1992 by ELMSOFT and CPC AMSTRAD INTERNATIONAL ;Geschrieben fuer MAXAM Assembler V1.13 NOLIST ;Keine Ausgaben. ORG &4000 ;Programmstart bei 16384. LD HL,(&38) ;Teil des JPs zur Interruptroutine LD (STORE+1),HL ;bei &38 sichern, LD HL,&C9FB ;dann ein EI;RET (=&FB,&C9) an Adresse &38 poken, LD (&38),HL ;ein auftretender Interrupt hat so keine Wirkung, ;kann aber zur Synchronisation verwendet werden. LD HL,1000 ;Wieder 20 Sekunden lang. LOOP PUSH HL ;Zaehler sichern. LD B,&F5 ;Auf das vertikale FRAME IN A,(C) ;Synchronisations- RRCA ;signal (=VSYNC) JP NC,FRAME ;warten... LD BC,&7F10 ;BORDER 6 OUT (C),C LD C,&4C OUT (C),C LD BC,&BC04 ;Jeder der 6 untereinander angezeigten Ausschnitte OUT (C),C ;ist 6 Textzeilen gross, also den Wert 5 LD BC,&BD05 ;ins CRTC Register 4 OUT (C),C ;schreiben. LD BC,&BC07 ;VSR soll bei Zeile 6 aktiviert werden, ein Wert OUT (C),C ;den der Textzeilenzaehler durch die Register 4- LD BC,&BD06 ;Manipulation nie erreicht,die VSR-Balken werden OUT (C),C ;also unterdrueckt. ;Jetzt wird alle 6 Textzeilen (entspricht umgefaehr einem Interruptzyklus) ;die Bildschirmspeicherstartadresse geaendert. (SCReenADdress 1 und 2) CALL SCRAD1:HALT:CALL SCRAD2:HALT:CALL SCRAD1:HALT CALL SCRAD2:HALT:CALL SCRAD1:HALT:CALL SCRAD2:HALT LD BC,&BC04 ;Der letzte Ausschnitt ist OUT (C),C ;nur noch LD BC,&BD03 ;4 Textzeilen OUT (C),C ;hoch. LD BC,&BC07 ;Dafuer wird an dessen Ende OUT (C),C ;der VSR LD BC,&BD03 ;ausgeloest,worauf der Monitor OUT (C),C ;wieder ganz oben mit dem Bildaufbau beginnt. LD HL,(ADD1) ;Die erste Videoramadresse wird erhoeht, INC HL ;also ein Scrolling nach links. RES 2,H ;Korrektur. Nach &33FF folgt statt &3400 wieder &3000. LD (ADD1),HL ;Neue Adresse wieder speichern. LD HL,(ADD2) ;Die zweite Videoramadresse wird erniedrigt, LD DE,&3FF ;was einer Addition von &3FF entspricht-->Scrolling nach rechts. ADD HL,DE ;Addieren, RES 2,H ;korrigieren LD (ADD2),HL ;und zurueckschreiben. POP HL ;Obligatorischer Schleifendurchlauf.(1000x) DEC HL LD A,H OR L JP NZ,LOOP ;CRTC Register 4 und 7 wieder mit normalen Werten fuellen. LD BC,&BC04:OUT (C),C LD BC,&BD26:OUT (C),C LD BC,&BC07:OUT (C),C LD BC,&BD1E:OUT (C),C STORE LD HL,0 ;Zwei Bytes nach &38 LD (&38),HL ;zurueck und RET ;ins BASIC. SCRAD1 LD HL,(ADD1);Videoramadresse 1 nach HL JR SCRAD ;und zum CRTC Registerladen springen. SCRAD2 LD HL,(ADD2);Videoramadresse 2 nach HL SCRAD LD BC,&BC0C ;CRTC Register 12 (HIGHBYTE Videoram) OUT (C),C ;auswaehlen INC B ;und H ueber &BDXX OUT (C),H ;ausgeben. DEC B INC C ;BC enthaelt jetzt &BC0D OUT (C),C ;Register 13 auswaehlen INC B ;und das Lowbyte L OUT (C),L ;ausgeben. RET ADD1 DW &3000 ;Adresse 1,Linksscroll. ADD2 DW &3000 ;Adresse 2,Rechtsscroll.


Goto Top
CPC-POWER/CPCSOFTS, programming by Kukulcan © 2007-2021 all rights reserved.
Reproduction forbidden without any express authorization. All the game titles used belong to their respective owners.
Hébergement Web, Mail et serveurs de jeux haute performance