CODINGLA BIBLE DU CPC 6128

La bible du CPC 6128 : 2.05.04 Screen pack (SCR)

Le SCREENPACK est subordonné au TEXTPACK et au GRAPHICSPACK

Il se charge de la réalisation pratique des tâches ordonnées par ces deux packs. Il est en effet responsable du traitement direct de l'écran.

0ABF ************************************* SCR INITIALISE

initialisation complète du pack écran.

0ABF couleurs défaut
0AC2 MC CLEAR INKS
0AC7 (octet fort début écran)
OACA SCR RESET

0AD0 ****************************************** SCR RESET

réinitialiser le pack écran.

0AD1 SCR ACCESS
OAD4 Restore SCR Indirections
0AD7 Move (hl+3) vers ((hl+l)),cnt=(hl)
OADA Reset couleurs
OADD db 09 9 octets
OADE dw BDE5 adresse objet
0AE0 SCR READ
0AE3 SCR WRITE
0AE6 SCR CLEAR

0AE9 ************************************** SCR SET MODE

mettre en place nouveau mode écran.

OAFF SCR CLEAR

0B0C ************************************** SCR GET MODE

aller chercher mode écran actuel.

0B0C (curr. Screen Mode)

0B17 ****************************************** SCR CLEAR

vider l'écran.

0B1D SCR SET OFFSET
0B25 hl=adresse de base
0B26 de=adresse de base+1
0B28 16k
0B2C vider l'écran
0B31 (curr. Screen Mode) 0B34 MC SET MODE

0B37 ************************************* SCR SET OFFSET

fixer adresse de départ du premier caractère relativement à l'adresse de base de la RAM vidéo.

0B37 (octet fort début écran)

0B3C *************************************** SCR SET BASE

adresse de base de la RAM vidéo

0B3C (Position à l'intérieur d'une ligne)

0B42 MC SCREEN OFFSET

0B45 **************** SCR MODIFIER DEBUT ECRAN

0B47 (octet fort début écran)
0B51 (Position à l'intérieur d'une ligne)

0B56 ********************************* SCR GET LOCATION

début écran actuel? (base + offset)

0B56 (Position à l'intérieur d'une ligne) 0B59 (octet fort début écran)

0B5D *********************************** SCR CHAR LIMITS

Aller chercher nombres maxi de lignes et colonnes de l'écran (en fonction du mode).

0B5D SCR GET MODE

0B6A ********************************* SCR CHAR POSTION

traduire coordonnées physiques en une position écran

0B6B SCR GET MODE
0B93 (octet fort début écran)
0BA6 SCR CHAR POSITION

OBAF ********************************** SCR DOT POSITION

déterminer position écran pour un pixel.

OBED (octet fort début écran)
0BF6 SCR GET MODE

0C05 ************************************* SCR NEXT BYTE

SCRNEXTBYTE et SCRPREVBYTE fournissent dans hl l'adresse écran de la prochaine ou de la dernière position d'octet, lorsque vous placez dans hl, avant d'appeler la routine, l'ancienne adresse. C'est aussi pratique que cela semble superflu. En effet, du fait de l'organisation de l'écran, il n'est pas facile de déterminer la position d'octet. La distance dépend en outre du mode. Notez que si la prochaine ou la dernière position sort du cadre de l'écran, l'adresse fournie en retour n'a pas de sens. Elles se trouve en effet alors dans la zone des 48 derniers octets de la Ram vidéo, qui ne sont pas utilisés pour la représentation sur l'écran.

0C11 ************************************* SCR PREV BYTE

Voir SCR NEXT BYTE.

0C1F ************************************* SCR NEXT LINE

SCR NEXT LINE et SCR PREV LINE travaillent de façon similaire à SCR NEXT BYTE, si ce n'est que l'adresse écran est calculée une ligne entière avant ou après.

Ici également, l'adresse n'a pas de signification lorsqu'on sort de la zone représentable.

0C39 ************************************** SCR PREV LINE

Voir SCR NEXT LINE

0C55 ****************************************** SCR ACCESS

fixer caractères de commande sur visible/invisible.

0C57 SCR PIXELS (FORCE MODE)
0C5E Low Byte XOR Mode
0C62 Low Byte AND Mode
0C66 Low Byte OR Mode
0C68 jp
0C6A (Write Indirection)

0C71 ******************************************* SCR WRITE

0C71 Write Indirection

QC74 *************************** SCR pjxELS (FORCE Mode)

Fixer point sur l'écran.

0C7A ******************************************* XOR Mode

0C7F ******************************************* AND Mode

OC85 ********************************************* OR Mode

0C8A ******************************************* SCR READ

0C8E *********************************** SCR INK ENCODE

codage d'une ink de façon à ce que tous les points image soient fixés sur cette ink.

0CA7 *********************************** SCR INK DECODE décodage d'une ink.
0CC9 SCR GET MODE

0CD8 ****************************************** Reset couleurs

0CD8 couleurs défaut
OCDB mémoire couleur 2des couleurs
0CE4 (flag jeu de couleurs actuel)

OCEA ********************************* SCR SET FLASHING

fixer durées de clignotement des couleurs pour toutes les inks et pour le bord.

OCEA (Flash Periods)

OCEE ********************************* SCR GET FLASHING

déterminer durées de clignotement (inks et bord).

OCEE (Flash Periods)

0CF2 ***************************************** SCR SET INK

affectation des deux couleurs utilisées pour représenter une ink.

0CF5 Set Colour

0CF7 ************************************ SCR SET BORDER

affectation des deux couleurs utilisées pour représenter un bord

0CF8 ******************************************** Set Colour

OCFA aller chercher entrée matrice couleur OCFF aller chercher entrée matrice couleur

