CODINGSOURCES ★ CODING Source &029 - ROUTINE DE SPLIT-CRTC ★

Scrolling en rasters (Ramlaid)Coding Sources
Ce source ce compile sans problème sous l'assembleur de WinAPE.

ORG #1000
;
; ROUTINE DE SPLIT-CRTC, OU LA METHODE DU COMMENT FAIRE
; UN SPLIT-RASTER SUR 16 COULEURS EN MODE 0 ?
;
; MARCHE INITIALEMENT SUR CRTC 0 ET 4
; POUR ADAPTER SUR CRTC 1, VOIR LE COURS !
;
; (C) RAMLAID FROM MORTEL
; FOR DRACULA FANZ' 5
;
LD A,0
CALL #BC0E
;
LD (SAUVESP),SP
LD HL,(#38)
LD (SAUVE),HL
LD HL,#C9FB
LD (#38),HL
LD SP,#FFF
;
LD HL,#4000
LD DE,#C000
LD BC,#3FFF
LDIR
;
LD BC,#7F10
OUT (C),C
LD A,76
OUT (C),A
;
LD BC,#BC01 ;REFORMATAGE D'ECRAN
OUT (C),C
LD BC,#BD00+48
OUT (C),C
LD BC,#BC02
OUT (C),C
LD BC,#BD00+49
OUT (C),C
;
SYNC
LD B,#F5
SYNC2 IN A,(C)
RRA
JR NC,SYNC2
;
EI
HALT
CALL GERSPLOT ;GESTION DE L'ANIMATION
HALT
HALT
DI
DEFS 6+64,0
;
CALL RASTBUF ;"AFFICHAGE" DU SPLIT-CRTC
;
TOUCHE ;TEST DE TOUCHE
LD D,5
LD BC,#F782
OUT (C),C
LD BC,#F40E
OUT (C),C
LD BC,#F6C0
OUT (C),C
LD BC,#F600
OUT (C),C
LD BC,#F792
OUT (C),C
LD A,D
AND %00001111
OR %01000000
LD B,#F6
OUT (C),A
LD B,#F4
IN A,(C)
LD BC,#F782
OUT (C),C
LD BC,#F600
OUT (C),C
CP #7F
JR Z,SORT
JP SYNC
;
SORT LD HL,(SAUVE) ;ON RECUPERE TOUT
LD (#38),HL
LD SP,(SAUVESP)
LD BC,#7F10
OUT (C),C
LD A,#54
OUT (C),A
LD BC,#BC01 ;ON REFORMATE L'ECRAN
OUT (C),C
LD BC,#BD00+40
OUT (C),C
LD BC,#BC02
OUT (C),C
LD BC,#BD00+46
OUT (C),C
LD BC,#BC06
OUT (C),C
LD BC,#BD00+25
OUT (C),C
LD BC,#BC08
OUT (C),C
LD BC,#BD00
OUT (C),C
RET
;
GERSPLOT
LD HL,RASTBUF ;ON EFFACE LA ZONE QUI PERMET
LD (HL),0 ;L'ANIMATION AU NOPS PRES
LD DE,RASTBUF+1
LD BC,RASTSUI-RASTBUF-1
LDIR
;
POSX LD A,0 ;VALEUR DU DECALAGE
LD HL,RASTBUF
LD E,A
LD D,0
ADD HL,DE ;ON L'AJOUTE A L'ADRESSE DE RASTBUF
;
LD (HL),#C3 ;ON POKE UN P'TIT 'JP'
INC HL
LD DE,RASTSUI ;PUIS ON POKE 'RASTSUI'
LD A,E ;ON OBTIENT AINSI A L'ADRESSE
LD (HL),A ;RASTBUF+DECALAGE LA COMMANDE :
INC HL ; 'JP RASTSUI'
LD A,D ; DONC LA ROUTINE PEUT CONTINUER !
LD (HL),A
RET
;
RASTBUF
JP RASTSUI ;ZONE DE 50+3 NOP DANS LEQUEL ON FAIT
DEFS 50,0 ;BOUGER L'INSTRUCTION 'JP RASTSUI'
;
RASTSUI ;ON CONTINU LA ROUTINE
LD HL,TABLE ;TABLE DE COULEUR 1ER BLOC
LD A,19 ;NOMBRE DE LIGNE 1ER BLOC
RASTON LD D,48 ;VALEUR CRTC POUR VOIR BORDER
RASTOFF LD E,0 ;VALEUR CRTC POUR VOIR ECRAN
VALCRTC LD BC,#BC08 ;REGISTRE CRTC A CHANGER
OUT (C),C ;POUR ADAPTER, CF COURS
INC B
LD BC,#7F10
OUT (C),C ;ON INITIALISE LE BORDER
;
RASTBOU
LD B,#7F ;ON PREND LA VALEUR DE LA TABLE
OUTI ;POUR LE RASTER DANS LE BORDER
LD B,#BD
OUT (C),D ; 'ALLUME'
OUT (C),D
OUT (C),E ; 'ETEINDS'
OUT (C),E
OUT (C),D
OUT (C),D
OUT (C),D
OUT (C),E
OUT (C),D
OUT (C),D
OUT (C),D
OUT (C),E
DEFS 3,0 ;P'TITE SYNCHRO POUR LES 64 NOPS
DEC A
JR NZ,RASTBOU
DEFS 60,0 ;ON ATTENDS UNE LIGNE
;
LD A,19 ;NOUVELLE HAUTEUR
LD HL,TABLE2 ;NOUVELLE TABLE DE COULEUR
;
RASTBOU2 ;ON FAIT LA 2EME LIGNE
LD B,#7F
OUTI
LD B,#BD
OUT (C),D
OUT (C),E
OUT (C),D
OUT (C),E
OUT (C),D
OUT (C),E
OUT (C),E
OUT (C),E
OUT (C),E
OUT (C),E
OUT (C),D
OUT (C),E
DEFS 3,0
DEC A
JR NZ,RASTBOU2
;
DEFS 60,0
;
LD A,19
LD HL,TABLE
RASTBOU3 ;3EME LIGNE
;
LD B,#7F
OUTI
LD B,#BD
OUT (C),D
OUT (C),E
OUT (C),D
OUT (C),E
OUT (C),D
OUT (C),D
OUT (C),E
OUT (C),E
OUT (C),E
OUT (C),D
OUT (C),E
OUT (C),E
DEFS 3,0
DEC A
JR NZ,RASTBOU3
;
DEFS 60,0
;
LD A,19
LD HL,TABLE2
RASTBOU4 ;4EME LIGNE
;
LD B,#7F
OUTI
LD B,#BD
OUT (C),D
OUT (C),E
OUT (C),D
OUT (C),E
OUT (C),D
OUT (C),E
OUT (C),E
OUT (C),E
OUT (C),D
OUT (C),E
OUT (C),E
OUT (C),E
DEFS 3,0
DEC A
JR NZ,RASTBOU4
DEFS 60,0
;
LD A,19
LD HL,TABLE
RASTBOU5 ;5EME ET DERNIERE LIGNE
;
LD B,#7F
OUTI
LD B,#BD
OUT (C),D
OUT (C),D
OUT (C),E
OUT (C),E
OUT (C),D
OUT (C),E
OUT (C),E
OUT (C),E
OUT (C),D
OUT (C),D
OUT (C),D
OUT (C),E
DEFS 3,0
DEC A
JR NZ,RASTBOU5
;
LD A,(POSX+1) ;ON MODIFIE LA VALEUR DE LA POSITION X
MODIF INC A ; SENS (INCREMENTE OU DECREMENTE)
LD (POSX+1),A
OR A
JR Z,MODIF2 ;EGAL A ZERO ?
CP 34
RET NZ ;EGAL A 34 ?
MODIF2 LD HL,MODIF
LD A,(HL)
XOR 1 ; MAGIC ! CHANGE UN 'INC A' EN 'DEC A'
LD (HL),A ; ET INVERSEMENT !
RET
;
SAUVE DEFW #0000
SAUVESP DEFW #0000
TABLE ;TABLE DE COULEUR 1 POUR RASTER
DEFB #44,#44,#55,#44,#55,#55
DEFB #55,#53,#55,#55,#53,#55
DEFB #53,#55,#53,#53,#53,#53
DEFB #4B,#53,#53,#4B,#53,#53
DEFB #4B,#53,#4B,#4B,#4B,#4B
;
TABLE2 ;TABLE DE COULEUR 2
DEFB #5C,#5C,#4C,#5C,#4C,#4C
DEFB #4C,#4E,#4C,#4C,#4E,#4C
DEFB #4E,#4C,#4E,#4E,#4E,#4E
DEFB #4A,#4E,#4E,#4A,#4E,#4E
DEFB #4A,#4E,#4A,#4A,#4A,#4A

https://CPCrulez.fr

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » Waves (Computing with the Amstrad)
» Coding Src's » CAD for beginners part 2 (Amstrad Computer User)
» Coding Src's » Graphik (CPC Amstrad International)
» Coding Src's » Rocking CPC volume 3
» Coding Src's » Klaus Multerer Musikstueck (Schneider Aktiv)
» Coding Src's » Rainbow-Scape (Amstrad Computer User)
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop
Page créée en 002 millisecondes et consultée 2413 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.