CODING ★ Apprendre pas à pas la programmation en assembleur Z80 par Roudoudou ★

Apprendre pas à pas la programmation en assembleur Z80 (Roudoudou)
Toujours eu envie d'apprendre l'assembleur Z80 et réaliser des programmes sur votre Amstrad CPC ? Vous êtes au bon endroit!
Ce site est en développement intensif, n'hésitez pas à remonter toute remarque ou suggestion d'article sur le discord Praline

CODING ★ Présentation de l'Amstrad CPC/Plus ★
TITLES (6)
Les différents composants de l'ordinateur 
Fonctionnement d'un Amstrad au démarrage 
Organisation de la mémoire d'un CPC au démarrage 
Comparaison d'affichages de caractères (système VS hardware) 
Comparaison de chargements disquettes (système VS hardware) et conclusion 
Principes généraux d'un programme 

CODING ★ Présentation de l'Assembleur Z80 ★
TITLES (4)
Vous n'avez pas les bases? 
Introduction au langage machine 
Description des registres du Z80 
Convention de lecture pour le jeu d'instructions 

CODING ★ Jeu d'instructions du Z80 ★
TITLES (15)
Chargement de données, écritures mémoire (LD) 
Échange de registres ou mémoire (EX, EXX) 
Comparaison (CP, SBC, CPI, CPIR, CPD, CPDR) 
Sauts non conditionnels (JR, JP, CALL, RET, RST) 
Sauts conditionnels (JR, JP, DJNZ, CALL, RET, RST) 
Sauvegarde et restoration des registres dans la pile (PUSH and POP) 
Manipulation de bits (SET, RES, BIT) 
Décalage et rotations de bits (SRL, SRA, RR, RRA, RRC, RRCA, SLL, SLA, RL, RLA, RLC, RLCA, RLD, RRD) 
Opérateurs logiques (AND, OR, XOR, CPL, NEG, SCF, CCF) 
Instruction d'ajustement pour nombres BCD (DAA) 
Opérations mathématiques (INC, DEC, ADD, SUB, ADC, SBC) 
Opérations de copie mémoire (LDI, LDIR, LDD, LDDR) 
Ports entrée/sortie (OUT, OUTI, OTIR, OUTD, OTDR, IN, INI, INIR, IND, INDR) 
Gestion des interruptions (DI, EI, IM, HALT, RETI, RETN, LD I,A) 
Instruction qui ne fait rien (NOP) 

CODING ★ Préparer son environnement de travail ★
TITLES (5)
Comment assembler un programme pour Amstrad CPC? 
Comment utiliser notre programme dans ACE? 
Programme squelette de base utilisé pour les tutos 
Les rudiments d'assembleur à connaitre avant de démarrer 
Les ports I/O (ou entrée/sortie) sur le CPC 

CODING ★ Premiers programmes (briques indispensables) ★
TITLES (20)
Déplacer des données dans la mémoire 
Multiplier des valeurs 
Structure de l'écran du CPC / Afficher un point 
Changer le mode graphique / Amélioration de la routine de point 
Changer les couleurs, chargement d'une palette 
Structure de l'écran du CPC / Ligne à ligne 
Afficher un sprite soft 
Déplacer notre sprite soft 
Se synchroniser avec le balayage, pourquoi? 
Animer notre sprite (afficher une séquence de sprites) 
Se synchroniser avec les interruptions (multi-mode et rasters) 
Accéder au clavier 
Évitez les conflits de touches! 
Jouer une musique Arkos Tracker 3 
Écrire du texte avec sa propre fonte 
Utilisation des ROM (CPC/Plus) 
Utilisation des structures pour une gestion de menu 
Utilisation de la RAM étendue 
Remplir la RAM centrale de graphismes 
Une division 32 bits rapide pour Z80 

CODING ★ Fusion de quelques briques élémentaires pour créer un petit jeu ★
TITLES (5)
Le jeu du Télécran partie 1 (assemblage de briques) 
Le jeu du Télécran partie 2 (corrections des défauts) 
Le jeu du Télécran partie 3 (gestion des diagonales) 
Du Télécran au jeu TRON 
Exporter notre jeu TRON sur DSK,CDT et CPR (respectivement disquette, cassette et cartouche) 

CODING ★ Quelques effets simples ★
TITLES (7)
Fondu de couleurs 
Un nombre illimité de sprites? 
Un effet démo, les shadeBobs! 
Un fondu entre images avec le tramage de Bayer 
Un effet démo, les interférences 
L'effet de bulle déformante 
Color cycling avancé 

