CODING : Rubidouille l'Overscan

Pour ces fins de vacances qui, comme d'habitude, sont d'une tristesse à mourir à la Matt Murdock dans Double Détente, voici un nouveau souffle apporté par le Rubi masqué à vos petites machines. Pendant plusieurs mois il vous fera partager ses connaissances illimitées dans le monde du CPC. Pour commencer en beauté, nous verrons le fonctionnement de l'Overscan ou comment gonfler vos pages de présentation de 16 Ko à 24 Ko, ce qui représente une image plein écran.

Pour dire deux mots sur le fonctionnement de l'Overscan, il faut vous préciser que la petite bête qui se charge de cet exploit n'est autre que notre vieux CRTC, qui, contrairement à ce que l'on pourrait croire, peut gérer un écran de plus de 16 Ko. A vrai dire, le CRTC peut même, si on le lui demande gentiment, prendre sous son aile deux pages écran, donc 32 Ko. Le seul problème que l'on ne pourra pas résoudre, c'est la taille fixe du moniteur. Car même en éclatant le border à fond les gamelles, on obtiendra un écran d'environ 24 Ko visible. Les registres à influencer sont le 1 et 2 pour le nombre total de caractères affichés (dans le cas de notre programme, 92 octets), et les registres 6 et 7 pour le nombre de lignes (264 lignes). Mais le plus important reste les registres 12 et 13 qui déterminent l'offset de départ, avec en prime la taille de l'écran à gérer (soit 16 Ko ou 32). Les valeurs possibles sont &0C pour commencer votre page à l'adresse 0, &1C pour l'avoir en &4000, &2C pour &8000, enfin &3C pour avoir une page commençant en &C000 et ayant comme dernier octet l'adresse &3FFF. On peut faire un petit réajustement en plaçant une valeur allant de 0 à 255 dans le registre 13, ce qui permettra dans notre programme de commencer notre écran à l'adresse &D0.

OVERSCAN, MODE D'EMPLOI

Trois programmes vous sont proposés. Le premier vous sauvera sur une disquette quatre pages écran. C'est dans ces pages que vous dessinerez votre chef-d'œuvre. Le deuxième programme rassemblera ces dessins pour en former une image au format de l'Overscan. Le dernier, pour, s'occupera de l'affichage de cet écran.

Dans le premier programme, vous choisissez le mode dans lequel sera dessiné votre écran en Overscan (de 0 à 2). Donnez ensuite un nom à cet écran. Sous vos yeux ébahis, le CPC dessinera quatre écrans en les numérotant de 1 à 4, qui, sur la disquette, porteront le nom donné au départ avec l'extension "SC1 ,SC2, SC3 et SC4".

Prenez un utilitaire de dessin capable de charger une image n'appartenant pas à son format, puis avec le talent qui vous est propre, remplissez les quatre écrans. Une fois ce travail de graphiste terminé, lancez le deuxième programme. Donnez le nom en commun des écrans. Le CPC les charge un par un et sauve un fichier de 24 kilos avec l'extension "SCA' ; si vous n'avez pas d'autre écran en cours, arrêtez le programme par Esc. Lancez le troisième programme. Répétez pour la dernière fois le nom de vos écrans au CPC, en n'oubliant pas de modifier la ligne 20 dans laquelle le mode écran est donné. Admirez en douceur le résultat et consommez avec modération. Loyer Stan
 
 
;
;      RUBI_DOUILLE (c) 1989
;
; ----- AFFICHEUR OVERSCAN -----
;
;
           ORG    #8000

           CP     1
           RET    NZ
           LD     L,(IX+0)
           LD     H,(IX+1)
           LD     C,(HL)
           INC    HL
           LD     E,(HL)
           INC    HL
           LD     D,(HL)
           LD     B,0
           LD     A,C
           ADD    A,4
           PUSH   AF
           LD     HL,NOM
           EX     DE,HL
           LDIR
           EX     DE,HL
