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

https://CPCrulez.fr

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

★ AMSTRAD CPC ★ DOWNLOAD ★

Other platform tools:
» coding  src45  dotsDATE: 2006-12-01
DL: 398
TYPE: ZIP
SiZE: 58Ko
NOTE: 42 Cyls
.HFE: Χ

» TextPixMode1V2DATE: 2013-08-28
DL: 429
TYPE: text
SiZE: 5Ko
NOTE:

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

Lien(s):
» Coding Src's » Scroll plein ecran en rasters
» Coding Src's » Conversor de pantallas: De modo 2 a modo 1 sin perder un pixel (Amstrad Semanal)
» Coding Src's » CPCRetroDev 2017 Sources pack collection
» Coding Src's » Amstrad abstracts
» Coding Src's » Arkos Player
» Coding Src's » Tolle Video-Tricks (Happy Computer)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» 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.732-desktop/c
Page créée en 359 millisecondes et consultée 2592 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.