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

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

http://cpcrulez.fr

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 060 millisecondes et consultée 1012 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.