9234
DEMO -> Othertypeins
© CPC Amstrad International (1992)
 
 
 
CRTC Programmierung Listing 6
cpc
 
 

Manual n° 1

* ONE LINE ONLY ;SPECIAL EFFECTS - Listing #6 ;One Line Only - Kommentierter Quellcode ;(C)1992 by ELMSOFT and CPC AMSTRAD INTERNATIONAL ;Geschrieben fuer MAXAM Assembler V1.13 NOLIST ;Keine Ausgaben. ORG &4000 ;Programmstart bei 16384. DI ;Alle die Synchronisation stoerenden Interrupts aus. LD A,1 ;MODE 1 CALL &BC0E ;einschalten. LD BC,&BC02 ;Bild ganz OUT (C),C ;nach LD BC,&BD31 ;links OUT (C),C ;ruecken. LD BC,&BC07 ;Und etwas nach unten OUT (C),C ;schieben,damit der LD BC,&BD1C ;Elektronenstrahl den OUT (C),C ;Scrolltext nicht zu frueh erreicht. LD BC,&7F00 ;INK 0,0 OUT (C),C LD C,&54 OUT (C),C LD HL,1000 ;Wieder 20 Sekunden. LOP2 LD B,&F5 ;Auf vertikalen FRAME IN A,(C) ;Strahlruecklauf RRCA ;warten... JR NC,FRAME PUSH HL ;Zaehler sichern. LD HL,&C001 ;Jetzt die oberste Bildschirmzeile scrollen. LOP5 PUSH HL ;HL=Quelladresse, LD D,H ;DE=HL-1 LD E,L DEC E LD BC,100 ;100 Bytes LDIR ;Scrollen. POP HL ;Alte Quelladresse zurueck LD A,H ;Und naechste Pixelzeile ADD A,8 ;berechnen. (&C0-&C8-&D0 etc.) LD H,A ;Wenn kein Ueberlauf (Carryflag bei &F8+8 gesetzt), JR NC,LOP5 ;dann noch eine Pixelzeile scrollen. LD B,100 ;Warten,bis der Elektronenstrahl die WAIT DJNZ WAIT ;Laufschrift erreicht hat. LD BC,&BC01 ;Dann CRTC OUT (C),C ;Register 1 LD BC,&BD40 ;auf &40 OUT (C),C ;setzen. FLAG LD A,1 ;Da der Text byteweise gescrollt wird,ein Buchstabe aber XOR 1 ;in Mode 1 zwei Bytes breit ist, muss nur jedes zweite LD (FLAG+1),A ;Mal ein neuer Buchstabe geprintet werden. JR Z,NOPRINT ;Wenn FLAG also null,dann NOPRINT,sonst neuer Buchstabe. LD HL,&0902 ;Cursor auf Buchstaben- CALL &BB75 ;printposition setzen. CHARA LD A,32 ;ASCII Code des neuen Zeichens laden, INC A ;erhoehen, LD (CHARA+1),A ;und zurueckschreiben. CP 126 ;Wenn noch nicht CHR$(126), JR NZ,PRIN ;dann Zeichen Printen, LD A,32 ;sonst wieder bei SPACE LD (CHARA+1),A ;=CHR$(32) beginnen. PRIN CALL &BB5A;Zeichen an Cursorposition ausgeben. NOPRINT DI ;Interrupts wieder abschalten. POP HL ;Zaehler vom Stack holen, DEC HL ;DECrementieren, LD A,H ;und 1000x OR L ;zu LOP2 JR NZ,LOP2 ;zurueckspringen. ;CRTC Register mit Standardwerten laden. LD BC,&BC01:OUT (C),C LD BC,&BD28:OUT (C),C LD BC,&BC02:OUT (C),C LD BC,&BD2F:OUT (C),C LD BC,&BC07:OUT (C),C LD BC,&BD1E:OUT (C),C EI ;Interrupts ein - RET ;und zum Basic.


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