PC-CPC
-------
Emulateur Amstrad CPC 6128, crit 100% en C par Ludovic DEPLANQUE (Demoniak)
Toutes suggestions, remarques, conseils sont les bienvenus.
Pour me contacter :
ldeplanque(at)nordnet(point)fr
Sources disponnibles sur simple demande.

Utilisation :
-------------
Lancer l'mulateur (PC-CPC.EXE)
Pour pouvoir fonctionner, il a besoin :
- du fichier config.cpc
- les roms d'un cpc (dans le rpertoire dfinit par le fichier config.cpc)
- ventuellement, un ou plusieurs fichiers images disquette (au format .DSK)

Touches de fonctions :
----------------------
F1 -> Appel de la fentre d'aide, rappelant toutes les touches fonctions et leurs utilits.

F2 -> Mode turbo 'ON/OFF' : Synchronise l'affichage  50Hz, comme sur un vrai CPC, ou excute le plus rapidement possible l'mulation.

F3 -> Bouton 'STOP' de la multiface II. 

F4 -> Lecture d'un snapshot. Un snapshot est un fichier contenant l'tat de chaque composant du cpc ainsi qu'une copie de la mmoire  un instant dtermin, pour permettre par exemple une sauvegarde d'un jeu  un endroit prcis.    

F5 -> Sauvegarde d'un snapshot

F6 -> Appel du dbuggeur Z80 intgr. Touches : F7 = pas  pas dtaill, F8 = pas  pas principal.

