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 » Curseur Clignotant
» Coding Src's » Mona Lisa (Sizin Amstrad)
» Coding Src's » Scrolling Scenery (Computing With the Amstrad)
» Coding Src's » Tunnel (Amstrad Computer User)
» Coding Src's » Pyramid
» Coding Src's » Kalaedoscope (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.73-desktop/c
Page créée en 228 millisecondes et consultée 2507 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.