CODINGSOURCES ★ CODING Source &045: Routines dots par Demoniak ★

Dots|Demoniak)Coding Sources

Ce source ce compile sans problème sous MAXAM ou l'assembleur de WinAPE. L'astuce : toute les coordonées sont codées sur 16 bits , 2 bits pour le numéro de pixel , et 14 bits pour l'adresse.

        ORG     #A400
TabPt   EQU     #200
        DI
        LD      IX,TabPt                ; Adresse des points Ó afficher
        LD      IY,Vide                 ; Adresse d'un buffer "vide"
debutprog:
        LD      B,#F5
Sync:
        IN      A,(C)                   ; Attendre la VBL
        RRA
        JR      NC,SynC
        LD      BC,#7F10
        LD      A,#54
        OUT     (C),C
        OUT     (C),A                   ; Border noir
debut:
        LD      D,#A5                   ; Adresse du masque des points = #A500
        LD      BC,#C0                  ; C = adresse dÚbut mÚmoire vidÚo, B = 0
;
; Efface l'ancienne image
;
Clear:
        LD      A,(IY+1)                ; Adresse poids fort mÚmoire vidÚo Ó effacer
        LD      E,A
        LD      L,(IY+0)                ; Adresse poids faible mÚmoire vidÚo Ó Úffacer
        OR      L                       ; Y-a-t-il encore des points Ó effacer ?
        JR      Z,FinClear              ; Sinon, fini !
        LD      A,E
        OR      C                       ; Pour adresse mÚmoire vidÚo dÚbutant en #C000
        LD      H,A
        LD      (HL),B                  ; Efface le point
        INC     IY
        INC     IY
        JR      Clear                   ; Passer au point suivant
FinClear:
        PUSH    IX                      ; On a fini, d'effacer l'ancienne image,
        POP     IY                      ; On fait Ancienne image = nouvelle image
Trace:
        LD      A,(IX+1)                ; Adresse poids fort mÚmoire vidÚo Ó afficher
        LD      E,A                     ; bits 7 et 6 de E = numÚro octet
        LD      L,(IX+0)                ; Adresse poids faible mÚmoire vidÚo Ó afficher
        OR      L
        JR      Z,Fin                   ; Adresse = 0 -> trame finie
        LD      A,E
        OR      C                       ; C = #C0 -> mettre adresse mÚmoire vidÚo en #C000
        LD      H,A                     ; HL = adresse mÚmoire vidÚo
        LD      A,(DE)                  ; rÚcupÞre octet (#A500 Ó #A5FF)
        XOR      (HL)                   ; on aurai pu faire aussi un OR
        LD      (HL),A                  ; ou bien directement un LD (HL),A
        INC     IX
        INC     IX                      ; passer au point suivant
        JR      Trace
fin:
        INC     IX
        INC     IX
        LD      A,(IX+0)               ; Fin animation ?
        LD      B,(IX+1)
        OR      B
        JR      NZ,FinSuiv
        LD      IX,TabPt                ; RÚinitialise pointeur dÚbut animation
FinSuiv:
        LD      BC,#7F10
        LD      A,#4B
        OUT     (C),C                   ; Border en blanc (pour mesure VBL)
        OUT     (C),A
        CALL    TSPACE                  ; Test touche Espace
        RLA
        RET     C                       ; Retour si espace appuyÚ
        JR      DebutProg               ; Sinon, on boucle
;
; Test la touche espace avec le PPI... Du classique...
;
TSPACE:
        LD      A,#45
TCLAV:
        LD      (TCLAV1+1),A:; A=N. LIGNE
        XOR     A
        LD      BC,#F40E
        OUT     (C),C
        LD      BC,#F6C0
        OUT     (C),C
        OUT     (C),A
        LD      BC,#F792
        OUT     (C),C
TCLAV1:
        LD      BC,#F645
        OUT     (C),C
        LD      B,#F4
        IN      A,(C)
        CPL
        LD      BC,#F782
        OUT     (C),C
        RET
;
; Adresse vide pour la premiÞre image: rien Ó effacer
;
Vide:
        DB      0,0
;
; Table des valeurs des octets pour chaque points
;
        ORG     #A500
        DS      64,#88          ; Points en x = 0
        DS      64,#44          ; Points en x = 1
        DS      64,#22          ; Points en x = 2
        DS      64,#11          ; Points en x = 3

http://cpcrulez.fr

★ ANNÉE: ???
★ AUTEUR: DEMONIAK

★ AMSTRAD CPC ★ DOWNLOAD ★

Other platform tools:
» coding  src45  dotsDATE: 2006-12-01
DL: 48 fois
TYPE: ZIP
SIZE: 57Ko

» TextPixMode1V2DATE: 2013-08-28
DL: 98 fois
TYPE: text
SIZE: 4Ko

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » Graphic - Arnjewel (Amstrad Computer User)
» Coding Src's » Degrees Conversion (The Amstrad User)
» Coding Src's » Reaction Tester (The Amstrad User)
» Coding Src's » Knack Die Nub (CPC Amstrad International)
» Coding Src's » Scrolling en rasters (Ramlaid)
» Coding Src's » Formatteur pour Amstrad CPC sous CP/M v2.2 (CPC Revue)

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