0D04 aller chercher adresse ink

0D10 ******************************* aller chercher entrée matrice couleur

0D1A *************************************** SCR GET INK

aller chercher les deux couleurs utilisées pour représenter une ink.

0D1D Get Colour

0D1F *********************************** SCR GET BORDER

aller chercher les deux couleurs utilisées pour représenter un cadre.

0D20 ******************************************** Get Colour

0D20 aller chercher adresse ink 0D2C matrice couleurs

0D35**************************************allerchercheradresse ink

0D38 mémoire couleurs 1ères couleurs
0D42 Event Block: Set Inks
0D46 KL DEL FRAME FLY
0D49 Flash Inks
0D4C Set Inks on Frame Fly
0D52 KL NEW FRAME FLY
0D55 Event Block: Set Inks
0D58 KL DEL FRAME FLY
0D5B aller chercher paramètres du jeu de couleurs actuel
0D5E MC CLEAR INKS

0D61 ********************************** set Inks on Frame Fly

0D61 curr. Flash Period
0D65 Flash Inks
0D6B aller chercher paramètres du jeu de couleurs actuel
0D6E MC SET INKS

0D73 ********************************************* Flash Inks

0D73 aller chercher paramètres du jeu de couleurs actuel
0D76 (curr. Flash Period)
0D79 MC SET INKS
0D7C flag jeu de couleurs actuel

0D87 **************************amener param. du jeu de couleurs actuel

0D87 mémoire couleurs 1ères couleurs
0D8A (flag jeu de couleurs actuel)
0D8E (Flash Period 1. Colour)
0D92 mémoire couleurs 2èmes couleurs
0D95 (Flash Periods)

0D99 ********************************************matricecouleurs

0D99 14 04 15 1C 18 1D OC 05
0DA1 0D 16 06 17 1E 00 IF OE
0DA9 07 0F 12 02 13 1A 19 1B
0DB1 0A 03 OB 01 08 09 10 11

0DB9 *************************************** SCR FILL BOX

Remplir fenêtre indiquée avec une couleur (positions en caractères, en fonction du mode).

ODBD ************************************ SCR FLOOD BOX

remplir fenêtre indiquée avec une couleur (les positions sont des adresses écran, indépendantes du mode).

0DC6 SCR NEXT BYTE 0DDE SCR NEXT LINE

0DE2 SCR FLOOD BOX

0DE5 ********************************** SCR CHAR INVERT

échanger les couleurs de premier et second plans d'un caractère.

0DE8 SCR CHAR POSITION
0DF2 SCR NEXT BYTE

0DF8 ******************************* adresser mémoire couleurs

0DF9 SCR NEXT LINE

f)E00 **************************************** SCR HW ROLL

SCR HW ROLL décale l'écran (en hardware) d'une ligne vers le bas lorsque b=0 et d'une ligne vers le haut lorsque b<>0. a doit recevoir la couleur que devra avoir la nouvelle ligne (vide) qui sera ajoutée.

0E0B MC WAIT FLYBACK
0E32 (octet fort début écran)
0E3A SCR FLOOD BOX
0E41 SCR SET OFFSET

0E44 **************************************** SCR SW ROLL

SCR SW ROLL décale une zone de l'écran (décalage software), a et b doivent être servis comme ci-dessus, h doit en outre recevoir le numéro de colonne du bord gauche de la zone à décaler, 1 la ligne supérieure, d la colonne droite et e la ligne inférieure de cette zone.

Notez que colonne et ligne 0 correspondent à l'angle supérieur gauche de l'écran. Faites vous-même très attention à ce que les paramètres transmis marquent bien une zone comprise dans la Ram vidéo.

0E4F SCR CHAR POSITION
0E5A MC WAIT FLYBACK
0E64 SCR NEXT LINE
0E69 SCR NEXT LINE
0E76 SCR FLOOD BOX
0E8B SCR CHAR POSITION
0E8F SCR CHAR POSITION
0E93 MC WAIT FLYBACK
0E96 SCR PREV LINE
0E9B SCR PREV LINE
0EE1 SCR NEXT BYTE
0EE5 SCR NEXT BYTE

0EF9 **************************************** scr UNPACK

agrandir matrice caractère (pour modes 0/1).

0EF9 SCR GET MODE

0F2A **************************************** scr REPACK

rétablir matrice caractère dans sa forme originelle.

0F2B SCR CHAR POSITION
0F2E SCR GET MODE
0F3C SCR NEXT LINE
0F48 SCR NEXT BYTE
0F53 SCR NEXT LINE
0F82 SCR NEXT BYTE
0F8C SCR NEXT LINE

0F93 *********************************** SCR HORIZONTAL

tracer ligne horizontale.

0F9B ************************************** SCR VERTICAL

tracer ligne verticale.

0FA5 (GRA Pen)
0FA9 (GRA Pen)
OFAE (GRA Pen)
0FB1 (GRA Pen)
0FB8 charger &FF dans accu
0FF3 (GRA Paper)
OFFF (GRA Pen)
100A SCR NEXT BYTE
101C (GRA Pen)
1027 (GRA Paper)
102C SCR WRITE
1030 SCR PREV LINE

1049 SCR DOT POSITION

1052 ***************************************** couleurs défaut

1052 04 04 0A 13 0C 0B 14 15
105A 0D 06 1E IF 07 12 19 04
1062 17 04 04 0A 13 0C 0B 14
106A 15 0D 06 1E IF 07 12 19
1072 0A 07

★ ANNÉE: ???

Page précédente : La bible du CPC 6128 : 2.05.03 Jump restore (JRE)

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 098 millisecondes et consultée 857 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.