;
           LD     (HL),"."   ; Rajouter extention
           INC    HL
           LD     (HL),"S"
           INC    HL
           LD     (HL),"C"
           INC    HL
           LD     (HL),"A"
           INC    HL

           POP    BC
           LD     HL,NOM
           LD     DE,#680     ; Chargement d'un
           CALL   #BC77       ; sprite de 24Ko ( 92*264)

           RET    NC          ; Test si ok

           LD     HL,#D0      ; Sauvegarde du Basic
           LD     DE,#8200
           LD     BC,#1200
           LDIR

           LD     BC,#BC01    ; On Cache l'ecran
           OUT    (C),C
           DEC    C
           INC    B
           OUT    (C),C

           LD     HL,#680     ; On charge
           CALL   #BC83
           CALL   #BC7A
;
           LD     HL,#4000    ; On deplace le sprite 
                              ; pour l'afficher

           PUSH   HL 
           PUSH   HL
           PUSH   HL
           LD     DE,#C000
           LD     B,H
           LD     C,L
           LDIR
           LD     HL,#680
           POP    DE
           LD     BC,#3980
           LDIR

           POP    DE          ; On affiche le haut
           LD     HL,#D0
           LD     B,160
           LD     C,#C0
           CALL   ENVOIE

           LD     DE,#C000    ; On affiche le bas
           POP    HL
           LD     B,104
           LD     C,#80
           CALL   ENVOIE

           LD     HL,ECR1     ; On active l'overscan
           CALL   OUTT        ;

           LD     HL,#C000    ; On vide l'ancien ecran
           LD     D,H
           LD     E,1
           LD     BC,#4000
           LD     (HL),0
           LDIR

           CALL   #BB06

           LD     HL,ECR2     ; Ecran AMSTRAD demande
           CALL   OUTT

           LD     HL,#8200
           LD     DE,#D0
           LD     BC,#1E00
           LDIR
           RET

ENVOIE:    PUSH   BC          ; C5
           PUSH   HL          ; E5
           EX     DE,HL       ; EB
           LD     BC,92       ;
           LDIR               ;
           EX     DE,HL       ; EB
           POP    HL          ; E1
           POP    BC          ; C1
           PUSH   DE          ; D5
           LD     A,H         ; 7C
           ADD    A,8         ;
           LD     H,A         ; 67
           AND    C           ; A1
           JR     Z,ENVOIE_1  ;
           LD     DE,#C000+92 ;
           ADD    HL,DE       ; 19
ENVOIE_1:
           POP    DE          ; D1
           DJNZ   ENVOIE      ;
           RET                ; C9

OUTT:                         ; Dressage du CRTC
           LD     C,6         ;
           LD     B,#BD       ;
OUT1:
           DEC    B           ; 05
           LD     A,(HL)      ; 7E
           OUT    (C),A       ;
           INC    B           ; 04
           INC    HL          ; 23
           LD     A,(HL)      ; 7E
           OUT    (C),A       ;
           INC    HL          ; 23
           DEC    C           ; 0D
           JR     NZ,OUT1     ;
           RET                ; C9

ECR1:        DB &01,&2E
             DB &02,&31
             DB &06,&21
             DB &07,&22
             DB &0c,&0C
             DB &0d,&68

ECR2:      DB &01,&28,&02,&2e,&06,&19
           DB &07,&1e,&0c,&30,&0d,&00
 


 

Lover Stan, ACPC  n°18 Septembre 1989, p70-71

» Download la sources
» Download le disk "Initation a l'overscan par RUNSTRAD"
 
 

( La disquette illustrant cet article n'est pas encore numérisée : Deviens riche et célébre en participant TOI aussi au site et complete cette article !! )
 
 
A voir aussi sur CPCrulez , les sujets suivants peuvent vous intéresser...

» A100%: Articles des RUBI Bidouilles
» A100%: Articles des LOGON SYSTEM
» A100%: Les cours de programmtion de l'ASIC / Acces aux nouvelles fonctions du CPC+
» A100%: De l'arcade à l'action par Poum
» DOSSIER Gozeur of PARADOX sur les ruptures et la gestion du CRTC
» Coding Z80/Amstrad CPC:Informations Technique Divers ...
» Documentation - MAXAM 464/664/6128
» Documentation - Les vecteurs system
» Documentation - Z80 opcodes reference
» Technique - L'assembleur facile avec votre PC

« Retour » Laisser un commentaire ou en discuter sur le forum ...