F7 -> Changement de disquette Drive A: Une disquette est mule par un fichier image (fichier avec l'extension .DSK). Ce mode dsactive le mode de lecture depuis le disque dur du PC.

F8 -> Reset du CPC. Similaire  un switch du bouton ON/OFF

F9 -> Lecture d'un fichier cassette. Permet d'indiquer un nom de fichier au travers duquel l'mulation de la lecture cassette sera ralis. Le fichier doit tre un fichier au format .WAV, digitalis sur 8 bits en mono, avec une frquence de 11, 22 ou 44 Khz.

F11 -> Ecriture d'un fichier cassette. Permet de crer un fichier dans lequel sera restranscrit toute criture sur cassette. Le fichier cr est un fichier .WAV digitalis sur 8 bits en mono  la frquence de 11 Khz.

F12 -> Permet de sauvegarder l'image actuelle de l'mulateur dans un fichier BMP.

SHIFT+F1 -> Permet de se connecter  la bdd du serveur phenixinformatique

SHIFT+F2 -> Changement du mode d'mulation disquette. Par dfaut, les disquettes sont mules par un fichier .DSK. Un nouveau mode permet d'muler directement les fichiers depuis une partition ou un lecteur de disque du PC. Ce mode dsactive la lecture/criture par fichiers .DSK

SHIFT+F3 -> Permet de basculer la taille de la fentre d'affichage de l'mulateur en petit/grand format

SHIFT+F4 -> Permet de basculer l'affichage de l'mulateur en mode couleur/monochrome

SHIFT+F5 -> Permet de sauvegarder les sons dans un fichier au format YM. Un nouvel appui sur las touches SHIFT+F5 permet d'arrter la sauvegarde, et affiche le nombre de "trames" sauvegardes (une trame = 1/50e de secondes).

SHIFT+F6 -> Permet de "minimiser" la fentre de l'mulateur

SHIFT+F7 -> Changement de disquette drive B:

SHIFT+F8 -> ROMPACK ON/OFF, permet d'activer/dsactiver les extensions pour accs  la "ROMPACK" (instructions Z80 #ED-#00  #ED-#3F)

SHIFT+F9 -> Permet, lorsqu'un fichier cassette est ouvert en lecture (par F9), de choisir la position dans le fichier via un "compteur de secondes". Une fentre popup s'ouvre alors, indiquand la position actuelle du fichier. Il sufit d'diter cette valeur puis d'appuyer sur le bouton "OK" pour la modifier. La fermeture de la fentre par la petite croix en haut  droite ne fait aucune modification sur la position du compteur.

SHIFT+F11 -> Permet de sauvegarder les images de l'mulateur dans un fichier AVI. Un nouvel appui sur les touches SHIFT+F11 permet d'arrter l'encodage, et affiche le nombre d'images encodes. Pour le moment, la vitesse est fixe  25 images par secondes (soit une image toutes les 2 vbl pour le CPC).

SHIFT+F12 -> Permet d'assembler un fichier .ASM directement dans la mmoire du CPC mul.


Arguments ligne de commande :
-----------------------------
-disk nom_fichier_avec_chemin_complet.dsk : permer de charger un fichier .dsk au dmarrage

-snapshot nom_fichier_avec_chemin_complet.sna : permet de charger un snapshot au dmarrage pour lancement automatique

-run fichier : permet de dmarrer automatiquement le fichier dont le nom est "fichier".

-cmd commande : permet d'excuter une commande basic au dmarrage, exemple : -cmd mode 2:?himem(0)

-file fichier : permet d'excuter un fichier ascii au dmarrage. Ce fichier doit contenir des commandes reconnues par le basic cpc. Il peut galement contenir un programme basic complet, du moment qu'il est sauvegard en ascii. Ce fichier sera en quelque sorte trait comme si tous les caractres ascii taient taps au clavier du cpc.

-borderless : permet d'activer l'affichage "plein cran" (quivalent  #BORDERLESS ON dans le fichier CONFIG.CPC)

-scanlines : permet de "doubler" l'affichage horizontal (quivalent  #DOUBLE_LINES ON dans le fichier CONFIG.CPC)

-romx fichier_rom : permet de lire le fichier "fichier_rom" dans le numro de rom x (x de 0  255)

-reso_x : dfinit la rsolution en "x" si mode "plein cran" slectionn

-reso_y : dfinit la rsolution en "y" si mode "plein cran" slectionn


Nouvelles commandes RSX disponnibles
------------------------------------
PC-CPC contient une nouvelle rom dvelope spcialement pour lui, et qui contient plusieurs nouvelles commandes RSX ajoutes au BASIC Amstrad (si la fonction "ROMPACK" est active)

|PACKSCR,adr_buffer,adr_longueur
Permet de compacter l'cran affich sur le cpc (adresse #C000->#FFCF).
adr_buffer reprsente l'adresse o sera stocke l'image compacte,
adr_longueur reprsente l'adresse o sera stocke sur 16 bits la longueur de l'image compacte.
adr_longueur peut tre l'adresse d'une variable basic entire (ex : @longueur%)

|DEPKSCR,adr_buffer
Permet de dcompacter l'cran stock  l'adresse adr_buffer.

|PACKWIN,xd,yd,xa,ya,adr_buffer,adr_longueur
Permet de compacter la fentre affiche sur le cpc en choisissant les coordonnes (xd,yd) comme point de dpart et (xa,ya) comme point d'arrive de la fentre. xd varie de 0  79 quel que soit le mode cran (xd reprsente la colonne de dpart en octets),
xa varie de 0  79 et doit tre suprieur ou gal  xd.
yd varie de 0  199 quel que soit le mode cran (yd reprsente
la ligne de dpart en octets), ya varie de 0  199 et doit tre suprieur ou gal  yd.
adr_buffer reprsente l'adresse o sera stocke la fentre compacte,
adr_longueur reprsente l'adresse o sera stocke sur 16 bits la longueur de l'image compacte. adr_longueur peut tre l'adresse d'une variable basic entire (ex : @longueur%)

|DEPKWIN,adr_buffer
Permet de dcompacter la fentre stock  l'adresse adr_buffer.

|PACKWINDC,adr_buffer,adr_longueur
Permet de compacter la fentre affiche sur le cpc en calculant automatiquement les coordonnes de celle-ci en fonction des points prsents sur l'cran. Pour rsumer, il suffit d'afficher la fentre que l'on veut compacter sur un cran vierge, et ce RSX calculera  automatiquement les coordonnes. Le format de la fentre compacte est le mme qu'avec l'instruction |PACKWIN.
adr_buffer reprsente l'adresse o sera stocke l'image compacte,
adr_longueur reprsente l'adresse o sera stocke sur 16 bits la longueur de l'image compacte. adr_longueur peut tre l'adresse d'une variable basic entire (ex : @longueur%)

|PACKWINDIFF,adr_buffer,adr_diff,adr_longueur
Permet de compacter la fentre affiche sur le cpc en calculant automatiquement les coordonnes de celle-ci en fonction des diffrences entre l'image affiche  l'cran et l'image situe  l'adresse adr_diff. Le format de la fentre compacte est le mme qu'avec l'instruction |PACKWIN.
adr_buffer reprsente l'adresse o sera stocke l'image compacte,
adr_dif reprsente l'adrfesse de l'image sur laquelle effectuer les diffrences,
adr_longueur reprsente l'adresse o sera stocke sur 16 bits la longueur de l'image compacte. adr_longueur peut tre l'adresse d'une variable basic entire (ex : @longueur%)

|INITBUFFDIFF,adr_buffer
Permet d'initialiser le buffer des diffrences inter-images.
Ceci permet, lors du premier appel de |PACKWINDIFF, d'avoir un buffer initialis avec un cran par dfaut. En gnral, on pourra faire : MODE 1:|INITBUFFDIFF,&C000

|PACKBUFF,adr_source,longueur,adr_dest,adr_longueur
Permet de compacter une zone mmoire d'adresse et de longueur dtermine vers une zone de destination.
adr_source reprsente l'adresse de la zone mmoire  compacter,
longueur reprsente la longueur de la zone mmoire  compacter,
adr_dest reprsente l'adresse de la zone de destination (qui contiendra les donnes compactes)
adr_longueur reprsente l'adresse o sera stocke sur 16 bits la longueur de l'image compacte. adr_longueur peut tre l'adresse d'une variable basic entire (ex : @longueur%)

|DEPKBUFF,adr_source,adr_dest,adr_longueur
Permet de dcompacter la zone mmoire stock  l'adresse adr_source vers adr_dest.
adr_longueur reprsente l'adresse o sera stocke sur 16 bits la longueur de la zone dcompacte. adr_longueur peut tre l'adresse d'une variable basic entire (ex : @longueur%)

|CONVERTBITMAP,"nom_image"[,"paramtres"]
Permet de convertir une image bitmap (.BMP) depuis son emplacement sur le disque dur du PC et de l'afficher  l'cran du cpc (dans la mmoire vido) convertie avec le mode courant.
"nom_image" est une chaine de caractres ou une variable alphanumrique contenant le nom et le chemin complet de l'image source (par exemple: "C:\WINNT\WINNT256.BMP" (sur cpc azerty, le '\' est remplac par '')
Les paramtres doivent tre mis dans une chaine de caractres, spars par des espaces, exemple :
"-T1 -X2"
Les paramtres sont :
-Bnnn   valeur de la composante bleue (en %)
-L      bloquer la palette (utiliser les valeurs courantes)
-Pnnn   pourcentage de tramage (en %)
-Rnnn   valeur de la composante rouge (en %)
-Tnnn   type de trame (de 0  3, 0=rien)
-Vnnn   valeur de la composante verte (en %)
-Xnnn   type de matrice de tramage (2 ou 3)
-A      mode "transparent" : les points en couleur 0 ne sont pas affichs
-DXnnn  Dplacement en X de l'image de nnn points
-DYnnn  Dplacement en Y de l'image de nnn points

|CONVLIGNE,Etat,ModeAdresse
Permet de charger l'tat de conversion des donnes mmoire cran vers les fentres pour compactage :
si Etat=0, la conversion sera effectue par colonnes (mode par dfaut) sinon, la conversion sera effectue par lignes (plus rapide, mais moins efficace  la compression.).
Si ModeAdresse=0, les coordonnes XD,YD,XA,YA seront stockes au dbut des donnes de la fentre (mode par dfaut), sinon, l'adresse cran (2 octets), le nombre de lignes et le nombre de colonnes seront stockes.

|SAUVEBITMAP,"NomFic"
Pemet de sauvegarder l'image courante ( l'cran de l'mulateur) dans un fichier au format BMP.

|TURBOON
Permet d'activer le mode turbo.
(Equivalent touche F2 (toggle))

|TURBOOFF
Permet de dsactiver le mode turbo.
(Equivalent touche F2 (toggle))

|READSNAP,"NomFicSna"
Permet de lire un fichier snapshot.
(Equivalent touche F4)

|SAVESNAP,"NomFicSna"
Permet de sauvegarder un fichier snapshot.
(Equivalent touche F5)

|DEBUGON
Permet d'activer le dbugger.
(Equivalent touche F6)

|SETDSKFILE,"NomFicDsk"
Permet de choisir un fichier .DSK  utiliser.
(Equivalent touche F7)

|SAVEAVI,"NomFicAvi"
Permet de dmarrer l'enregistrement de l'cran d'mulation dans un fichier avi.
(Equivalent touches SHIFT+F11)

|ENDAVI
Permet d'arrter l'enregistrement du fichier avi.
(Equivalent touches SHIFT+F11)

|SAVEYM,NomFicYM
Permet de dmarrer l'enregistrement de la sortie sonore dans un fichier au format YM5.
(Equivalent touches SHIFT+F5)

|ENDYM
Permet d'arrter l'enregistrement du fichier YM.
(Equivalent touches SHIFT+F5)

|SETDIRECTDIR,"Directory"
Permet de choisir le rpertoire vers lequel seront dirigs les accs disques.
(accs direct  un rpertoire, quivalent touche F12)

|SETNEWDISC,Etat
Permet de modifier l'etat des acces disques (si Etat = 1, accde au disque dur du PC comme mdia de lecture/criture, si Etat = 0, accde aux fichiers DSK comme mdia de lecture/criture)

|SYMBVIDOPEN,NomFic
Permet d'ouvrir un fichier au format VID (format vido de SymbOs). Ce fichier se trouvant sur le PC.

|SYMBVIDREAD,adr 
Permet de lire  l'adresse adr la trame en cours du fichier VID ouvert, et passe le pointeur de fichier  la trame suivante

|SYMBVIDPLAY
Equivalent  |SYMBVIDREAD, mais affiche directement la trame  partir de l'adresse #C000, passe le pointeur de fichier  la trame suivante
(comme |SYMBVIDREAD)

|SYMBVIDCLOSE
Ferme le fichier VID ouvert.

|ASSEMBLE,"NomFicAsm"
Permet d'assembler le fichier "NomFicAsm", qui se trouve sur le disque du PC


Certains OP-CODE Z80 ont ts redfinis pour pouvoir utiliser directement ces
nouvelles fonctionnalits en assembleur, sans la ROM-PACK :


ED 01 : quivalent de |PACKSCR, avec en entre :
HL = adresse du buffer de compactage
IX = adresse contenant la longueur compacte
Aucun registre n'est modifi au retour.

ED 02 : quivalent de |PACKWIN, avec en entre :
E  = xd
D  = yd
C  = xa
B  = ya
HL = adresse du buffer de compactage
IX = adresse contenant la longueur compacte
Aucun registre n'est modifi au retour.

ED 03 : quivalent de |DEPKSCR, avec en entre:
HL = adresse du buffer des donnes compactes
Aucun registre n'est modifi au retour.

ED 04 : quivalent de |DEPKWIN, avec en entre:
HL = adresse du buffer des donnes compactes
Aucun registre n'est modifi au retour.

ED 05 : quivalent de |PACKWINDC, avec en entre:
HL = adresse du buffer de compactage
IX = adresse contenant la longueur compacte
Aucun registre n'est modifi au retour.

ED 06 : quivalent de |PACKBUFF, avec en entre:
HL = adresse de la zone  compacter (source)
DE = adresse de la zone destination
BC = longueur de la zone  compacter.
IX = adresse contenant la longueur compacte
Aucun registre n'est modifi au retour.

ED 07 : quivalent de |DEPKBUFF, avec en entre:
HL = adresse de la zone source (zone compacte)
DE = adresse de la zone destination
IX = adresse contenant la longueur dcompacte
Aucun registre n'est modifi au retour.

ED 08 : quivalent de |PACKWINDIFF, avec en entre:
HL = adresse du buffer de compactage
DE = adresse du buffer cran pour comparaison des diffrences
IX = adresse contenant la longueur compacte
Aucun registre n'est modifi au retour.

ED 09 : quivalent de |INITBUFFDIFF, avec en entre:
HL = adresse du buffer d'initialisation
Aucun registre n'est modifi au retour.

ED 0A : quivalent de |CONVERTBITMAP, avec en entre:
HL = Pointeur vers nom du fichier BMP
B = Longueur nom fichier BMP
DE = Pointeur vers chaine contenant les arguments
C = Longueur chaine contenant les arguments
Aucun registre n'est modifi au retour.

ED 0B : quivalent de |CONVLIGNE, avec en entre:
A = Etat
B = ModeAdresse
Aucun registre n'est modifi au retour.

ED 0C : quivalent de |SAUVEBITMAP, avec en entre:
HL = Pointeur vers nom du fichier BMP
B = Longueur nom fichier BMP
Aucun registre n'est modifi au retour.

ED 0D : quivalent de |TURBOON ou de |TURBOOFF, avec en entre:
A = mode turbo (0 = OFF, sinon ON)
Aucun registre n'est modifi au retour.

ED 0E : quivalent de |READSNAP, avec en entre:
HL = Pointeur vers nom du fichier SNA
B = Longueur nom fichier SNA
Aucun registre n'est modifi au retour.

ED 0F : quivalent de |SAVESNAP, avec en entre:
HL = Pointeur vers nom du fichier SNA
B = Longueur nom fichier SNA
Aucun registre n'est modifi au retour.

ED 10 : quivalent de |DEBUGON
Aucun registre n'est modifi au retour.

ED 11 : quivalent de |SETDSKFILE, avec en entre:
HL = Pointeur vers nom du fichier DSK
B = Longueur nom fichier DSK
Aucun registre n'est modifi au retour.

ED 12 : quivalent de |SAVEAVI, avec en entre:
HL = Pointeur vers nom du fichier AVI
B = Longueur nom fichier AVI
Aucun registre n'est modifi au retour.

ED 13 : quivalent de |ENDAVI
Aucun registre n'est modifi au retour.

ED 14 : quivalent de |SAVEYM, avec en entre:
HL = Pointeur vers nom du fichier YM
B = Longueur nom fichier YM
Aucun registre n'est modifi au retour.

ED 15 : quivalent de |ENDYM
Aucun registre n'est modifi au retour.

ED 16 : quivalent de |SETDIRECTDIR, avec en entre:
HL = Pointeur vers chemin complet
B = Longueur chemin complet
Aucun registre n'est modifi au retour.

ED 17 : quivalent de |SYMBVIDOPEN, avec en entre :
HL = Pointeur vers chemin complet
B = Longueur chemin complet

ED 18 : quivalent de |SYMBVIDREAD, avec en entre :
HL = adresse du buffer vers lequel lire la trame en cours.

ED 19 : quivalent de |SYMBVIDPLAY
HL modifi en sortie (invalide)
FLAG Z indique si erreur fichier (Z=1) ou lecture OK (Z=0)

ED 1A : quivalent de |SYMBVIDCLOSE
HL modifi en sortie (invalide)
FLAG Z indique si fichier pas ouvert (Z=1) ou fermeture OK (Z=0)


ED_1D : quivalent de |SETNEWDISC, avec en entre :
A = mode newdisc (0=off, 1=on)
Aucun registre n'est modifi au retour.

ED_1E : quivalent de |DRAWCADREWIN, avec en entre :
B = x dpart cadre (en octet mmoire vido)
C = y dpart cadre (en octet mmoire vido)
D = x arrive cadre (en octet mmoire vido)
E = y arrive cadre (en octet mmoire vido)
Aucun registre n'est modifi au retour.

ED_1F : quivalent de |ASSEMBLE, avec en entre :
HL = Pointeur vers chemin complet
B = Longueur chemin complet


* Exemple : Compactage d'un cran

BUFFER  EQU     #4000
        LD      HL,BUFFER
        LD      IX,TAILLE
        DB      #ED,#01
        RET
TAILLE  DW      0

* Exemple : Dcompactage d'un cran

BUFFER  EQU     #4000
        LD      HL,BUFFER
        DB      #ED,#03
        RET


Il existe galement un source assembleur Z80 des routines de dcompactage,
donc utilisable sur un vrai CPC. (Me contacter pour l'obtenir)


Lancement d'un jeu sur un CPC
-----------------------------
Pour obtenir le "catalogue" d'une disquette, taper [CAT], suivi de [enter]
La liste des fichers prsents sur la disquette s'affiche alors. Pour excuter le programme dsir, il sufit de taper : 
[RUN "nomdufichier"] [enter]
Les fichier excutables sont en gnral :
- des programmes crit en basic, avec une extension .BAS
- des programmes crit en assembleur, avec une extension .BIN

Infos techniques
-----------------
- L'mulateur utilise un fichier de configuration nom "Config.cpc", qui doit se trouver dans le mme rpertoire que l'excutable. Le dtail du paramtrage se trouve crit dans le fichier en lui-mme.
- L'mulateur est crit 100% en C, sous environement Windows 32 bits, et de manire  tre port facilement sur d'autres plateformes (ex: Amiga).
Les fonctions muls sont les suivantes :
- Processeur Z80 : 99% des instructions,
- AY3-8912 (processeur sonore) : 3 voies + bruits blancs + enveloppes,
- CRTC 6845 (controlleur cran ) : Les registres fondamentaux  70%  (0, 1, 2, 3, 4, 5, 6, 7, 9, 12, 13),
- PPI 8255 (interface parallle ): 90% (Seul le mode 0 du 8255 est mul, car c'est le seul utilisable dans un CPC),
- UPD 765 (controlleur disque ) : 70% (Permet la lecture des fichiers images standard),
- VGA (Video gate array) : 90 % (Slection encres, Mode cran, Roms)
- Timings Hsync et Vsync (synchro horizontale et verticale),
- Gestion disquettes par fichier image standard (.DSK)
- Gestion sauvegarde tat en cours par fichier snapshot standard (.SNA)
- Gestion cassettes par fichier au format WAV
- Utilisation du disque de la machine hote pour lecture/criture de fichiers


Gestion Versions
----------------

v0.0 (30/10/2001)
-----------------
- Premire recompilation de PC-CPC sous windows

v0.1a (15/03/2002)
------------------
- Premire version fonctionnelle

v0.1b (07/06/2002)
------------------

v0.1c (27/06/2002)
------------------

v0.1d (09/07/2002)
------------------
- Prise en compte registre 7 et registre 9 CRTC

v0.1e (15/07/2002)
------------------
- Utilisation de SourceDoc pour la documentation
- Ajout numro rom dans fichier snapshot

v0.1f (29/07/2002)
------------------
- Ajout temps instruction Z80
- Correction pb gestion bank ram sur cpc6128
- Remise  0 compteur HSync depuis GateArray

v0.1g (01/08/2002)
------------------
- Ajout gestion du son (AY3-8912)

v0.1h (08/08/2002)
------------------
- Correction instructions Z80 BIT

v0.1i (09/08/2002)
------------------
- Ajout gestion Multiface

v0.1j (20/08/2002)
------------------

v0.1k (18/09/2002)
------------------

v0.1l (26/09/2002)
------------------
- Prise en compte registre 5 CRTC
- Correction pb UPD
- Meilleure gestion interrutptions Z80

v0.1m (03/10/2002)
------------------
- Optimisation module AY38912
- Correction pb activation/dsactivation multiface

v0.1n (07/10/2002)
-----------------
- Correction d'un bug dans la relecture des fichiers snapshots (.SNA) : les registres du psg n'ayant pas ts modifis  n'taient pas crit, ce qui pouvait poser problme car la frquence des sons n'tait plus calcule, et la formule "AY_FREQ / Frequence" provoquait une division par zro.

v0.1o (16/10/2002)
------------------
- Ne prends plus 100% du CPU pendant le fonctionnement, utilise des fichiers snapshots compatible avec le format SNA utilis sur les autres mulateurs CPC. Attention, cela signifie qu'il n'est plus compatible avec les snapshots gnrs par les versions antrieures de l'mulateur...
- L'mulateur gnre maintenant un fichier .LOG qui trace toute ventuelle fonctionnalit non gre (instructions Z80 incorrectes...)

v0.1q (07/11/2002)
------------------
- Gestion des fichiers cassette, lecture par F9, sauvegarde par F11.

v0.1r (13/11/2002)
------------------
- Optimisation diverses, acclration sensible de l'mulation du processeur Z80 et du CRTC 6845.

v0.1s (19/12/2002)
------------------
- Correction d'un bug dans le gnrateur sonore.

v0.1t (06/01/2003)
------------------
- Happy new year 2003 !

v0.1u (09/01/2003)
------------------
- Configuration dynamique (a l'aide du fichier de configuration) des touches servant  muler le joystick (voir config.cpc pour plus de dtails.).

v0.1v (03/02/2003)
------------------
- Localisation par le fichier de configuration des diffrents rpertoires utiliss par dfaut pour lire les fichiers DSK, SNA, TAP.

v0.1w (06/05/2003)
------------------
- Correction de buggs dans la gestion du "disc missing", dans la gestion du joystick.

v0.1x (22/01/2004)
------------------
- Ajout d'un accs direct vers un rpertoire du disque du pc pour l'mulation des accs disques.
- La touche F12 permet de basculer entre le mode standard (mulation disquettes par fichiers .DSK) et le nouveau mode d'accs direct.
- Une variable #DIR_EMU_DISC contenant le rpertoire d'mulation de l'accs direct peut tre ajoute dans le fichier de configuration, par dfaut l'accs se fait sur le disque A:.

v0.1y (25/02/2005)
------------------
- Ajout informations dans fichier LOG
- Optimisations mineures

v0.1z (xx/xx/xxxx)
------------------
- les instructions Z80 retournent le nbre de cycles excuts.

v0.1aa (xx/xx/xxxx)
-------------------
- Correction d'un petit bug dans les fonctions de dessin des lignes cran : couleur du bord
- Correction des temps de cycle des instructions aprs prfixe DD et FD

v0.1ab (xx/xx/xxxx)
-------------------

v0.1ac (xx/xx/xxxx)
-------------------

v0.1ad (xx/xx/xxxx)
-------------------

v0.1ae (xx/xx/xxxx)
-------------------

v0.1af (xx/xx/xxxx)
-------------------

v0.1ag (xx/xx/xxxx)
-------------------

v0.1ah (xx/xx/xxxx)
-------------------

V0.1ai (13/12/2005)
-------------------
- Ajout de l'instruction rsx |PACKWINDIFF dans la "rom pack",
- Module de sauvegarde d'images fixes en bmp
- Possibilit de sauvegarder la fentre d'mulation dans un fichier .AVI.

V0.1aj (16/02/2006)
-------------------
- Sauvegarde AVI avec le son

V0.1ak (20/02/2006)
-------------------
- nouveau moteur d'mulation du CRTC permet maintenant l'overscan horizontal.
- RSX CONVERTBITMAP qui permet de lire directement depuis le disque dur du PC un fichier bitmap (.BMP) et de l'afficher  l'cran du cpc (vous pouvez ensuite le sauvegarder avec SAVE"xxx",b,&C000,&4000).
- Quelques buggs en mois.

V0.1al (23/07/2006)
-------------------
Corrections de bugs:
- AY3-8912: Correction d'un bug dans l'utilisation des enveloppes de volume
- UPD 763 : Correction d'un bug dans la gestion de la fonction de lecture et dans la fonction de lecture de l'index (la dmo MIDLINE PROCESS du groupe ARKOS fonctionne !!!)
- NewDisc : Correction d'un bug dans la fonction "cat" : les rpertoires taient aussi affichs

Nouvelles fonctionnalits :
- Possibilit d'utiliser une fentre sans bords ni barre de titre, et choix de la taille entirement possible dans le fichier de configuration (via les flags #RESO_X, #RESO_Y et #BORDERLESS)
- Utilisation des joysticks si connects
- Modification de l'affectation des touches fonctions :
    - SHIFT+F2 = sauvegarde de l'image courante sous forme d'un fichier .BMP (anciennement "Impr cr")
    - SHIFT+F9 = positionnement du fichier cassette (anciennement "Home")
    - SHIFT+F11 = sauvegarde en avi de l'mulation (anciennement "Fin")
- Sauvegarde sons CPC au format YM5 avec touche SHIFT+F5
- Ajout du RSX |SAUVEBITMAP dans la rom pack (permet la sauvegarde d'images au format .BMP depuis le basic)
- Ajout du RSX |TURBOON dans la rom pack (active le mode turbo)
- Ajout du RSX |TURBOOFF dans la rom pack (dsactive le mode turbo)
- Ajout du RSX |READSNAP dans la rom pack (permet de lire un fichier snapshot)
- Ajout du RSX |SAVESNAP dans la rom pack (permet de sauvegarder un fichier snapshot)
- Ajout du RSX |DEBUGON dans la rom pack (active le mode debug)
- Ajout du RSX |SETDSKFILE dans la rom pack (permet de choisir un fichier .DSK  utiliser)
- Ajout du RSX |SAVEAVI dans la rom pack (dmarre l'enregistrement de l'cran d'mulation dans un fichier avi)
- Ajout du RSX |ENDAVI dans la rom pack (arrte l'enregistrement du fichier avi)
- Ajout du RSX |SAVEYM dans la rom pack (dmarre l'enregistrement des sons dans un fichier YM)
- Ajout du RSX |ENDYM dans la rom pack (arrte l'enregistrement du fichier YM)
- Ajout du RSX |SETDIRECTDIR dans la rom pack (permet de choisir le rpertoire vers lequel seront dirigs les accs disques)
- Ajout du RSX |ROMPACKHELP dans la rom pack (affiche un rsum des RSX de la rom pack et de leurs paramtres)

V0.1am (25/12/2006)
-------------------
Corrections de bugs:
- Correction bug ROMPACK si problme d'initialisation
- AY3-8912 : Correction d'un bugg dans la restitution des frquences pour chaque canal
- Snapshot : Il manquait la sauvegarde de la couleur du border dans les snapshots
- CRTC : correction d'un bug qui pouvait gnrer plusieurs pauses de synchro par image (ex:Space Harrier)

Nouvelles fonctionnalits :
- Gestion de 512Ko d'extension mmoire
- Possibilit d'envoyer des commandes ou des fichiers  l'mulateur via la ligne de commande
- Ajout des RSX |SYMBVIDOPEN, |SYMBVIDPLAY, |SYMBVIDCLOSE pour jouer une animation au format .VID de SymbOs
- Possibilit de basculer de petit cran/grand cran avec SHIFT+F3 en mode fentr

V0.1an (13/05/2007)
-------------------
Corrections de bugs:
- UPD 763 : Correction des fonctions invalide, qui ne renvoyait pas le status du UPD
- Z80 : Correction de divers bugs :
    - SLL A ne positionnait pas le bit 0 du registre A
    - Positionnement des flags aprs LD A,R et LD A,I
    - Prise en compte des interruptions aprs l'instruction qui suit le EI
    - Suppression de la copie de IFF1 dans IFF2  la prise en compte d'une NMI (la multiface fonctionne correctement maintenant)
- CRTC : Rcriture du code de gestion de cycle du crtc, prcis maintenant au mot mmoire (16 bits), permettant les "split-rasters".

Nouvelles fonctionnalits :
- Utilisation de la VBL du PC avec le flag #USE_PC_VBL dans le fichier de configuration
- Possibilit de redfinir chaque fonction du joystick connect (jusqu' 10 boutons) par une touche du clavier.
- Amlioration du rendu des couleurs en mode 32 bits et petit cran (en mode 2 CPC).
- Ajout de la touche SHIFT+F6 pour minimiser la fentre de l'mulateur.
- Suppression du paramtre #SCREEN_DEPTH dans le fichier de configuration (le mode cran est toujours en 32 bits maintenant)
- Appel d'une fentre d'aide en appuyant sur la touche F1
- La touche F2 bascule entre le mode "normal" et le mode "turbo"

V0.1ao (02/04/2009)
-------------------
Corrections de bugs:
- Ajout d'un compteur pour dtection fin initialisation des ROMs. (Pour envoi de touches ou de fichiers via ligne de commande).
- Prise en compte des sons dans la sauvegarde des fichiers AVI
- Correction problme lors de la sauvegarde de fichiers BMP en mode "petit cran"
- Correction problme lors de compactage de zones mmoires suprieure  16Ko
- Correction problme lorsque joystick n2 connect sur le PC
- Correction problme utilisation des touches fonctions+shifts

Nouvelles fonctionalits :
- Ajout des flags #RGB_COLORxx et #MONO_COLORxxx dans le fichier de configuration, permettant de choisir chaque couleurs du cpc mul.
- Pr-mulation trs partielle de l'ASIC du CPC+ pour la gestion de la palette.
- Basculement VBL Standard (50hz) / VBL PC par appui sur la touche SHIFT+F7
- Ajout d'un assembleur, utilisable avec la touche SHIFT+F12

V0.1ap (16/04/2010)
-------------------
Corrections de bugs:
- L'assembleur permet d'utiliser des instruction du type DB "C"+#80 (utile pour les rsx...)
- Correction du temps de cycle de certaines instruction qui tait incorrect

v0.1ar (07/05/2010)
-------------------
Corrections de bugs:
- Correction un compteur pour dtection fin initialisation des ROMs. (Pour envoi de touches ou de fichiers via ligne de commande).
- Correction pb touches rmanantes si utilisation du joystick numro 2

v0.1as (24/12/2010)
-------------------
Corrections de bugs:
- Correction d'un bug dans la fonction de compactage de donnes (RSXs de la ROMPACK).
- Correction d'un bug alatoire lors de la sortie du programme (plantage thread gestion audio).
- Correction d'un bug lors du changement du fichier .DSK courant

v0.1at (bta)
-------------
Nouvelles fonctionnalits :
- Rcriture du module AY8912 (meilleure gestion du son ?)
- Rcriture du module UPD (meilleure gestion des disquettes ?)
- Ajout dbugger fenetr avec points d'arrts
- Ajout instruction INCBIN dans l'assembleur
- Ajout instruction RUN dans l'assembleur
- Gestion SnapShot V3
- Prise en compte retard de 0,5 s lors de l'criture des couleurs (Gate-Array)
- Prise en compte FLAGS F3 et F5 du Z80
- Possibilit d'activer/dsactiver la ROM-PACK par une touche fonction
- Affichage du mode turbo quand activ
- Ajout d'un menu pour les options de l'mulateur
- Configuration possible via menu
Corrections de bugs:
- Correction bug module CRTC (prise en compte tailles HBL et VBL via registre 3)
- Gestion de deux lecteurs de disquettes (A: et B:)
- Support des disquettes double face
- Correction bug MODE 3 (160x200, 4 couleurs)
- Correction timings instructions Z80

