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: 244
TYPE: ZIP
SiZE: 58Ko
NOTE: 42 Cyls
.HFE: Χ

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

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

Lien(s):
» Coding Src's » Graffitis (Amstrad Magazine 16)
» Coding Src's » Nationalhymne (Schneider CPC-Welt)
» Coding Src's » Routines du C.C.C : 364 Couleurs
» Coding Src's » 3D Colour Animation (Your Computer)
» Coding Src's » Disassembly of AMSDOS ROM
» Coding Src's » Transfert disk 40 to 80 tracks
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.7-desktop/c
Page créée en 335 millisecondes et consultée 2134 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.