CODING ★ Création de quelques briques élémentaires pour créer une intro ★
TITLES (3)
Petite Intro 1/3 - Gestionnaire d'animations 
Petite Intro 2/3 - ScrollText vertical 
Petite Intro 3/3 - Compression et création de fichiers DSK et K7 

CODING ★ Programmation avancée, une interface utilisateur complète ★
TITLES (9)
Faire sa propre IU - Création d'une fonction de gestion clavier 
Faire sa propre IU - Création d'une checkbox (coche de validation) 
Faire sa propre IU - Gestion de plusieurs checkbox, prémices d'une GUI 
Faire sa propre IU - Une nouvelle fonte plus adaptée à la GUI 
Faire sa propre IU - Gestion d'un champ de saisie de texte 
Faire sa propre IU - Factorisation des actions communes, joli curseur 
Faire sa propre IU - Gestion d'un champ numérique 
Faire sa propre IU - Texte de décoration et cadres 
Faire sa propre IU - Checkbox aux fonctions communes 

CODING ★ Sprites en folie ★
TITLES (10)
Introduction à la série d'articles sur les sprites 
Affichage au XOR 
Le double buffer (en finir avec les glitchs!) 
Exemple d'utilisation de double buffer 
Restituer le fond après le déplacement d'un sprite 
Comment gérer la transparence d'un sprite logiciel? 
Technique de clipping - Que faire quand un sprite déborde de l'écran? 
Technique de clipping - Un clipping complet 1/2 
Technique de clipping - Un clipping complet 2/2 
Technique de clipping - Sauvegarde & Restitution du fond en double-buffer 

CODING ★ Scrollings en folie ★
TITLES (4)
Introduction à la série d'articles sur les scrollings 
Un premier scrolling hardware horizontal 
Un scrolling horizontal à l'octet avec le registre 3 
Utiliser une carte de tuiles (ou Atlas ou TileMap) pour gagner en mémoire 

CODINGPremiers programmes avec la gamme Amstrad Plus et GX-4000Présentation de l'Amstrad CPC/Plus
TITLES (22)
Utiliser la palette de 4096 couleurs 
Les interruptions à la ligne (RasterInt) 
Les sprites hard - Aperçu 
Un scrolling horizontal au pixel 
Un scrolling vertical facile! 
Scroller dans toutes les directions 1/4 (préparation, structures, macros) 
Scroller dans toutes les directions 2/4 (Scrolling effectif, affichage) 
Scroller dans toutes les directions 3/4 (Profiling et optimisations) 
Scroller dans toutes les directions 4/4 (Mise en place du double buffer) 
Les sprites hard - Comment changer leur contenu? 
Les sprites hard - Animation (méthode générée Delta) 
Les sprites hard - Positionnement rapport au scrolling 
Scroller avec un suivi automatique 
Utiliser les manettes analogiques 
Animation d'un personnage (Une routine générique) 1/6 
Animation d'un personnage (Gérer plusieurs animations) 2/6 
Animation d'un personnage (Optimisation de la gestion) 3/6 
Animation d'un personnage (Déplacement à l'écran) 4/6 
Animation d'un personnage (Meta-sprites complexes) 5/6 
Animation d'un personnage (Amélioration des routines de meta-sprites, prémices d'un moteur) 6/6 
Transformations sur les sprites hard (rotations et miroirs) 
Moteur d'animation (Symétrie axiale, gestion de liste d'objets) 

CODING ★ Des outils pour importer VOS données ★
TITLE (1)
Convertisseur BMP/PNG vers écran, sprites soft, sprites hard, tuiles et tileMap 

CODING ★ Programmation avancée, routines utiles ★
TITLES (7)
Super instructions 
Optimisations en vrac 
Routines écran (passages de ligne/rebouclage) 
Routines de multiplication 
Routines de division 
Routines en vrac (Neg 16 bits, Cp 16 bits, valeurs absolues, ...) 
Routines de gestion de chaines de caractères 

CODING ★ Annexe hardware de la machine ★
TITLES (9)
Clavier / Schéma de référence du PPI 
Connexions ROM / Couleurs / Mémoire étendue 
CRTC / Dimensions écran, scrollings 
Fonctionnalités étendues de la gamme Plus 
Afficher un caractère (c'est un sprite en fait!) !WIP! 
Afficher une chaine de caractères (gestion du curseur d'affichage) 
Optimiser l'occupation mémoire de sa fonte 
Utiliser plusieurs fontes !WIP! 
Comment redimensionner l'écran? 

Du lien, des liens ...

★ ANNÉE: 2025
★ AUTEUR: Roudoudou

Je participe au site:

» 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 171 millisecondes et consultée 80 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.